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

Tiểu luận học phần trí tuệ nhân tạo tên Đề tài thuật toán vương hạo

12 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 12
Dung lượng 915,81 KB

Nội dung

Thuật toán này sử dụng các quy tắc suy diễn để biến đổi một biểu thức logic phụ định sang dạng mệnh đề, từ đó chứng minh được tính đúng đắn của biểu thức đó.. a IV.Ứng Dựng Thuật Toán Th

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HỒ CHÍ MINH

KHOA KHOA HỌC ỨNG DỤNG

-O0 - O

TIỂU LUẬN HỌC PHẦN:

TRÍ TUỆ NHÂN TẠO

TÊN ĐỀ TÀI: THUẬT TOÁN VƯƠNG HẠO

NHÓM: 12

Trang 2

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HỒ CHÍ MINH

KHOA KHOA HỌC ỨNG DỤNG

-O0 - O

TÊN ĐỀ TÀI: THUẬT TOÁN VƯƠNG HẠO

NHÓM : 12

Giáo viên hướng dẫn: Trần Đình Toàn

1.La Mẫn Đạt – 2001215698

2.Trần Minh Tâm – 2001210674

TP HỒ CHÍ MINH, NĂM 2023

Trang 3

MỤC LỤC

I KHÁI NIỆM 4

II Ý TƯỞNG VÀ NỘI DUNG THUẬT TOÁN 4 II.1 V Í DỤ 1: K IỂM TRA TÍNH HẰNG ĐÚNG CỦA BIỂU THỨC LÔGIC MỆNH ĐỀ SAU : 5

II.2 V ỚI VÍ DỤ 2 TRÊN ĐÂY TA CÓ SƠ ĐỒ BIẾN ĐỔI NHƯ HÌNH SAU ĐÂY , .5 II.3 V Í DỤ 3 ( BIỂU THỨC HẰNG ĐÚNG ): C Ó THỂ CHỨNG MINH RẰNG : 7 II.4 V Í DỤ 4 ( BIỂU THỨC KHÔNG HẰNG ĐÚNG ): K IỂM TRA TÍNH HẰNG ĐÚNG CỦA BIỂU THỨC : 7 III CODE MINH HỌA 8

IV ỨNG DỰNG THUẬT TOÁN 10

Trang 4

Thuật toán Vương Hạo

I. Khái niệm

Thuật toán Vương Hạo là một thuật toán suy diễn được biểu diễn bới Vương Hạo vào năm 1981 Thuật toán này sử dụng các quy tắc suy diễn để biến đổi một biểu thức logic phụ định sang dạng mệnh đề, từ

đó chứng minh được tính đúng đắn của biểu thức đó

II.Ý tưởng và nội dung thuật toán

Áp dụng chiến lược “Chia để trị” nhằm tách bài toán xuất, phát thành các bài toán dạng “Và” đơn giản hơn Bài toán ban đầu

sẽ được giải quyết khi và chỉ khi mọi bài toán con sơ cấp giải được

Trước tiên, ta đưa vế trái VT (hay vế phải VP) về dạng chuẩn hội (hay chuẩn tuyển tương ứng) bằng cách:

 Thay các phép toán tương đương ↔ (nếu có) bởi các phép toán kéo theo → Thay các phép toán → bởi các phép toán ¬, ∨

 Dùng các luật De Morgan để bỏ các dấu ¬ của nguyên một nhóm mệnh đề

 Dùng các luật phân phối (nếu chưa gặp dạng chuẩn cần tìm) của phép tuyển đối với phép hội (hay của phép hội đối với phép tuyển tương ứng)

Trong thuật toán Wong, sau khi đưa VT về dạng chuẩn hội

và VP về dạng chuẩn tuyển, ta sẽ sử dụng các qui tắc sau (hãy chứng minh tại sao ta có quyền sử dụng chúng ? Bài tập) - Thủ tục Chuyển(VT,VP): thay các dấu các nhóm chính bên VT và các∧ dấu các nhóm chính bên VP bởi dấu phẩy; chuyển vế các mệnh∨

đề chính ở dạng phủ định ¬p từ vế này sang vế kia và bỏ đi dấu ¬ (chỉ còn p) Nói cách khác, ta có thể xem dấu phẩy (,) bên VT là phép hội và dấu phẩy (,) bên VP là phép tuyển

