1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐỀ TÀI: CÁC BÀI TẬP THỰC HÀNH

28 1,1K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 251 KB

Nội dung

ĐỀ TÀI: CÁC BÀI TẬP THỰC HÀNH

Trang 1



-tiÓu luËn trÝ tuÖ nh©n t¹o

§Ò tµi:

c¸c bµi tËp thùc hµnh

Hng yªn 11-2009

Trang 2

Tuần 1:

GIẢI QUYẾT BÀI TOÁN BẰNG TÌM KIẾM

1.1 Tìm kiếm tốt nhất đầu tiên BFS.

1.1.1 Bài toán: Tìm kiếm.

1.1.2 Yêu cầu: Giải quyết bài toán tìm kiếm bằng thuật giải Tìm kiếm tốt nhất

public int TenDinh;

public Node Link;

Console.WriteLine("Mot lan put");

Node q = new Node();

Trang 3

class BFS : Queue

{

private bool[] KiemTra;//Kiem tra

private int[] HamDanhGia;

static string path = @"danhsachcanh.txt";

static string path1 = @"trongso.txt";

public int[] KetQua;//Ket qua duong di

private int i, j, d = 0, n, xp, kt;

private int[,] e;//Danh sach canh

public void Nhap()

{

int hang = -1, cot = 0;

StreamReader h = new StreamReader(path);

string str = h.ReadLine();

n = int.Parse(str);

KiemTra = new bool[n];

for (i = 0; i < n; i++) KiemTra[i] = false;

bool TimThay = false;

// Khoi tao doi tuong queue

Queue A = new Queue();

//Khoi tao node Truoc va Sau

Node Truoc = new Node();

Trang 4

Node Sau = new Node();

Truoc = Sau = null;

//Khoi tạo Node Tmp

Node Tmp = new Node();

//Cho đỉnh xuất phát vào queue

A.Put(ref Sau, ref Truoc, xp);

//Đưa trạng thái của đỉnh xp về trạng thái đã xét

// Nếu không rỗng thì loại đỉnh ở cuối danh sách

Tmp = A.Pop(ref Sau);

Console.WriteLine("Lay ra đinh {0}", Tmp.TenDinh +

" Co đinh con");

//Cho đỉnh vào mảng kết quả đường đi

Array.Resize(ref KetQua, ++d);

// Nếu thoả mãn là đỉnh con và chưa đuợc

xét thì cho vào queue

A.Put(ref Sau, ref Truoc, i);

Console.WriteLine("Vao dinh {0} ", i); // Gán trạng thái của đỉnh cho vào queue

Console.WriteLine("Da tim thay ket qua");

// Viết ra đường đi

Trang 5

for (i = 0; i < KetQua.Length; i++)

{

if (i < KetQua.Length - 1)

Console.Write("{0} ", KetQua[i] + "==>"); else Console.Write("{0} ", KetQua[i]);

Trang 6

Dữ liệu ra:

- Nhập đỉnh xuất phát ĐinhXP= 0

- Nhập đỉnh xuất phát ĐinhKT= 1

- Kết quả: 0 = =>1

1.2 Tìm kiếm leo đồi.

1.2.1 Bài toán: Tìm kiếm.

1.2.2 Yêu cầu: Giải quyết bài toán tìm kiếm bằng thuật giải Tìm kiếm leo đồi 1.2.3 Mã nguồn chương trình:

public int TenDinh;

public int TrongSo;

public Node Link;

public bool Empty(Node S)

Trang 7

private bool[] KiemTra;//Kiem tra

private int[] HamDanhGia;

static string path = @"danhsachcanh.txt";

static string path1 = @"trongso.txt";

public int[] KetQua;//Ket qua duong di

int hang = -1, cot = 0;

StreamReader h = new StreamReader(path);

string str = h.ReadLine();

Console.WriteLine(str);

n = int.Parse(str);

KiemTra = new bool[n];

for (i = 0; i < n; i++) KiemTra[i] = true;

Trang 8

h.Close();

// Khoi tao ma tran trong so

using (StreamReader dr = File.OpenText(path1))

{

string str1 = dr.ReadLine();

// So phan tu nay cung bang so dinh cua ma tran

int sophantu = int.Parse(str1);

HamDanhGia = new int[sophantu];

string[] tmp = new string[sophantu];

Node A = new Node();

Node L = new Node(); L = null;

Node B = new Node();

Node L1 = new Node(); L1 = null;

Node Tmp = new Node();

bool timthay = false;

A.Put(ref L, xp, HamDanhGia[xp]);

Trang 9

A.Put(ref L, Tmp.TenDinh, Tmp.TrongSo);

Console.WriteLine("Lan cho L1 vao L {0} va {1}",

Console.WriteLine("Da tim thay ket qua");

for (i = 0; i < KetQua.Length; i++)

{

if (i < KetQua.Length - 1)

Console.Write("\t{0}", KetQua[i] + "==>"); else Console.Write("\t{0}", KetQua[i]);

Trang 10

1.3.1 Bài toán: Tìm kiếm.

1.3.2 Yêu cầu: Giải quyết bài toán tìm kiếm bằng thuật giải Tìm kiếm A* 1.3.3 Mã nguồn chương trình:

Trang 11

public int Giatri_Gn;

public int Giatri_Fn;

}

class Node

{

public int TênDinh;

public int DuongDi_Gn;

public int DuongDithucTe_Fn;

public Node Link;

// Sap xep theo thu tu tang dan o dau danh sach la nho nhat

public void sort(Node Sau)

int tmp1 = Q.TênDinh;

Trang 12

static string path = @"danhsachcanh.txt";

static string path1 = @"trongso.txt";

public KetQuaduongDi[] KetQua; //Ket qua duong di

private int i, j, d = 0, n, xp, kt, Gn, Fn;

private int[,] e; //Danh sach canh

public void Nhap()

{

int hang = -1, cot = 0;

StreamReader h = new StreamReader(path);

// Khoi tao ma tran trong so

using (StreamReader dr = File.OpenText(path1))

{

string str1 = dr.ReadLine();

// So phan tu nay cung bang so dinh cua ma tran

int sophantu = int.Parse(str1);

Trang 13

Hn = new int[sophantu];

string[] tmp = new string[sophantu];

bool TimThay = false;

// Khoi tao doi tuong Stack

Stack A = new Stack();

// Khoi tao node Sau

Node Sau = new Node();

Sau = null;

// Khoi tạo Node Tmp

Node Tmp = new Node();

// Cho đỉnh xuất phát vào Stack

A.Put(ref Sau, xp, 0, Hn[xp] + 0);

// Đường đi từ đỉnh xp tới xp =0; nên đường đi thưc tế

= Đường chim bay + 0;

// Thực hiện vòng lặp

do

{

// Kiểm tra Stack có rỗng hay không

if (A.Empty(Sau))// Nếu đúng thì thoát khỏi chương trình

{

Console.WriteLine("Khong tim thay");

break;// Thoát khỏi chương trình

}

// Nếu không rỗng thì loại đỉnh ở cuối danh sách ra

Tmp = A.Pop(ref Sau);

Trang 14

Console.WriteLine("Lay ra đinh {0} Khoang cach toi dinhxuat phat {1} va khoang cach toi dinh ket thuc {2}", Tmp.TênDinh,Tmp.DuongDi_Gn, Tmp.DuongDithucTe_Fn + "Co dinh con");

// Cho đỉnh vào mảng kết quả đường đi

Array.Resize(ref KetQua, ++d);

KetQua[d - 1].Dinh = Tmp.TênDinh;

KetQua[d - 1].Giatri_Gn = Tmp.DuongDi_Gn;

KetQua[d - 1].Giatri_Fn = Tmp.DuongDithucTe_Fn;

// Nếu đỉnh lấy ra trùng với đỉnh cân tìm thì kết thúc

{// e[Tmp.TênDinh,i] là khoảng cách giữa đỉnh lấy trong

danh sách ra và đỉnh con i kề với đỉnh lấy ra

if (e[Tmp.TênDinh, i] > 0)

{

Gn = Tmp.DuongDi_Gn + e[Tmp.TênDinh, i];

Fn = Gn + Hn[i];

A.Put(ref Sau, i, Gn, Fn);

Console.WriteLine("Vao dinh {0} và Gn :{1} va

Console.WriteLine("Da tim thay ket qua");

Console.WriteLine("Duong di ngan nhat theo A* la:"); for (i = 0; i < KetQua.Length; i++)

{

if (i < KetQua.Length - 1) Console.Write ("Dinh: {0}, {1},{2}\t", KetQua[i].Dinh, KetQua[i].Giatri_Gn, KetQua[i].Giatri_Fn + "==>"); else Console.WriteLine("Dinh:{0}, {1}, {2}",KetQua[i].Dinh, KetQua[i].Giatri_Gn, KetQua[i].Giatri_Fn);

Trang 17

Tuần 3:

BIỂU DIỄN TRI THỨC BẰNG LOGIC VỊ TỪ CẤP TRONG PROLOG

3.1 Bài toán 1.

3.1.1 Bài toán:

Giả sử có các thông tin sau:

• Ông Ba nuôi con chó tên là Kiki.

• Ông Tư nuôi con mèo Titi và Bibi.

• Có hai người bị nghi là dã giết con mèo Bibi đó là ông Ba và ông Hai

1 Ai giết con mèo Bibi?

2 Ông Ba giết con mèo Titi phải không?

3 Ai giết con mèo Titi?

4 Ông Tư giết con mèo Bibi phải không?

Trang 18

1 Ai giết con mèo Bibi?

Đầu vào: ?- giet(X,bibi).

Đầu ra: X = hai

2 Ông Ba giết con mèo Titi phải không?

Đầu vào: ?- giet(ba,titi).

Đầu ra: No

3 Ai giết con mèo Titi?

Đầu vào: ?- giet(X,titi).

Đầu ra: No

4 Ông Tư giết con mèo Bibi phải không?

Đầu vào: ?- giet(tu,bibi).

Đầu ra: No

3.2 Bài toán 2.

3.2.1 Bài toán:

Giả sử có các thông tin sau:

• Tom, Ken, Kit, Bin, Toto, Titi là những con ngựa.

• Tom là mẹ của Bin và Kit Ken là mẹ của Toto Bin là mẹ của Titi.

• Kit thắng Titi và Toto.Toto thắng Titi.

 Bất kỳ một con ngựa nào khi thi đấu (đua) với bất kỳ con ngựa khác

mà nó đều thắng thì con ngựa đó đạt danh hiệu quán quân.

Trang 19

3.2.2 Yêu cầu:

Hãy xây dựng CSTT cho các thông tin trên Cài đặt CSTT đó bằng ngôn ngữ

PROLOG (dùng goal nội) để trả lời các câu hỏi sau:

1 Con ngựa nào có giá?

2 Bin có phải là con ngựa có giá không?

1 Con ngựa nào có giá?

Đầu vào: ?- cogia(X), nl,

write(X), nl.

Đầu ra: X = tom

2 Bin có phải là con ngựa có giá không?

Trang 20

Đầu vào: ?- cogia(bin).

Đầu ra: No

3.3 Bài toán 3.

3.3.1 Bài toán:

Giả sử có các thông tin sau:

• Ông A và bà B kết hôn với nhau và sinh được 3 người con tên là C, D

và E.

• Vợ của C là Titi và họ đã sinh được 2 người con trai tên là C1 và C2.

• E lấy chồng và sinh được 1 con trai tên là Toto1 và 1 con gái tên là Toto2 Chồng của E tên là Toto.

• D có vợ tên là NỞ và hiện họ chưa có con.

4 C1 có quan hệ anh em với ai?

5 Ông A là bố vợ của những ai?

Trang 22

3.3.4 Kết quả thực nghiệm:

1 Ông A có những cháu nội nào?

Đầu vào: ?- chaunoi(X,a).

Đầu ra: X = c1 ; X = c2;

2 Bà B là Mẹ chồng của những ai?

Đầu vào: ?- condau(X,b).

Đầu ra: X = titi ; X = no; (X bằng Nở)

3 Ai gọi ai là Mẹ vợ?

Đầu vào: ?- mevo(X,Y).

Đầu ra: X = b ; Y = toto

4 C1 có quan hệ anh em với ai?

Đầu vào: ?- anhem(c1,Y).

Đầu ra: Y = c2

5 Ông A là bố vợ của những ai?

Đầu vào: ?- bovo(a,Y).

Đầu ra: Y = toto

6 Ai là Bố chồng của ai?

Đầu vào: ?- bochong(X,Y).

Đầu ra: X = a , Y = titi ;

X = a , Y = no;

Trang 24

Vậy: Máy tính hiệu SamSung bị lỗi RAM.

Trang 25

Tuần 5:

LOGIC MỜ VÀ LẬP LUẬN XẤP XỈ

5.1 Bài toán 1.

5.1.1 Bài toán:

Liều lượng asperine được xác định dựa trên 4 luật (Rules) sau:

o Rule 1: IF sốt nhẹ THEN liều lượng asperine thấp.

o Rule 2: IF sốt THEN liều lượng asperine bình thường.

o Rule 3: IF sốt cao THEN liều lượng asperine cao.

o Rule 4: IF sốt rất cao THEN liều lượng asperine cao nhất.

Mức độ valve mở (hoạt động bơm) dựa trên luật sau:

o Rule 1: If (level is Okay) then (valve is no_change)

o Rule 2: If (level is low) then (valve is open fast)

o Rule 3: If (level is hight) then (valve is close fast)

o Rule 4: If (level is Okay) and (rate is positive) then (valve is close_slow)

o Rule 5: If (level is Okay) and (rate is negative) then (valve is open_slow)

5.2.2 Yêu cầu:

Xây dựng hệ mờ dùng để điều khiển động cơ bơm nước.

5.2.3 Mã nguồn chương trình:

5.2.4 Kết quả thực nghiệm:

Trang 26

Tuần 1: 3

GIẢI QUYẾT BÀI TOÁN BẰNG TÌM KIẾM 3

1.1 Tìm kiếm tốt nhất đầu tiên BFS 3

1.1.1 Bài toán: Tìm kiếm 3

1.1.2 Yêu cầu: Giải quyết bài toán tìm kiếm bằng thuật giải Tìm kiếm tốt nhất đầu tiên BFS 3

1.1.3 Mã nguồn chương trình: 3

1.1.4 Kết quả thực nghiệm: 6

1.2 Tìm kiếm leo đồi 7

1.2.1 Bài toán: Tìm kiếm 7

1.2.2 Yêu cầu: Giải quyết bài toán tìm kiếm bằng thuật giải Tìm kiếm leo đồi 7

1.2.3 Mã nguồn chương trình: 7

1.2.4 Kết quả thực nghiệm: 11

1.3 Tìm kiếm A* 11

1.3.1 Bài toán: Tìm kiếm 11

1.3.2 Yêu cầu: Giải quyết bài toán tìm kiếm bằng thuật giải Tìm kiếm A* .11

1.3.3 Mã nguồn chương trình: 11

1.3.4 Kết quả thực nghiệm: 16

Tuần 2: 17

THUẬT GIẢI DI TRUYỀN 17

2.1 Bài toán 17

2.2 Yêu cầu 17

2.3 Mã nguồn chương trình 17

Tuần 3: 18

BIỂU DIỄN TRI THỨC BẰNG LOGIC VỊ TỪ CẤP TRONG PROLOG 18

3.1 Bài toán 1 18

3.1.1 Bài toán: 18

Trang 27

3.1.3 Mã nguồn chương trình: 18

3.1.4 Kết quả thực nghiệm: 19

3.2 Bài toán 2 19

3.2.1 Bài toán: 19

3.2.2 Yêu cầu: 20

3.2.3 Mã nguồn chương trình: 20

3.2.4 Kết quả thực nghiệm: 20

3.3 Bài toán 3 21

3.3.1 Bài toán: 21

3.3.2 Yêu cầu: 21

3.3.3 Mã nguồn chương trình: 21

3.3.4 Kết quả thực nghiệm: 23

Tuần 4: 24

XÂY DỰNG HỆ CHUYÊN GIA DỰA TRÊN LUẬT TRONG PROLOG 24

4.1 Bài toán 1 24

4.1.1 Bài toán: 24

4.1.2 Yêu cầu: 24

4.1.3 Mã nguồn chương trình: 24

4.1.4 Kết quả thực nghiệm: 24

4.2 Bài toán 2 25

4.2.1 Bài toán: 25

4.2.2 Yêu cầu: 25

4.2.3 Mã nguồn chương trình: 25

4.2.4 Kết quả thực nghiệm: 25

Tuần 5: 26

LOGIC MỜ VÀ LẬP LUẬN XẤP XỈ 26

5.1 Bài toán 1 26

5.1.1 Bài toán: 26

5.1.2 Yêu cầu: 26

5.1.3 Mã nguồn chương trình: 26

Trang 28

5.2 Bài toán 2 26

5.2.1 Bài toán: 26

5.2.2 Yêu cầu: 26

5.2.3 Mã nguồn chương trình: 26

5.2.4 Kết quả thực nghiệm: 26

Ngày đăng: 10/04/2014, 16:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w