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

28 1.1K 0
ĐỀ TÀI: CÁC BÀI TẬP THỰC HÀNH

Đ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

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

Trờng Đại học S phạm kỹ thuật Hng Yên Khoa Công nghệ thông tin tiểu luận trí tuệ nhân tạo Đề tài: các bài tập thực hành Giảng viên hớng dẫn : Hoàng Trọng Thế Sinh viên thực hiện : Lớp : TK6LC1 Hng yên 11-2009 Bài tập Tuần 1 3 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 đầu tiên BFS. 1.1.3. Mã nguồn chương trình: using System; using System.Collections.Generic; using System.Text; using System.IO; namespace BFS { class Node { public int TenDinh; public Node Link; } class Queue { public bool Empty(Node Sau) { return Sau == null; } public void Put(ref Node Sau,ref Node Truoc,int TenDinh1) { Console.WriteLine("Mot lan put"); Node q = new Node(); q.TenDinh = TenDinh1; q.Link = null; if (Empty(Sau)) { Sau = Truoc = q; } else { Truoc.Link = q; Truoc = q; } } public Node Pop(ref Node Sau) { Console.WriteLine("Mot lan pop"); Node Q = Sau; Sau = Sau.Link; return Q; } } Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 4 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; e = new int[n, n]; str = h.ReadLine(); while (str != null) { hang++; cot = 0; foreach (string tmp in str.Split(' ')) { int x = int.Parse(tmp); e[hang, cot] = x; cot++; } str = h.ReadLine(); } h.Close(); } public void Hien() { Console.WriteLine("Hien ma tran canh"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) Console.Write("{0} ", e[i, j]); Console.WriteLine(); } Console.WriteLine(); // Nhập đỉnh xuất phát và kết thúc Console.Write("Nhap dinh xuat phat DinhXP="); xp = int.Parse(Console.ReadLine()); Console.Write("Nhap dinh ket thuc DinhKT="); kt = int.Parse(Console.ReadLine()); } private bool Duyet_BFS() { bool TimThay = false; // Khoi tao doi tuong queue Queue A = new Queue(); //Khoi tao node Truoc va Sau Node Truoc = new Node(); Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 5 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 KiemTra[xp] = true; // Thực hiện vòng lặp do { // Kiểm tra queue có rỗng hay không if (A.Empty(Sau)) { break;// Thoát khỏi chương trình } // 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); KetQua[d - 1] = Tmp.TenDinh; // Nếu đỉnh lấy ra trùng với đỉnh cần tìm thì kết thúc thuật toán if (Tmp.TenDinh == kt) { TimThay = true; break; } // Nếu không tìm thấy thì xét các đỉnh con của đỉnh vừa lấy ra for (i = 0; i < n; i++) { if (e[Tmp.TenDinh,i] > 0 && KiemTra[i]==false) { // 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 về trạng thái đã xét KiemTra[i] = true; } } } while (true); return TimThay; } public void KetQua_BFS() { // Gọi phương thức duyệt đường đi if (Duyet_BFS()) { Console.WriteLine("Da tim thay ket qua"); // Viết ra đường đi Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 6 for (i = 0; i < KetQua.Length; i++) { if (i < KetQua.Length - 1) Console.Write("{0} ", KetQua[i] + "==>"); else Console.Write("{0} ", KetQua[i]); } Console.WriteLine(); } else Console.WriteLine("Khong tim thay ket qua"); } } class Tester { static void Main() { BFS bfs = new BFS(); // Nhập dữ liệu từ tệp tin bfs.Nhap(); // Hiện dữ liệu đã nhập bfs.Hien(); // Gọi phương thức duyệt BFS_mở rộng bfs.KetQua_BFS(); Console.ReadKey(); } } } 1.1.4. Kết quả thực nghiệm: Dữ liệu vào: Đồ thị được cho dưới dạng ma trận kề trong tệp danhsachcanh.txt 11 0 2 6 0 0 8 0 0 0 0 0 2 0 0 9 8 0 0 5 0 0 0 6 0 0 9 0 0 0 0 0 0 0 0 9 9 0 8 0 6 0 0 0 0 0 8 0 8 0 0 5 6 7 8 0 8 0 0 0 0 0 0 3 0 0 0 0 0 0 6 5 0 0 0 11 0 0 0 5 0 0 6 3 0 0 0 9 0 0 0 0 0 7 0 11 0 0 6 7 0 0 0 0 0 0 0 9 6 0 8 0 0 0 0 0 0 0 0 7 8 0 Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 7 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: using System; using System.Collections.Generic; using System.Text; using System.IO; class Node { public int TenDinh; public int TrongSo; public Node Link; public bool Empty(Node S) { return S == null; } public void Put(ref Node S, int TenDinh1, int TrongSo1) { Node q = new Node(); q.TenDinh = TenDinh1; q.TrongSo = TrongSo1; q.Link = null; if (Empty(S)) { S = q; S.Link = null; } else { q.Link = S; S = q; } } public Node Pop(ref Node S) { Node Q = S; S = S.Link; return Q; } public void sort(Node S) { Node tmp, Q = S; while (Q != null) { Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 8 tmp = Q.Link; while (tmp != null) { if (Q.TrongSo < tmp.TrongSo) { int tmp1 = Q.TrongSo; int tmp2 = Q.TenDinh; Q.TenDinh = tmp.TenDinh; Q.TrongSo = tmp.TrongSo; tmp.TrongSo = tmp1; tmp.TenDinh = tmp2; } tmp = tmp.Link; } Q = Q.Link; } } } class DFS_LeoDoi : Node { 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 DFS_LeoDoi() { Console.WriteLine("Tim kiem leo doi"); } public void Nhap() { 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; e = new int[n, n]; str = h.ReadLine(); while (str != null) { hang++; cot = 0; Console.WriteLine(str); foreach (string tmp in str.Split(' ')) { int x = int.Parse(tmp); e[hang, cot] = x; cot++; } str = h.ReadLine(); } Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 9 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]; str1 = dr.ReadLine(); tmp = str1.Split(' '); for (i = 0; i < tmp.Length; i++) { HamDanhGia[i] = int.Parse(tmp[i]); } } } public void Hien() { Console.WriteLine("Ma tran canh"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) Console.Write("{0} ", e[i, j]); Console.WriteLine(); } Console.WriteLine("Ham danh gia"); for (i = 0; i < n; i++) { Console.Write("{0} ", HamDanhGia[i]); } Console.WriteLine(); // Nhập đỉnh xuất phát và kết thúc Console.Write("Nhap dinh xuat phat DinhXP="); xp = int.Parse(Console.ReadLine()); Console.Write("Nhap dinh ket thuc DinhKT="); kt = int.Parse(Console.ReadLine()); } private bool LeoDoi(int Deepth) { d = 0; KetQua = null; 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]); KiemTra[xp] = false; do { if (A.Empty(L)) { Console.WriteLine("Khong tim thay duong di"); break; Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 10 } Tmp = A.Pop(ref L); Console.WriteLine("Dinh{0} co dinh con:",Tmp.TenDinh); Array.Resize(ref KetQua, ++d); KetQua[d - 1] = Tmp.TenDinh; if (Tmp.TenDinh == kt) { Console.WriteLine("Ket qua da tim thay"); timthay = true; break; } for (int k = n - 1; k >= 0; k ) { if (e[Tmp.TenDinh, k] > 0 && KiemTra[k] == true) { Console.WriteLine("Dinh con {0} va do sau {1}", k, HamDanhGia[k]); B.Put(ref L1, k, HamDanhGia[k]); KiemTra[k] = false; } } B.sort(L1); while (!B.Empty(L1)) { Tmp = B.Pop(ref L1); A.Put(ref L, Tmp.TenDinh, Tmp.TrongSo); Console.WriteLine("Lan cho L1 vao L {0} va {1}", Tmp.TenDinh, Tmp.TrongSo); } } while (true); return timthay; // p } public void duyet() { if (LeoDoi(j)) { 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]); } } } } class Tester { static void Main() { DFS_LeoDoi A = new DFS_LeoDoi(); A.Nhap(); Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 1 11 A.Hien(); A.duyet(); Console.ReadKey(); } } 1.2.4. Kết quả thực nghiệm: Dữ liệu vào: 11 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 Dữ liệu ra: - Nhập đỉnh xuất phát ĐinhXP= 1 - Nhập đỉnh xuất phát ĐinhKT= 10 - Kết quả: 1 = => 3 = => 6 = => 8 = => 10 1.3. Tìm kiếm A*. 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: using System; using System.Collections.Generic; using System.Text; using System.IO; struct KetQuaduongDi { public int Dinh; Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 [...]... ĐinhKT= 3 - Kết quả: Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 2 17 Tuần 2: THUẬT GIẢI DI TRUYỀN 2.1 Bài toán 2.2 Yêu cầu 2.3 Mã nguồn chương trình Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 3 18 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... 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:... casekhongchay('Dell') dencasekhongsang('Dell') manhinhkhonglen('Dell') 4.1.4 Kết quả thực nghiệm: 1 ?- loiram(X) X = 'SamSung' Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 4 25 Vậy: Máy tính hiệu SamSung bị lỗi RAM 2 ?- loimain(X) X = 'Dell' Vậy: Máy tính hiệu Dell bị lỗi Main 4.2 Bài toán 2 4.2.1 Bài toán: Sử dụng Prolog để xây dựng một hệ các chuyên gia đơn giản 4.2.2 Yêu cầu: Xây dựng hệ chuyên gia hỗ... thangmoingua(X,[H|T]):-thang(X,H),thangmoingua(X,T) 3.2.4 Kết quả thực nghiệm: 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? Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 3 21 Đầ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... 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 5.1.4 Kết quả thực nghiệm: 26 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 ... .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* ... Bố chồng của ai? Đầu vào: ?- bochong(X,Y) Đầu ra: X = a , Y = titi ; X = a , Y = no; Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 4 24 Tuần 4: XÂY DỰNG HỆ CHUYÊN GIA DỰA TRÊN LUẬT TRONG PROLOG 4.1 Bài toán 1 4.1.1 Bài toán: Sử dụng Prolog để xây dựng một hệ các chuyên gia đơn giản 4.1.2 Yêu cầu: Xây dựng hệ chuyên gia hỗ trợ chuẩn đoán hư hỏng máy tính 4.1.3 Mã nguồn chương trình: % Author:... quán quân  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 Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 3 20 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? 3.2.3... 5.2.4 Kết quả thực nghiệm: Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 MỤC LỤC 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: . trí tuệ nhân tạo Đề tài: các bài tập thực hành Giảng viên hớng dẫn : Hoàng Trọng Thế Sinh viên thực hiện : Lớp : TK6LC1 Hng yên 11-2009 Bài tập Tuần 1 3 Tuần 1: GIẢI QUYẾT BÀI TOÁN BẰNG TÌM. Sinh viên: - TK6LC1 Bài tập Tuần 2 17 Tuần 2: THUẬT GIẢI DI TRUYỀN 2.1. Bài toán. 2.2. Yêu cầu. 2.3. Mã nguồn chương trình. Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 3 18 Tuần. con ngựa khác mà nó đều thắng thì con ngựa đó đạt danh hiệu quán quân. Tiểu luận Trí tuệ nhân tạo Sinh viên: - TK6LC1 Bài tập Tuần 3 20 3.2.2. Yêu cầu: Hãy xây dựng CSTT cho các thông tin trên.

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

Từ khóa liên quan

Mục lục

  • 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 đầu tiên BFS.

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

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

  • 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:

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

  • 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:

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

  • 3.1.1. Bài toán:

  • 3.1.2. Yêu cầu:

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

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

  • 3.2.1. Bài toán:

  • 3.2.2. Yêu cầu:

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

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

Tài liệu cùng người dùng

Tài liệu liên quan