II.1 Ví dụ 1: Kiểm tra tính hằng đúng của biểu thức lôgic mệnh đề sau:

VT ≡ (¬a) (¬b c) (a b) (¬b) c ≡ VP∧ ∨ ⇒ ∧ ∨ ∨

Các nhóm chính trong: vế trái VT là (¬a) và (¬b c), vế phải∨

VP là (a b), (¬b) và (c).∧

Trang 5

VT ≡ (¬a) (¬b c) (a b) (¬b) c ≡ VP∧ ∨ ⇒ ∧ ∨ ∨

Chuyển ¬a, ¬b c a b, ¬b, c ∨ ⇒ ∧

Chuyển

VT ≡ b, ¬b c a b, a, c ≡ VP∨ ⇒ ∧

Hàm lôgic Tách(VT,VP): tách mỗi nhóm tuyển chính trong∨

VT (hay mỗi nhóm hội chính trong VP) thành nhiều bài toán con∧ dạng VÀ Mỗi bài toán con gồm một mệnh đề trong nhóm chính và giữ nguyên các nhóm chính khác Nếu tách được thì thủ tục Tách(VT,VP) nhận giá trị true; nếu ngược lại, nó nhận trị false II.2 Với ví dụ 2:

Trên đây, ta có sơ đồ biến đổi như hình sau đây

Với mỗi bài toán con, nếu mỗi vế của nó có một mệnh đề đơn đứng độc lập giống nhau thì nó được chứng minh (hằng đúng) Bài toán xuất phát chỉ được chứng minh (hằng đúng) khi mọi bài toán con của nó được chứng minh Nói cách khác, bài toán xuất phát không hằng đúng nếu có tồn tại một bài toán con của nó không hằng đúng (không thể áp dụng qui tắc tách cũng như chuyển được nữa và hai vế không có chung một mệnh đề đơn đứng độc lập nào cả)

Trang 6

Vậy bài toán nêu ra trong ví dụ 3 là hằng đúng.

* Thuật toán Vương Hạo

while (CheckTT() == 0)

{

for int ( i = nodes.Count - 1; i >= 0; i )

{

BieuThuc bieuThuc = nodes[i];

nodes.RemoveAt(i);

BieuThuc[] newBieuThucs = bieuThuc.ChuyenTrangThai(); BieuThuc tt1 = newBieuThucs[0];

BieuThuc tt2 = newBieuThucs[1];

(tt1 != if null)

{

nodes.Add(tt1);

nodes.Add(tt2);

Console.WriteLine("Tách " + bieuThuc + " thành " + tt1 + " và " + tt2);

}

(CheckTT() == -1)if

{

break;

Trang 7

}

}

}

Console.Write("KẾT QUẢ:");

(CheckTT() == -1)if

Console.WriteLine(" Không được chứng minh");

(CheckTT() == 1)if

Console.WriteLine(" Được chứng minh");

II.3 Ví dụ 3 (biểu thức hằng đúng): Có thể chứng minh rằng:

[(a b → c) (b c → d) a b] d ? ∧ ∧ ∧ ∧ ∧ ⇒

Đưa VT về dạng chuẩn hội và VP về dạng chuẩn tuyển:

VT ≡ {¬a ¬b c, ¬b ¬c d, a, b}: dạng chuẩn hội ∨ ∨ ∨ ∨

VP ≡ {d}: dạng chuẩn tuyển

Ta có thể biểu diễn quá trình giải của thuật toán Wong thông qua đồ thị suy diễn hay đồ thị lời giải như sau:

Đồ thị lời giải trong thuật toán Wong

II.4 Ví dụ 4 (biểu thức không hằng đúng): Kiểm tra tính hằng đúng của biểu thức:

[(a b → c) a] c ? (1)∧ ∧ ⇒

Trang 8

Đưa VT về dạng chuẩn hội và VP về dạng chuẩn tuyển:

VT ≡ {¬a ¬b c, a}: dạng chuẩn hội ∨ ∨

VP ≡ {c}: dạng chuẩn tuyển

Đồ thì lời giải

BT con (2) sai vì không thể tách, chuyển và không có mệnh đề chung

Do đó bài toán (1) xuất phát cũng sai

III. Code Minh Họa

public classVuongHao

{

private List<BieuThuc> nodes;

publicVuongHao(BieuThuc bieuThuc)

{

nodes = new List<BieuThuc> { bieuThuc };

}

public int CheckTT()

{

//Kiểm tra xem có bất kỳ biểu thức nào không được chứng minh (-1) hay không:

(nodes.Any(bieuThuc => bieuThuc.CheckCM() == -1))if

{

return -1;

}

//Kiểm tra xem có bất kỳ biểu thức nào còn chưa chứng minh (0) hay không:

Trang 9

(nodes.Any(bieuThuc => bieuThuc.CheckCM() == 0))if

{

return 0;

}

//Nếu tất cả các biểu thức đều đã được chứng minh (1) hoặc danh sách rỗng:

return 1;

}

public void Run()

{

Console.WriteLine("Biểu thức của chúng ta là: " + nodes[0]); while (CheckTT() == 0)

{

for int ( i = nodes.Count - 1; i >= 0; i )

{

BieuThuc bieuThuc = nodes[i];

nodes.RemoveAt(i);

BieuThuc[] newBieuThucs = bieuThuc.ChuyenTrangThai(); BieuThuc tt1 = newBieuThucs[0];

BieuThuc tt2 = newBieuThucs[1];

(tt1 != if null)

{

nodes.Add(tt1);

nodes.Add(tt2);

Console.WriteLine("Tách " + bieuThuc + " thành " + tt1 + " và " + tt2);

}

(CheckTT() == -1)if

{

break;

Trang 10

}

}

}

Console.Write("KẾT QUẢ:");

(CheckTT() == -1)if

Console.WriteLine(" Không được chứng minh");

(CheckTT() == 1)if

Console.WriteLine(" Được chứng minh");

foreach (var bieuThuc nodes)in

{

Console.WriteLine(bieuThuc);

}

}

}

Cài đặt thuật toán Vương Hạo bằng ngôn ngữ C#

a)

IV.Ứng Dựng Thuật Toán

Thuật toán Vương Hạo có thể được ứng dụng trong nhiều lĩnh vực, bao gồm:

Trí tuệ nhân tạo: Thuật toán Vương Hạo được sử dụng trong các hệ thống trí tuệ nhân tạo để chứng minh tính đúng đắn của các quy tắc logic, từ đó giúp các hệ thống này có thể đưa ra quyết định chính xác hơn

Kỹ thuật phần mềm: Thuật toán Vương Hạo được sử dụng để kiểm tra tính đúng đắn của các chương trình phần mềm

Toán học: Thuật toán Vương Hạo được sử dụng để chứng minh các định lý toán học

Dưới đây là một số ví dụ cụ thể về ứng dụng của thuật toán Vương Hạo:

Trang 11

Trong trí tuệ nhân tạo, thuật toán Vương Hạo được sử dụng trong các hệ thống suy diễn để chứng minh tính đúng đắn của các quy tắc logic Ví dụ, trong hệ thống chẩn đoán bệnh, thuật toán Vương Hạo có thể được sử dụng để chứng minh rằng một bệnh nhân mắc một bệnh nhất định dựa trên các triệu chứng của bệnh nhân Trong kỹ thuật phần mềm, thuật toán Vương Hạo được sử dụng để kiểm tra tính đúng đắn của các chương trình phần mềm Ví dụ, thuật toán Vương Hạo có thể được sử dụng để kiểm tra xem một chương trình phần mềm có thể hoạt động chính xác trong tất cả các trường hợp hay không

Trong toán học, thuật toán Vương Hạo được sử dụng để chứng minh các định lý toán học Ví dụ, thuật toán Vương Hạo có thể được sử dụng để chứng minh định lý Pythagoras

Thuật toán Vương Hạo là một thuật toán mạnh mẽ và hiệu quả, có thể được ứng dụng trong nhiều lĩnh vực khác nhau

Trang 12

Tài Liệu Tham Khảo

https://github.com/patrickphat/Wang-Algorithm-Giai-Thuat-Vuong-Hao

https://viblo.asia/p/mo-phong-thuat-toan-vuong-hao-trong-prolog-RQqKLq2NZ7z

Ngày đăng: 03/12/2024, 16:23

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

TÀI LIỆU LIÊN QUAN

w