Thuat toan va giai thuat

103 11 0
Thuat toan va giai thuat

Đ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

Khả năng của hệ thống này không chỉ dừng lại ở việc tính ra giá trị các yếu tố cần thiết, với một chút sửa đổi, chương trình này còn có thể đưa ra cách giải hình thức của bài toán và t[r]

(1)

CHƯƠNG : THUẬT TOÁN – THUẬT GIẢI

I KHÁI NIỆM THUẬT TOÁN – THUẬT GIẢI II THUẬT GIẢI HEURISTIC

III CÁC PHƯƠNG PHÁP TÌM KIẾM HEURISTIC III.1 Cấu trúc chung tốn tìm kiếm

III.2 Tìm kiếm chiều sâu tìm kiếm chiều rộng III.3 Tìm kiếm leo đồi

III.4 Tìm kiếm ưu tiên tối ưu (best-first search) III.5 Thuật giải AT

III.6 Thuật giải AKT III.7 Thuật giải A*

III.8 Ví dụ minh họa hoạt động thuật giải A* III.9 Bàn luận A*

III.10 Ứng dụng A* để giải toán Ta-canh III.11 Các chiến lược tìm kiếm lai

I TỔNG QUAN THUẬT TỐN – THUẬT GIẢI

Trong trình nghiên cứu giải vấn đề – toán, người ta đưa nhận xét sau:

Có nhiều tốn chưa tìm cách giải theo kiểu thuật tốn khơng biết có tồn thuật tốn hay khơng

Có nhiều tốn có thuật tốn để giải khơng chấp nhận thời gian giải theo thuật tốn q lớn điều kiện cho thuật tốn khó đáp ứng

(2)

Từ nhận định trên, người ta thấy cần phải có đổi cho khái niệm thuật toán Người ta mở rộng hai tiêu chuẩn thuật tốn: tính xác định tính đắn Việc mở rộng tính xác định thuật toán thể qua giải thuật đệ quy ngẫu nhiên Tính thuật tốn khơng cịn bắt buộc số cách giải toán, cách giải gần Trong thực tiễn có nhiều trường hợp người ta chấp nhận cách giải thường cho kết tốt (nhưng lúc tốt) phức tạp hiệu Chẳng hạn giải toán thuật toán tối ưu địi hỏi máy tính thực hiên nhiều năm sẵn lịng chấp nhận giải pháp gần tối ưu mà cần máy tính chạy vài ngày vài

Các cách giải chấp nhận khơng hồn tồn đáp ứng đầy đủ tiêu chuẩn thuật toán thường gọi thuật giải Khái niệm mở rộng thuật tốn mở cửa cho việc tìm kiếm phương pháp để giải toán đặt

Một thuật giải thường đề cập đến sử dụng khoa học trí tuệ nhân tạo cách giải theo kiểu Heuristic

II THUẬT GIẢI HEURISTIC

Thuật giải Heuristic mở rộng khái niệm thuật tốn Nó thể cách giải tốn với đặc tính sau:

Thường tìm lời giải tốt (nhưng khơng lời giải tốt nhất) Giải toán theo thuật giải Heuristic thường dễ dàng nhanh chóng đưa kết so với giải thuật tối ưu, chi phí thấp

Thuật giải Heuristic thường thể tự nhiên, gần gũi với cách suy nghĩ hành động người

Có nhiều phương pháp để xây dựng thuật giải Heuristic, người ta thường dựa vào số nguyên lý sau:

Nguyên lý vét cạn thông minh: Trong tốn tìm kiếm đó,

khơng gian tìm kiếm lớn, ta thường tìm cách giới hạn lại khơng gian tìm kiếm thực kiểu dị tìm đặc biệt dựa vào đặc thù tốn để nhanh chóng tìm mục tiêu

Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục)

của toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bước (hay giai đoạn) trình tìm kiếm lời giải

Nguyên lý thứ tự: Thực hành động dựa cấu trúc thứ tự hợp lý

(3)

Hàm Heuristic: Trong việc xây dựng thuật giải Heuristic, người ta thường

dùng hàm Heuristic Đó hàm đánh già thơ, giá trị hàm phụ thuộc vào trạng thái toán bước giải Nhờ giá trị này, ta chọn cách hành động tương đối hợp lý bước thuật giải

Bài tốn hành trình ngắn – ứng dụng ngun lý Greedy

Bài tốn: Hãy tìm hành trình cho người giao hàng qua n điểm khác nhau, mỗi

điểm qua lần trở điểm xuất phát cho tổng chiều dài đoạn đường cần ngắn Giả sử có đường nối trực tiếp từ hai điểm

Tất nhiên ta giải tốn cách liệt kê tất đường đi, tính chiều dài đường tìm đường có chiều dài ngắn Tuy nhiên, cách giải lại có độ phức tạp 0(n!) (một hành trình hốn vị n điểm, đó, tổng số hành trình số lượng hốn vị tập n phần tử n!) Do đó, số đại lý tăng số đường phải xét tăng lên nhanh

Một cách giải đơn giản nhiều thường cho kết tương đối tốt dùng thuật giải Heuristic ứng dụng nguyên lý Greedy Tư tưởng thuật giải sau:

Từ điểm khởi đầu, ta liệt kê tất quãng đường từ điểm xuất phát n đại lý chọn theo đường ngắn

Khi đến đại lý, chọn đến đại lý theo nguyên tắc Nghĩa liệt kê tất đường từ đại lý ta đứng đến đại lý chưa đến Chọn đường ngắn Lặp lại trình lúc khơng cịn đại lý để

Bạn quan sát hình sau để thấy trình chọn lựa Theo nguyên lý Greedy, ta lấy tiêu chuẩn hành trình ngắn toán làm tiêu chuẩn cho chọn lựa cục Ta

hy vọng rằng, n đoạn đường ngắn cuối ta có hành trình ngắn Điều khơng phải lúc Với điều kiện hình thì

(4)

Hình : Giải tốn sử dụng nguyên lý Greedy

Tất nhiên, thuật giải theo kiểu Heuristic đôi lúc lại đưa kết khơng tốt, chí tệ trường hợp hình sau

Bài tốn phân việc – ứng dụng nguyên lý thứ tự

(5)

Chúng ta xét tốn trường hợp có máy P1, P2, P3 công việc với thời gian t1=2, t2=5, t3=8, t4=1, t5=5, t6=1 ta có phương án phân cơng (L) hình sau:

Theo hình này, thời điểm t=0, ta tiến hành gia công chi tiết J2 máy P1, J5 P2 J1 P3 Tại thời điểm t=2, công việc J1 hồn thành, máy P3 ta gia cơng tiếp chi tiết J4 Trong lúc đó, hai máy P1 P2 thực công việc … Sơ đồ phân việc theo hình gọi lược đồ GANTT Theo lược đồ này, ta thấy thời gian để hoàn thành toàn cơng việc 12 Nhận xét cách cảm tính ta thấy phương án (L) vừa thực phương án không tốt Các máy P1 P2 có q nhiều thời gian rãnh

Thuật tốn tìm phương án tối ưu L0 cho toán theo kiểu vét cạn có độ phức tạp cỡ O(mn) (với m số máy n số công việc) Bây ta xét đến thuật giải Heuristic đơn giản (độ phức tạp O(n)) để giải toán

Sắp xếp công việc theo thứ tự giảm dần thời gian gia công

Lần lượt xếp việc theo thứ tự vào máy dư nhiều thời gian

(6)

Rõ ràng phương án L* vừa thực phương án tối ưu trường hợp thời gian hoàn thành 8, thời gian công việc J3 Ta hy vọng giải Heuristic đơn giản thuật giải tối ưu Nhưng tiếc thay, ta dễ dàng đưa trường hợp mà thuật giải Heuristic không đưa kết tối ưu

Nếu gọi T* thời gian để gia công xong n chi tiết máy thuật giải Heuristic đưa T0 thời gian tối ưu người ta chứng minh

, M số máy

Với kết này, ta xác lập sai số mà phải gánh chịu dùng

(7)

Trong trường hợp M lớn tỷ số 1/M xem Như vậy, sai số tối đa mà ta phải chịu T* 4/3 T0, nghĩa sai số tối đa 33% Tuy nhiên, khó tìm trường hợp mà sai số giá trị cực đại, dù trường hợp xấu Thuật giải Heuristic trường hợp rõ ràng cho lời giải tương đối tốt

III CÁC PHƯƠNG PHÁP TÌM KIẾM HEURISTIC

Qua phần trước tìm hiểu tổng quan ý tưởng thuật giải Heuristic (nguyên lý Greedy thứ tự) Trong mục này, sâu vào tìm hiểu số kỹ thuật tìm kiếm Heuristic – lớp tốn quan trọng có nhiều ứng dụng thực tế

III.1 Cấu trúc chung tốn tìm kiếm

Để tiện lợi cho việc trình bày, ta dành chút thời gian để làm rõ "đối tượng" quan tâm mục Một cách chung nhất, nhiều vấn đề-bài toán phức tạp đều có dạng "tìm đường đồ thị" hay nói cách hình thức "xuất phát từ

một đỉnh đồ thị, tìm đường hiệu đến đỉnh đó" Một phát biểu

khác thường gặp dạng toán :

Cho trước hai trạng thái T0 TG xây dựng chuỗi trạng thái T0, T1, T2, , Tn-1, Tn = TG cho :

thỏa mãn điều kiện cho trước (thường nhỏ nhất)

Trong đó, Ti thuộc tập hợp S (gọi không gian trạng thái – state space) bao gồm tất các trạng thái có tốn cost(Ti-1, Ti) chi phí để biến đổi từ trạng thái Ti -1 sang trạng thái Ti Dĩ nhiên, từ trạng thái Ti ta có nhiều cách để biến đổi sang trạng thái Ti+1 Khi nói đến biến đổi cụ thể từ Ti-1 sang Ti ta dùng thuật ngữ hướng

(với ngụ ý nói lựa chọn)

(8)

này sang trạng thái Tkđược biểu diễn dạng số nằm cung nối hai nút tượng trưng cho hai trạng thái

Đa số tốn thuộc dạng mà mơ tả biểu diễn dạng đồ thị Trong đó, trạng thái đỉnh đồ thị Tập hợp S bao gồm tất trạng thái tập hợp bao gồm tất đỉnh đồ thị Việc biến đổi từ trạng thái Ti-1 sang trạng thái Ti việc từ đỉnh đại diện cho Ti-1 sang đỉnh đại diện cho Ti theo cung nối hai đỉnh

III.2 Tìm kiếm chiều sâu tìm kiếm chiều rộng

Để bạn đọc hình dung cách cụ thể chất thuật giải Heuristic, nhất thiết phải nắm vững hai chiến lược tìm kiếm tìm kiếm theo chiều sâu (Depth First Search) tìm kiếm theo chiều rộng (Breath First Search) Sở dĩ dùng từ chiến lược mà phương pháp thực tế, người ta hầu chẳng vận dụng hai kiểm tìm kiếm cách trực tiếp mà khơng phải sửa đổi

III.2.1 Tìm kiếm chiều sâu (Depth-First Search)

(9)

Hình : Hình ảnh tìm kiếm chiều sâu Nó lưu ý "mở rộng" trạng thái chọn mà không "mở rộng" trạng thái khác (nút màu trắng hình vẽ)

III.2.2 Tìm kiếm chiều rộng (Breath-First Search)

(10)

Hình : Hình ảnh tìm kiếm chiều rộng Tại bước, trạng thái mở

rộng, khơng bỏ sót trạng thái

Chiều sâu Chiều rộng

Tính hiệu Hiệu lời giải nằm sâu tìm kiếm có phương án chọn hướng xác Hiệu chiến lược phụ thuộc vào phương án chọn hướng Phương án hiệu hiệu chiến lược giảm Thuận lợi muốn tìm lời giải

Hiệu lời giải nằm gần gốc tìm kiếm Hiệu chiến lược phụ thuộc vào độ sâu lời giải Lời giải xa gốc hiệu chiến lược giảm Thuận lợi muốn tìm nhiều lời giải Lượng nhớ sử dụng để

lưu trữ trạng thái Chỉ lưu lại trạng thái chưa xét đến Phải lưu toàn trạng thái Trường hợp xấu Vét cạn toàn Vét cạn toàn

Trường hợp tốt Phương án chọn hướng tuyệt đối xác Lời giải xác định cách trực tiếp

Vét cạn toàn

Tìm kiếm chiều sâu tìm kiếm chiều rộng phương pháp tìm kiếm có hệ thống chắn tìm lời giải Tuy nhiên, chất vét cạn nên với tốn có khơng gian lớn ta khơng thể dùng hai chiến lược Hơn nữa, hai chiến lược có tính chất "mù qng" chúng khơng ý đến thông tin (tri thức) trạng thái thời thơng tin đích cần đạt tới mối quan hệ chúng Các tri thức vô quan trọng có ý nghĩa để thiết kế thuật giải hiệu mà ta sửa bàn đến

III.3 Tìm kiếm leo đồi

III.3.1 Leo đồi đơn giản

Tìm kiếm leo đồi theo nghĩa, nói chung, thực chất trường hợp đặc biệt tìm kiếm theo chiều sâu khơng thể quay lui Trong tìm kiếm leo đồi, việc lựa chọn trạng thái định dựa hàm Heuristic

Hàm Heuristic ?

Thuật ngữ "hàm Heuristic" muốn nói lên điều gì? Chẳng có ghê gớm Bạn quen với nó rồi! Đó đơn giản ước lượng khả dẫn đến lời giải tính từ trạng thái đó (khoảng cách trạng thái trạng thái đích) Ta quy ước gọi hàm là

h suốt giáo trình Đơi lúc ta đề cập đến chi phí tối ưu thực từ

(11)

được đồng nghĩa biết đường đến lời giải !) mà ta dùng sở để suy luận mặt lý thuyết mà ! Hàm h, ta quy ước rằng, trả kết số không âm Để bạn đọc thực nắm ý nghĩa hai hàm này, quan sát hình sau minh họa chi phí tối ưu thực chi phí ước lượng

Hình Chi phí ước lượng h’ = chi phí tối ưu thực h = 4+5 = (đi theo đường 1-3-7) Bạn thành phố xa lạ mà khơng có đồ tay ta muốn vào khu trung tâm? Một cách suy nghĩ đơn giản, nhắm vào hướng tòa cao ốc khu trung tâm!

Tư tưởng

1) Nếu trạng thái bắt đầu trạng thái đích báo tìm lời giải

Ngược lại, đặt trạng thái hành (Ti) trạng thái khởi đầu (T0)

2) Lặp lại đạt đến trạng thái kết thúc không tồn

trạng thái hợp lệ (Tk) trạng thái hành :

a Đặt Tk trạng thái hợp lệ trạng thái hành Ti

b Đánh giá trạng thái Tk :

b.1 Nếu trạng thái kết thúc trả trị

b.2 Nếu khơng phải trạng thái kết thúc tốt trạng thái

hiện hành cập nhật thành trạng thái hành

b.3 Nếu khơng tốt trạng thái hành tiếp tục vịng

(12)

Mã giả

Ti := T0; Stop :=FALSE;

WHILE Stop=FALSE DO BEGIN IF Ti  TG THEN BEGIN

<tìm kết >; Stop:=TRUE; END;

ELSE BEGIN

Better:=FALSE;

WHILE (Better=FALSE) AND (STOP=FALSE) DO BEGIN IF <không tồn trạng thái hợp lệ Ti> THEN BEGIN

<khơng tìm kết >; Stop:=TRUE;END; ELSE BEGIN

Tk := <một trạng thái hợp lệ Ti>; IF <h(Tk) tốt h(Ti)> THEN BEGIN

Ti :=Tk; Better:=TRUE;

END; END;

END; {WHILE} END; {ELSE}

END;{WHILE}

(13)

Vấn đề cần làm rõ <một trạng thái hợp lệ Ti>?Một trạng thái hợp lệ trạng thái chưa xét đến Giả sử h trạng thái Ti có giá trị h(Ti) = 1.23 từ Ti ta biến đổi sang trạng thái Tk1, Tk2, Tk3 với giá trị hàm h tương ứng h(Tk1) = 1.67, h(Tk2) = 2.52, h’(Tk3) = 1.04 Đầu tiên, Tk gán Tk1, h’(Tk) = h’(Tk1) > h’(Ti) nên Tk không chọn Kế tiếp Tk gán Tk2 khơng chọn Cuối Tk3 chọn Nhưng giả sử h’(Tk3) = 1.3 Tk3 không chọn mệnh đề

<không thể sinh trạng thái Ti> sẽ có giá trị TRUE Giải thích hiển nhiên có lẽ cần thiết để tránh nhầm lẫn cho bạn đọc

Để thấy rõ hoạt động thuật giải leo đồi Ta xét toán minh họa sau Cho khối lập phương giống A, B, C, D Trong mặt (M1), (M2), (M3), (M4), (M5), (M6) tơ màu (1), (2), (3), (4), (5), (6) Ban đầu khối lập phương xếp vào hàng Mỗi bước, ta xoay khối lập phương quanh trục (X,Y,Z) 900 theo chiều (nghĩa ngược chiều hay thuận chiều kim đồng hồ được) Hãy xác định số bước quay cho tất mặt khối lập phương mặt hàng có màu hình vẽ

Hình : Bài tốn khối lập phương

Để giải vấn đề, trước hết ta cần định nghĩa hàm G dùng để đánh giá tình trạng cụ thể có phải lời giải hay khơng? Bạn đọc dễ dàng đưa cài đặt hàm G sau :

IF (Gtrái + Gphải + Gtrên + Gdưới + Gtrước + Gsau) = 16 THEN G:=TRUE

ELSE

G:=FALSE;

(14)

nếu có mặt khơng đối hàng đồng màu mặt cịn lại hàng đồng màu Từ ta cần hàm G định nghĩa sau đủ :

IF Gphải + Gdưới = THEN G:=TRUE

ELSE

G:=FALSE;

Hàm h (ước lượng khả dẫn đến lời giải trạng thái) định nghĩa sau :

h = Gtrái + Gphải + Gtrên+ Gdưới

Bài toán đủ đơn giản để thuật giải leo đồi hoạt động tốt Tuy nhiên, khơng phải lúc ta may mắn thế!

Đến đây, nảy sinh ý tưởng Nếu chọn trạng thái tốt làm trạng thái khơng chọn trạng thái tốt ? Như vậy, có lẽ ta nhanh chóng dẫn đến lời giải hơn! Ta bàn luận vấn đề: "liệu cải tiến có thực giúp dẫn đến lời giải nhanh hay khơng?" sau trình bày xong thuật giải leo đồi dốc đứng

III.3.2 Leo đồi dốc đứng

Về bản, leo đồi dốc đứng giống leo đồi, khác điểm leo đồi dốc đứng sẽ duyệt tất hướng chọn theo trạng thái tốt số trạng thái có (trong leo đồi chọn theo trạng thái tốt

hơn trạng thái hành mà tìm thấy) Tư tưởng

1) Nếu trạng thái bắt đầu trạng thái đích báo tìm lời giải Ngược lại, đặt trạng thái hành (Ti) trạng thái khởi đầu (T0)

2) Lặp lại đạt đến trạng thái kết thúc (Ti) không tồn trạng thái (Tk) tốt trạng thái (Ti)

a) Đặt S tập tất trạng thái có Ti tốt Ti. b) Xác định Tkmax trạng thái tốt tập S

(15)

Mã giả

Ti := T0;

Stop :=FALSE;

WHILE Stop=FALSE DO BEGIN IF Ti  TG THEN BEGIN

<tìm kết >; STOP :=TRUE; END;

ELSE BEGIN

Best:=h’(Ti);

Tmax := Ti;

WHILE <tồn trạng thái hợp lệ Ti> DO BEGIN Tk := <một trạng thái hợp lệ Ti>;

IF <h’(Tk) tốt Best> THEN BEGIN

Best :=h’(Tk); Tmax := Tk;

END; END;

IF (Best>Ti) THEN Ti := Tmax; ELSE BEGIN

<khơng tìm kết >; STOP:=TRUE;

(16)

END; {ELSE IF} END;{WHILE STOP} III.3.3 Đánh giá

So với leo đồi đơn giản, leo đồi dốc đứng có ưu điểm ln ln chọn hướng có triển vọng để Liệu điều có đảm bảo leo đồi dốc đứng ln tốt leo đồi đơn giản không? Câu trả lời không Leo đồi dốc đứng tốt leo đồi đơn giản số trường hợp mà Để chọn hướng tốt nhất, leo đồi dốc đứng phải duyệt qua

tất hướng có trạng thái hành Trong đó, leo đồi đơn giản

chọn theo trạng thái tốt (so với trạng thái hành) mà tìm Do đó, thời gian cần thiết để leo đồi dốc đứng chọn hướng lớn so với leo đồi đơn giản Tuy vậy, lúc chọn hướng tốt nên leo đồi dốc đứng thường tìm đến lời giải sau số bước so với leo đồi đơn giản Nói cách ngắn gọn, leo đồi dốc đứng tốn nhiều thời gian cho bước lại bước hơn; cịn leo đồi đơn giản tốn thời gian cho bước lại phải nhiều bước Đây yếu tố hai thuật giải nên ta phải cân nhắc kỹ lưỡng lựa chọn thuật giải

Cả hai phương pháp leo núi đơn giản leo núi dốc đứng có khả thất bại việc tìm lời giải tốn lời giải thực hữu Cả hai giải thuật kết thúc đạt trạng thái mà không cịn trạng thái tốt phát sinh trạng thái trạng thái đích Điều xảy chương trình đạt đến điểm cực đại địa phương, đoạn đơn điệu ngang

Điểm cực đại địa phương (a local maximum) : trạng thái tốt tất lân cận

nó khơng tốt số trạng thái khác xa Nghĩa điểm cực đại địa phương, trạng thái lân cận trạng thái xấu trạng thái Tuy có dáng vẻ lời giải cực đại địa phương lời giải thực Trong trường hợp này, chúng gọi đồi thấp

Đoạn đơn điệu ngang (a plateau) : vùng phẳng khơng gian tìm kiếm,

(17)

Hình : Các tình khó khăn cho tìm kiếm leo đèo.

Để đối phó với các điểm này, người ta đưa số giải pháp Ta tìm hiểu số giải pháp Những giải này, không thực giải trọn vẹn vấn đề mà phương án cứu nguy tạm thời mà

Phương án kết hợp leo đồi quay lui Ta quay lui lại trạng thái trước thử theo hướng khác Thao tác hợp lý trạng thái trước có hướng tốt mà ta bỏ qua trước Đây cách hay để đối phó với điểm cực đại địa phương Tuy nhiên, đặc điểm leo đồi "bước sau cao bước trước" nên phương án thất bại ta xuất phát từ điểm cao xuất phát từ đỉnh đồi mà để đến lời giải cần phải qua "thung lũng" thật sâu hình sau

Hình : Một trường hợp thất bại leo đèo kết hợp quay lui

(18)

Hình Một trường hợp khó khăn cho phương án "nhảy vọt"

Leo núi phương pháp cục định làm dựa vào đánh giá trạng thái trạng thái có (tốt trạng thái tại, trạng thái tốt tốt trạng thái tại) thay phải xem xét cách tồn diện tất trạng thái qua Thuận lợi leo núi gặp bùng nổ tổ hợp so với phương pháp toàn cục Nhưng giống phương pháp cục khác chỗ khơng chắn tìm lời giải trường hợp xấu

Một lần nữa, ta khẳng định lại vai trò định hàm Heuristic trình tìm kiếm lời giải Với thuật giải (như leo đồi chẳng hạn), ta có hàm Heuristic tốt kết tìm thấy nhanh Ta xét tốn khối trình bày hình sau Ta có hai thao tác biến đổi là:

+ Lấy khối đỉnh cột đặt lên chỗ trống tạo thành cột Lưu ý tạo tối đa cột

(19)

Hình : Trạng thái khởi đầu trạng thái kết thúc

Giả sử ban đầu ta dùng hàm Heuristic đơn giản sau :

H1 : Cộng điểm cho khối vị trí so với trạng thái đích Trừ điểm cho khối đặt vị trí sai so với trạng thái đích

Dùng hàm này, trạng thái kết thúc có giá trị khối đặt vị trí Trạng thái khởi đầu có giá trị (vì có điểm cộng cho khối C, D, E, F, G, H điểm trừ cho khối A B) Chỉ có di chuyển từ trạng thái khởi đầu, dịch chuyển khối A xuống tạo thành cột (T1)

Điều sinh trạng thái với số điểm (vì vị trí khối A sinh điểm cộng điểm trừ) Thủ tục leo núi chấp nhận dịch chuyển Từ trạng thái T1, có ba di chuyển thực dẫn đến ba trạng thái Ta, Tb, Tc minh họa hình Những trạng thái có số điểm : h’(Ta)= 4; h’(Tb) = h’(Tc) =

(20)

Hình Các trạng thái đạt từ T1

Thủ tục leo núi tạm dừng tất trạng thái có số điểm thấp trạng thái hành Quá trình tìm kiếm dừng lại trạng thái cực đại địa phương mà khơng phải cực đại tồn cục

Chúng ta đổ lỗi cho giải thuật leo đồi thất bại khơng đủ tầm nhìn tổng quát để tìm lời giải Nhưng đổ lỗi cho hàm Heuristic cố gắng sửa đổi Giả sử ta thay hàm ban đầu hàm Heuristic sau :

H2 : Đối với khối phụ trợ (khối phụ trợ khối nằm bên khối

tại), cộng điểm, ngược lại trừ điểm

Dùng hàm này, trạng thái kết thúc có số điểm 28 B nằm vị trí khơng có khối phụ trợ nào, C vị trí điểm cộng với điểm khối phụ trợ B nằm vị trí nên C điểm, D điểm, Trạng thái khởi đầu có số điểm –28 Việc di chuyển A xuống tạo thành cột làm sinh trạng thái với số điểm h’(T1) =

–21 A khơng cịn khối sai phía Ba trạng thái phát sinh

bây có điểm số : h’(Ta)=–28; h’(Tb)=–16 h’(Tc) = –15 Lúc thủ tục leo núi dốc đứng chọn di chuyến đến trạng thái Tc, có khối Qua hàm H2 này ta rút nguyên tắc : tốt khơng có nghĩa có nhiều ưu điểm mà cịn phải khuyết điểm Hơn nữa, khuyết điểm khơng có nghĩa sai biệt vị trí mà cịn khác biệt tương quan vị trí Rõ ràng đứng mặt kết quả, thủ tục leo đồi hàm H1 bị thất bại (do biết đánh giá ưu điểm) hàm H2 lại hoạt động cách hoàn hảo (do biết đánh giá ưu điểm khuyết điểm)

Đáng tiếc, lúc thiết kế hàm Heuristic hồn hảo Vì việc đánh giá ưu điểm khó, việc đánh giá khuyết điểm khó tinh tế hơn Chẳng hạn, xét lại vấn đề muốn vào khu trung tâm thành phố xa lạ Để hàm Heuristic hiệu quả, ta cần phải đưa thông tin đường chiều ngõ cụt, mà trường hợp thành phố hồn tồn xa lạ ta khó khơng thể biết thơng tin

Đến đây, hiểu rõ chất hai thuật giải tiếp cận theo chiến lược tìm kiếm chiều sâu Hiệu hai thuật giải leo đồi đơn giản leo đồi dốc đứng phụ thuộc vào :

(21)

Sau đây, tìm hiểu tiếp cận theo mới, kết hợp sức mạnh tìm kiếm chiều sâu tìm kiếm chiều rộng Một thuật giải linh động nói thuật giải kinh điển Heuristic

III.4 Tìm kiếm ưu tiên tối ưu (best-first search)

Ưu điểm tìm kiếm theo chiều sâu quan tâm đến mở rộng tất nhánh Ưu điểm tìm kiếm chiều rộng không bị sa vào đường dẫn bế tắc (các nhánh cụt) Tìm kiếm ưu tiên tối ưu kết hợp phương pháp cho phép ta theo đường thời điểm, đồng thời "quan sát" hướng khác Nếu đường "có vẻ" khơng triển vọng đường ta "quan sát" ta chuyển sang theo số đường Để tiện lợi ta dùng chữ viết tắt BFS thay cho tên gọi tìm kiếm ưu tiên tối ưu

Một cách cụ thể, bước tìm kiếm BFS, ta chọn theo trạng thái có khả cao số trạng thái xét thời điểm (khác với leo đồi dốc đứng chọn trạng thái có khả cao số trạng thái đến từ trạng thái tại) Như vậy, với tiếp cận này, ta ưu tiên vào nhánh tìm kiếm có khả (giống tìm kiếm leo đồi dốc đứng), ta không bị lẩn quẩn nhánh sâu vào hướng mà ta phát hướng tệ, đến mức xấu hướng mà ta chưa đi, ta khơng tiếp hướng mà chọn theo hướng tốt số hướng chưa Đó tư tưởng chủ đạo tìm kiếm BFS Để hiểu tư tưởng Bạn xem ví dụ sau :

(22)

Khởi đầu, có nút (trạng thái) A nên mở rộng tạo nút B,C D Các số nút giá trị cho biết độ tốt nút Con số nhỏ, nút tốt Do D nút có khả nên mở rộng tiếp sau nút A sinh nút E F Đến đây, ta lại thấy nút B có khả (trong nút B,C,E,F) nên ta chọn mở rộng nút B tạo nút G H Nhưng lại lần nữa, hai nút G, H này đánh giá khả E, ý lại trở E E mở rộng nút sinh từ E I J Ở bước kế tiếp, J mở rộng có khả Q trình tiếp tục tìm thấy lời giải

Lưu ý tìm kiếm giống với tìm kiếm leo đồi dốc đứng, với ngoại lệ Trong leo núi, trạng thái chọn tất trạng thái khác bị loại bỏ, không chúng xem xét lại Cách xử lý dứt khoát đặc trưng leo đồi Trong BFS, bước, có di chuyển chọn khác giữ lại, để ta trở lại xét sau trạng thái trở nên khả trạng thái lưu trữ Hơn nữa, ta chọn trạng thái tốt mà không quan tâm đến có tốt hay khơng trạng thái trước Điều tương phản với leo đồi leo đồi dừng khơng có trạng thái tốt trạng thái hành

Để cài đặt thuật giải theo kiểu tìm kiếm BFS, người ta thường cần dùng tập hợp sau :

OPEN : tập chứa trạng thái sinh chưa xét đến (vì ta chọn

một trạng thái khác) Thực ra, OPEN loại hàng đợi ưu tiên (priority queue) mà trong đó, phần tử có độ ưu tiên cao phần tử tốt Người ta thường cài đặt hàng đợi ưu tiên Heap Các bạn tham khảo thêm tài liệu Cấu trúc liệu loại liệu

CLOSE : tập chứa trạng thái xét đến Chúng ta cần lưu trữ trạng thái

này nhớ để đề phòng trường hợp trạng thái tạo lại trùng với trạng thái mà ta xét đến trước Trong trường hợp khơng gian tìm kiếm có dạng khơng cần dùng tập

Thuật giải BEST-FIRST SEARCH 1 Đặt OPEN chứa trạng thái khởi đầu

2 Cho đến tìm trạng thái đích khơng cịn nút OPEN, thực : 2.a Chọn trạng thái tốt (Tmax) OPEN (và xóa Tmaxkhỏi OPEN) 2.b Nếu Tmax trạng thái kết thúc

(23)

Tính f(Tk); Thêm Tk vào OPEN

BFS đơn giản Tuy vậy, thực tế, tìm kiếm chiều sâu chiều rộng, ta dùng BFS cách trực tiếp Thông thường, người ta thường dùng phiên BFS AT, AKT A*

Thông tin khứ tương lai

Thơng thường, phương án tìm kiếm theo kiểu BFS, độ tốt f trạng thái được tính dựa theo hai giá trị mà ta gọi là g h’ h’ biết, ước lượng chi phí từ trạng thái hành trạng thái đích (thơng tin tương lai) Cịn

g "chiều dài quãng đường" từ trạng thái ban đầu trạng thái (thông

tin khứ) Lưu ý g chi phí thực (khơng phí ước lượng) Để dễ hiểu, bạn quan sát hình sau :

Hình 6.14 Phân biệt khái niệm g h’

Kết hợp g h’ thành f’ (f’ = g + h’) thể ước lượng "tổng chi phí" cho con đường từ trạng thái bắt đầu đến trạng thái kết thúc dọc theo đường qua trạng thái hiện hành Để thuận tiện cho thuật giải, ta quy ước g h’ không âm nhỏ nghĩa tốt

III.5 Thuật giải AT

Thuật giải ATlà phương pháp tìm kiếm theo kiểu BFS với độ tốt nút giá trị hàm g – tổng chiều dài đường từ trạng thái bắt đầu đến trạng thái

Thuật giải AT

1 Đặt OPEN chứa trạng thái khởi đầu

(24)

2.a Chọn trạng thái (Tmax) có giá trị g nhỏ OPEN (và xóa Tmaxkhỏi OPEN)

2.b Nếu Tmax trạng thái kết thúc

2.c Ngược lại, tạo trạng thái Tk có từ trạng thái Tmax Đối với trạng thái Tk thực :

g(Tk) = g(Tmax) + cost(Tmax, Tk); Thêm Tk vào OPEN

* Vì sử dụng hàm g (mà không dùng hàm ước lượng h’) fsđể đánh giá độ tốt trạng thái nên ta xem AT thuật toán

III.6 Thuật giải AKT

(Algorithm for Knowlegeable Tree Search)

Thuật giải AKTmở rộng AT cách sử dụng thêm thông tin ước lượng h’ Độ tốt trạng thái f tổng hai hàm g h’

Thuật giải AKT

1 Đặt OPEN chứa trạng thái khởi đầu

2 Cho đến tìm trạng thái đích khơng cịn nút OPEN, thực : 2.a Chọn trạng thái (Tmax) có giá trị f nhỏ OPEN (và xóa Tmaxkhỏi OPEN)

2.b Nếu Tmax trạng thái kết thúc

2.c Ngược lại, tạo trạng thái Tk có từ trạng thái Tmax Đối với trạng thái Tk thực :

g(Tk) = g(Tmax) + cost(Tmax, Tk); Tính h’(Tk)

f(Tk) = g(Tk) + h’(Tk); Thêm Tk vào OPEN

III.7 Thuật giải A*

(25)

trị g,h’, f’ để phản ánh độ tốt trạng thái đó, A* cịn lưu trữ thêm hai thông số sau :

1 Trạng thái cha trạng thái Ti (ký hiệu Cha(Ti) : cho biết trạng thái dẫn đến trạng

thái Ti Trong trường hợp có nhiều trạng thái dẫn đến Tithì chọn Cha(Ti) cho chi phí từ trạng thái khởi đầu đến Ti thấp nhất, nghĩa :

g(Ti) = g(Tcha) + cost(Tcha, Ti) thấp

2 Danh sách trạng thái Ti: danh sách lưu trữ trạng thái

Tk Ti cho chi phí đến Tk thơng qua Ti từ trạng thái ban đầu thấp Thực chất danh sách tính từ thuộc tính Cha trạng thái lưu trữ Tuy nhiên, việc tính tốn nhiều thời gian (khi tập OPEN, CLOSE mở rộng) nên người ta thường lưu trữ danh sách riêng Trong thuật tốn sau đây, khơng đề cập đến việc lưu trữ danh sách Sau hiểu rõ thuật tốn, bạn đọc dễ dàng điều chỉnh lại thuật tốn để lưu trữ thêm thuộc tính

1 Đặt OPEN chứa T0 Đặt g(T0) = 0, h’(T0) = f’(T0) = Đặt CLOSE tập hợp rỗng

2 Lặp lại bước sau gặp điều kiện dừng 2.a Nếu OPEN rỗng : toán vơ nghiệm,

2.b Ngược lại, chọn Tmax OPEN cho f’(Tmax) nhỏ nhất 2.b.1 Lấy Tmax khỏi OPEN đưa Tmax vào CLOSE

2.b.2 Nếu Tmaxchính TGthì thơng báo lời giải Tmax 2.b.3 Nếu Tmax TG Tạo danh sách tất trạng thái kế tiếp Tmax Gọi trạng thái Tk Với Tk, làm bước sau :

2.b.3.1 Tính g(Tk) = g(Tmax) + cost(Tmax, Tk) 2.b.3.2 Nếu tồn Tk’ OPEN trùng với Tk

Nếu g(Tk) < g(Tk’) Đặt g(Tk’) = g(Tk) Tính lại f’(Tk’) Đặt Cha(Tk’) = Tmax

(26)

Nếu g(Tk) < g(Tk’) Đặt g(Tk’) = g(Tk) Tính lại f’(Tk’) Đặt Cha(Tk’) = Tmax

Lan truyền thay đổi giá trị g, f’ cho tất trạng thái Ti (ở tất cấp) lưu trữ CLOSE OPEN

2.b.3.4 Nếu Tkchưa xuất OPEN lẫn CLOSE : Thêm Tk vào OPEN

Tính : f' (Tk) = g(Tk)+h’(Tk)

Có số điểm cần giải thích thuật giải Đầu tiên việc sau tìm thấy trạng thái đích TG, để xây dựng lại "con đường" từ T0 đến TG Rất đơn giản, bạn cần lần ngược theo thuộc tính Cha trạng thái lưu trữ

CLOSE đạt đến T0 Đó "con đường" tối ưu từ TG đến T0 (hay nói cách khác từ T0 đến TG)

Điểm thứ hai thao tác cập nhật lại g(Tk’) , f’(Tk’) Cha(Tk’) bước 2.b.3.2 2.b.3.3 Các thao tác thể tư tưởng : "luôn chọn đường tối ưu nhất" Như chúng ta biết, giá trị g(Tk’) nhằm lưu trữ chi phí tối ưu thực tính từ T0 đến Tk’ Do đó, phát thấy "con đường" khác tốt thông qua Tk (có chi phí nhỏ hơn) đường lưu trữ ta phải chọn "con đường" tốt Trường hợp 2.b.3.3 phức tạp Vì từ Tk’ nằm tập CLOSE nên từ Tk’ ta lưu trữ trạng thái xuất phát từ Tk’ Nhưng g(Tk’) thay đổi dẫn đến giá trị g trạng thái phải thay đổi theo Và đến lượt trạng thái lại có các trạng thái chúng nhánh kết thúc với trạng thái OPEN (nghĩa khơng có trạng thái nữa) Để thực trình cập nhật này, ta thực trình duyệt theo chiều sâu với điểm khởi đầu Tk’ Duyệt đến đâu, ta cập nhật lại g trạng thái đến ( dùng công thức

g(T) = g(Cha(T)) +cost(Cha(T), T) ) giá trị f’ trạng thái thay

đổi theo

Một lần nữa, xin nhắc lại rằng, bạn cho tập OPEN lưu trữ trạng thái "sẽ xem xét đến sau" tập CLOSE lưu trữ trạng thái "đã xét đến rồi" Có thể bạn cảm thấy lúng túng trước thuật giải dài Vấn đề có lẽ sẻ trở nên sáng sủa bạn quan sát bước giải tốn tìm đường ngắn đồ thị thuật giải A* sau

(27)

Chúng ta minh họa hoạt động thuật giải A* việc tìm kiếm đường ngắn nhất từ thành phố Arad đến thành phố Bucharest Romania Bản đồ thành phố của Romania cho đồ thị sau Trong đỉnh đồ thị thành phố, hai đỉnh có cung nối nghĩa có đường hai thành phố tương ứng Trọng số cung chiều dài (tính km) đường nối hai thành phố tương ứng, chiều dài theo đường chim bay thành phố đến Bucharest cho bảng kèm theo

Hình : Bảng đồ Romania với khoảng cách đường tính theo km

Bảng : Khoảng cách đường chim bay từ thành phố đến Bucharest

(28)

Sau bước hoạt động thuật tốn A* việc tìm đường ngắn từ Arad đến Bucharest

Ban đầu :

OPEN  {(Arad,g 0,h’ 0,f’ 0)} CLOSE  {}

Do OPEN chứa thành phố nên thành phố thành phố tốt Nghĩa Tmax  Arad.Ta lấy Arad khỏi OPEN đưa vào CLOSE

OPEN  {}

CLOSE  {(Arad,g 0,h’ 0,f’ 0)}

Từ Arad đến thành phố Sibiu, Timisoara Zerind Ta tính giá trị f’, g h’ thành phố Do nút tạo chưa có nút cha nên ban đầu nút cha chúng Arad

h’(Sibiu)  253

g(Sibiu)  g(Arad)+cost(Arad,Sibiu)  0+140 140

f’(Sibiu)  g(Sibiu)+h’(Sibiu)  140+253  393 Cha(Sibiu)  Arad h’(Timisoara)  329

g(Timisoara)  g(Arad)+cost(Arad, Timisoara)

 0+upload.123doc.net upload.123doc.net f’(Timisoara)  g(Timisoara)+ h’(Timisoara)

(29)

h’(Zerind)  374

g(Zerind)  g(Arad)+cost(Arad, Zerind)  0+75 75

f’(Zerind)  g(Zerind)+h’(Zerind)  75+374  449 Cha(Zerind)  Arad

Do nút Sibiu, Timisoara, Zerind khơng có OPEN CLOSE nên ta bổ sung nút vào OPEN

OPEN  {(Sibiu,g 140,h’ 253,f’ 393,Cha Arad)

(Timisoara,g upload.123doc.net,h’ 329,f’ 447,Cha Arad)

(Zerind,g 75,h’ 374,f’ 449,Cha Arad)} CLOSE  {(Arad,g 0,h’ 0,f’ 0)}

Hình : Bước 1, nút đóng ngoặc vng (như [Arad]) nút tập CLOSE, ngược

lại tập OPEN

Trong tập OPEN, nút Sibiu nút có giá trị f’ nhỏ nên ta chọn Tmax  Sibiu Ta lấy Sibiu khỏi OPEN đưa vào CLOSE

OPEN  {(Timisoara,g upload.123doc.net,h’ 329,f’ 447,Cha Arad)

(30)

(Sibiu,g 140,h’ 253,f’ 393,Cha Arad)}

Từ Sibiu đến thành phố : Arad, Fagaras, Oradea, Rimnicu Ta tính giá trị g, h’, f’ cho nút

h’(Arad)  366

g(Arad)  g(Sibiu)+cost(Sibiu,Arad)  140+140 280

f’(Arad)  g(Arad)+h’(Arad)  280+366  646 h’(Fagaras)  178

g(Fagaras)  g(Sibiu)+cost(Sibiu, Fagaras)  140+99 239 f’(Fagaras)  g(Fagaras)+ h’(Fagaras)

 239+178 417 h’(Oradea)  380

g(Oradea)  g(Sibiu)+cost(Sibiu, Oradea)  140+151  291

f’(Oradea)  g(Oradea)+ h’(Oradea)  291+380  671 h’(R.Vilcea)  193

g(R.Vilcea)  g(Sibiu)+cost(Sibiu, R.Vilcea)  140+80  220

(31)

Nút Arad có CLOSE Tuy nhiên, g(Arad) tạo (có giá trị 280) lớn g(Arad) lưu CLOSE (có giá trị 0) nên ta không cập nhật lại giá trị g f’ Arad lưu CLOSE nút lại : Fagaras, Oradea, Rimnicu khơng có OPEN CLOSE nên ta đưa nút vào OPEN, đặt cha chúng Sibiu Như vậy, đến bước OPEN chứa tổng cộng thành phố

OPEN  {(Timisoara,g upload.123doc.net,h’ 329,f’ 447,Cha Arad)

(Zerind,g 75,h’ 374,f’ 449,Cha Arad) (Fagaras,g 239,h’ 178,f’ 417,Cha Sibiu) (Oradea,g 291,h’ 380,f’ 617,Cha Sibiu) (R.Vilcea,g 220,h’ 193,f’ 413,Cha Sibiu)} CLOSE  {(Arad,g 0,h’ 0,f’ 0)

(Sibiu,g 140,h’ 253,f’ 393,Cha Arad)}

Trong tập OPEN, nút R.Vilcea nút có giá trị f’ nhỏ Ta chọn Tmax  R.Vilcea Chuyển R.Vilcea từ OPEN sang CLOSE Từ R.Vilcea đến thành phố Craiova, Pitesti Sibiu Ta tính giá trị f’, g h’ thành phố

h’(Sibiu)  253

g(Sibiu)  g(R.Vilcea)+ cost(R.Vilcea,Sibiu)  220+80 300

(32)

 300+253  553 h’(Craiova)  160

g(Craiova)  g(R.Vilcea)+ cost(R.Vilcea, Craiova)  220+146 366

f’(Craiova)  g(Fagaras)+h’(Fagaras)  366+160 526

h’(Pitesti)  98

g(Pitesti)  g(R.Vilcea)+ cost(R.Vilcea, Pitesti)  220+97  317

f’(Pitesti)  g(Oradea)+h’(Oradea)  317+98  415

(33)

OPEN  {(Timisoara,g upload.123doc.net,h’ 329,f’ 447,Cha Arad)

(Zerind,g 75,h’ 374,f’ 449,Cha Arad) (Fagaras,g 239,h’ 178,f’ 417,Cha Sibiu)

(Oradea,g 291,h’ 380,f’ 617,Cha Sibiu) (Craiova,g 366,h’ 160,f’ 526,Cha R.Vilcea) (Pitesti,g 317,h’ 98,f’ 415,Cha R.Vilcea) } CLOSE  {(Arad,g 0,h’ 0,f’ 0)

(Sibiu,g 140,h’ 253,f’ 393,Cha Arad)

(R.Vilcea,g 220,h’ 193,f’ 413,Cha Sibiu) }

Đến đây, tập OPEN, nút tốt Pitesti, từ Pitesti ta đến R.Vilcea, Bucharest Craiova Lấy Pitesti khỏi OPEN đặt vào CLOSE Thực tương tự trên, ta không cập nhật giá trị f’, g R.Vilcea Craiova lưu CLOSE Sau tính toán f’, g Bucharest, ta đưa Bucharest vào tập OPEN, đặt Cha(Bucharest)  Pitesti

h’(Bucharest)  0

g(Bucharest)  g(Pitesti)+cost(Pitesti, Bucharest)  317+100 418

f’(Bucharest)  g(Fagaras)+h’(Fagaras)  417+0 417

Ở bước kế tiếp, ta chọn Tmax  Bucharest Và thuật tốn kết thúc (thực bước này, có hai ứng cử viên Bucharest Fagaras có f’ 417 , Bucharest đích nên ta ưu tiên chọn hơn)

Để xây dựng lại đường từ Arad đến Bucharest ta lần theo giá trị Cha lưu trữ kèm với f’, g h’ lúc đến Arad

(34)

Cha(Sibiu)  Arad

Vậy đường ngắn từ Arad đến Bucharest Arad, Sibiu, R.Vilcea, Pitesti, Bucharest

Trong ví dụ minh họa này, hàm h’ có chất lượng tốt cấu trúc đồ thị đơn giản nên ta gần thẳng đến đích mà phải khảo sát đường khác Đây trường hợp đơn giản, trường hợp này, thuật giải có dáng dấp tìm kiếm chiều sâu

Đến đây, để minh họa trường hợp phức tạp thuật giải Ta thử sửa đổi lại cấu trúc đồ thị quan sát hoạt động thuật giải Giả sử ta có thêm thành phố tạm gọi là TP đường Sibiu TP có chiều dài 100, đường TP Pitesti có chiều dài 60 Và khoảng cách đường chim bay từ TP đến Bucharest 174 Như rõ ràng, đường tối ưu đến Bucharest khơng cịn Arad, Sibiu, R.Vilcea, Pitesti, Bucharest mà Arad, Sibiu, TP, Pitesti, Bucharest

(35)

R.Vilcea có giá trị f’ thấp Nên ta mở rộng R.Vilcea trường hợp

Bước trường hợp đơn giản mở rộng Pitesti để có kết Tuy nhiên, trường hợp này, TP có giá trị f’ thấp Do đó, ta chọn mở rộng TP Từ TP ta có hướng đi, quay lại Sibiu đến Pitesti Để nhanh chóng, ta khơng tính tốn giá trị Sibiu biết lớn giá trị lưu trữ CLOSE (vì ngược lại)

h’(Pitesti)  98

g(Pitesti)  g(TP)+cost(TP, Pitesti)  240+75 315

(36)

Pistestti xuất tập OPEN g’(Pitesti) (có giá trị 315) thấp g’(Pitesti) cũ (có giá trị 317) nên ta phải cập nhật lại giá trị f’,g, Cha Pitesti lưu OPEN Sau cập nhật xong, tập OPEN CLOSE sau :

OPEN  {(Timisoara,g upload.123doc.net,h’ 329,f’ 447,Cha Arad) (Zerind,g 75,h’ 374,f’ 449,Cha Arad)

(Fagaras,g 239,h’ 178,f’ 417,Cha Sibiu) (Oradea,g 291,h’ 380,f’ 617,Cha Sibiu) (Craiova,g 366,h’ 160,f’ 526,Cha R.Vilcea) (Pitesti,g 315,h’ 98,f’ 413,Cha TP) }

CLOSE  {(Arad,g 0,h’ 0,f’ 0)

(Sibiu,g 140,h’ 253,f’ 393,Cha Arad) (R.Vilcea,g 220,h’ 193,f’ 413,Cha Sibiu) }

Đến ta thấy rằng, ban đầu thuật giải chọn đường đến Pitesti qua R.Vilcea Tuy nhiên, sau đó, thuật giải phát đường đến Pitesti qua TP tốt nên sử dụng đường Đây trường hợp 2.b.iii.2 thuật giải

Bước sau, chọn mở rộng Pitesti bình thường Khi lần ngược theo thuộc tính Cha, ta có đường tối ưu Arad, Sibiu, TP, Pitesti, Bucharest

III.9 Bàn luận A*

(37)

thuộc vào h’ hàm ước lượng "khoảng cách" gần để tới đích) Lúc thuật giải có dáng dấp tìm kiếm chiều sâu theo nguyên lý hướng đích kết hợp với lần ngược Ngược lại, ta muốn tìm kết với số bước (đạt trạng thái đích với số trạng thái trung gian nhất), ta đặt giá trị để từ trạng thái đến trạng thái ln số, thường Nghĩa đặt cost(Ti-1, Ti) = (và dùng một hàm ước lượng h’ bình thường) Cịn ngược lại, muốn tìm chi phí rẻ thì ta phải đặt giá trị hàm cost xác (phản ánh ghi phí thực sự)

Đến đây, bạn đọc bắt đầu cảm nhận thuật giải A* khơng hồn tồn thuật giải tối ưu tuyệt đối Nói hơn, A* thuật giải linh động cho nhiều tùy chọn Tùy theo toán mà ta có thơng số thích hợp cho A* để thuật giải hoạt động hiệu

Điểm quan tâm thứ hai giá trị h’ – ước lượng khoảng cách (chi phí) từ trạng thái đến trạng thái đích Nếu h’ h (đánh giá tuyệt đối xác) A* mạch từ trạng thái đầu đến trạng thái kết thúc mà không cần phải thực thao tác đổi hướng nào! Dĩ nhiên, thực tế, chẳng ta tìm thấy đánh giá tuyệt đối xác Tuy nhiên, điều đáng quan tâm h’ ước lượng càng gần với h, trình tìm kiếm bị sai sót, bị rẽ vào nhánh cụt Hay nói ngắn gọn nhanh chóng tìm thấy lời giải

Nếu h’ trạng thái (trở thuật giải AT) trình tìm kiếm điều khiển hoàn toàn giá trị g Nghĩa thuật giải chọn theo hướng mà tốn chi phí/bước (chi phí tính từ trạng thái đến trạng thái xét) bất chấp việc theo hướng có khả dẫn đến lời giải hay khơng Đây hình ảnh nguyên lý tham lam (Greedy)

Nếu chi phí từ trạng thái sang trạng thái khác số (dĩ nhiên lúc h’ 0) thuật giải A* trở thành thuật giải tìm kiếm theo chiều rộng! Lý tất những trạng thái cách trạng thái khởi đầu n bước có giá trị g có cùng f’ giá trị nhỏ tất trạng thái cách trạng thái khởi đầu n+1 bước Và g h’ 0, trạng thái xét tương đương Ta chọn trạng thái ngẫu nhiên !

(38)

Xét trường hợp trình bày hình sau Giả sử tất cung có giá trị 1 G trạng thái đích Khởi đầu, OPEN chứa A, sau A mở rộng nên B, C, D đưa vào OPEN (hình vẽ mơ tả trạng thái bước sau đó, B E mở rộng) Đối với nút, số giá trị h’, số g Trong ví dụ này, nút B có f’ thấp = h’+g = + , mở rộng trước tiên Giả sử có nút E h’(E) = 3, E A hai cung nên g(E) = suy f’(E) = 5, giống f’(C) Ta chọn mở rộng E Giả sử có F h’(F) Rõ ràng di chuyển xuống không phát triển rộng Nhưng f’(F) = lớn f’(D) Do đó, mở rộng C đạt đến trạng thái đích Như vậy, ta thấy đánh giá thấp h(B) nên ta lãng phí số bước (E,F), cuối ta phát B khác xa với điều ta mong đợi quay lại để thử đường dẫn khác

Hình : h’ đánh giá thấp h

Bây xét trường hợp hình Chúng ta mở rộng B bước E bước thứ hai Kế tiếp F cuối G, cho đường dẫn kết thúc có độ dài Nhưng giả sử có đường dẫn trực tiếp từ D đến lời giải có độ dài h thực chúng ta khơng tìm đường dẫn (tuy ta tìm thấy lời giải) Bởi việc đánh giá cao h’(D), làm cho D trơng dở mà ta phải tìm đường khác – đến lời giải tệ - mà không nghĩ đến việc mở rộng D Nói chung, h’ đánh giá cao h A* khơng thể tìm đường dẫn tối ưu đến lời giải (nếu có nhiều đường dẫn đến lời giải) Một câu hỏi thú vị "Liệu có

một nguyên tắc chung giúp đưa cách ước lượng h’ không đánh giá cao h hay không?" Câu trả lời "hầu khơng", hầu hết

(39)

Hình : h’ đánh giá cao h

Đến kết thúc việc bàn luận thuật giải A*, thuật giải linh động, tổng quát, hàm chứa tìm kiếm chiều sâu, tìm kiếm chiều rộng ngun lý Heuristic khác Chính mà người ta thường nói, A* thuật giải tiêu biểu cho Heuristic

A* linh động gặp khuyết điểm – giống chiến lược tìm kiếm chiều rộng – tốn nhiều nhớ để lưu lại trạng thái qua – muốn chắn tìm thấy lời giải tối ưu Với khơng gian tìm kiếm lớn nhỏ khơng phải điểm đáng quan tâm Tuy nhiên, với khơng gian tìm kiếm khổng lồ (chẳng hạn tìm đường ma trận kích thước cỡ 106 x 106) khơng gian lưu trữ vấn đề hóc búa Các nhà nghiên cứu đưa nhiều hướng tiếp cận lai để giải vấn đề Chúng ta tìm hiểu số phương án quan trọng nhất, ta cần phải nắm rõ vị trí A* so với thuật giải khác

III.10 Ứng dụng A* để giải toán Ta-canh

(40)

Cho đến nay, ngoại trừ giải pháp vét cạn tìm kiếm Heuristic, người ta chưa tìm thuật tốn xác, tối ưu để giải toán Tuy nhiên, cách giải theo thuật giải A* lại đơn giản thường tìm lời giải (nhưng khơng phải lúc tìm

được lời giải) Nhận xét rằng: Tại thời điểm ta có tối đa di chuyển Vấn đề thời điểm đó, ta chọn lựa di chuyển nào? Chẳng hạn hình trên, ta nên di chuyển (1), (2), (6), hay (7) ? Bài tốn hồn tồn có cấu trúc thích hợp để giải A* (tổng số trạng thái có bàn cờ n2! với n kích thước bàn cờ trạng thái hoán vị tập n2 số)

Tại trạng thái xét Tk, đặt d(i,j)là số ô cần di chuyển để đưa số ô (i,j) vị trí trạng thái đích

Hàm ước lượng h’ trạng thái Tk tổng d(i,j) cho vị trí (i,j) khơng phải ô trống

Như trạng thái hình ban đầu, hàm f(Tk) có giá trị Fk=2+1+3+1+0+1+2+2=12

III.11 Các chiến lược tìm kiếm lai

Chúng ta biết qua kiểu tìm kiếm : leo đèo (LĐ), tìm theo chiều sâu (MC), tìm theo chiều rộng (BR) tìm kiếm BFS Bốn kiểu tìm kiếm xem thái cực không gian liên tục bao gồm chiến lược tìm kiếm khác Để giải thích điều rõ hơn, tiện cho nhìn chiến lược tìm kiếm lời giải hai chiều sau :

Chiều khả quay lui (R): khả cho phép quay lại để xem xét

trạng thái xét đến trước gặp trạng thái tiếp

Chiều phạm vi đánh giá (S): số trạng thái xét đến

định

(41)

Theo hướng R, thấy leo đèo nằm thái cực (nó khơng cho phép quay lại trạng thái chưa xét đến), tìm kiếm quay lui BFS thái cực khác (cho phép quay lại tất hướng chưa xét đến) Theo hướng S thấy leo đèo lần ngược nằm thái cực (chỉ tập trung vào phạm vi hẹp tập trạng thái tạo từ trạng thái tại) BFS nằm thái cực khác (trong BF xem xét toàn tập đường có, bao gồm đường tạo tất đường không xét tới trước trước định)

Những thái cực trực quan hóa hình Vùng in đậm biểu diễn mặt phẳng liên tục chiến lược tìm kiếm mà kết hợp số đặc điểm ba thái cực (leo đèo, chiều sâu, BFS) để có hịa hợp đặc tính tính tốn chúng

Nếu không đủ nhớ cần thiết để áp dụng thuật tốn BFS túy Ta kết hợp BFS với tìm theo chiều sâu để giảm bớt yêu cầu nhớ Dĩ nhiên, ta phải trả số lượng trạng thái xét đến bước nhỏ Một loại kết hợp hình Trong hình này, thuật giải BFS áp dụng đỉnh đồ thị tìm kiếm (biểu diễn vùng tơ tậm) tìm kiếm theo chiều sâu áp dụng đáy (biểu diễn tam giác tô nhạt) Đầu tiên ta áp dụng BFS vào trạng thái ban đầu T0 cách bình thường BFS thi hành lúc đó, số lượng trạng thái lưu trữ chiếm dụng không gian nhớ vượt mức cho phép Đến lúc này, ta áp dụng tìm kiếm chiều sâu xuất phát từ trạng thái tốt Tmax OPEN tồn khơng gian phía "dưới" trạng thái duyệt hết Nếu khơng tìm thấy kết quả, trạng thái Tmax ghi nhận không dẫn đến kết ta lại chọn trạng thái tốt thứ hai OPEN lại áp dụng tìm kiếm chiều sâu cho cho phần khơng gian phía "dưới" trạng thái

Hình : Chiến lược lai BFS-MC đó, BFS áp dụng đỉnh MC đáy.

(42)

khơng tìm thấy kết quả, lần ngược trở lại lại dùng BFS đạt độ sâu d0 Tham số d0 chọn cho nhớ dùng cho tìm kiếm BFS khơng gian "dưới" mức d0 không vượt số cho trước Rõ ràng ta ta khơng dễ xác định d0 (vì nói chung, ta khó đánh giá khơng gian toán rộng đến mức nào) Tuy nhiên, kiểu kết hợp lại có thuận lợi Phần đáy khơng gian tìm kiếm thường chứa nhiều thơng tin "bổ ích" phần đỉnh (Chẳng hạn, tìm đường đến khu trung tâm thành phố, đến gần khu trung tâm – đáy đồ thị – bạn dễ dàng tiến đến trung tâm có nhiều "dấu hiệu" trung tâm xuất xung quanh bạn!) Nghĩa là, càng tiến phía đáy khơng gian tìm kiếm, ước lượng h’ thường trở nên xác đó, dễ dẫn ta đến kết

Hình : Chiến lược lai BFS-MC đó, MC áp dụng đỉnh BFS đáy.

(43)

Hình : Chiến lược lai BFS-MC đó, BFS áp dụng cục chiều sâu áp

dụng toàn cục

(44)

A TỔNG QUAN TRÍ TUỆ NHÂN TẠO I MỞ ĐẦU

Chế tạo cỗ máy thơng minh người (thậm chí thơng minh người) ước mơ cháy bỏng loài người từ hàng ngàn năm Hẳn bạn đọc nhớ đến nhà khoa học Alan Turing đóng góp to lớn ơng lĩnh vực trí tuệ nhân tạo Năng lực máy tính ngày mạnh mẽ điều kiện thuận lợi cho trí tuệ nhân tạo Điều cho phép chương trình máy tính áp dụng thuật giải trí tuệ nhân tạo có khả phản ứng nhanh hiệu trước Sự kiện máy tính Deep Blue đánh bại kiện tướng cờ vua giới Casparov minh chứng hùng hồn cho bước tiến dài cơng nghiên cứu trí tuệ nhân tạo Tuycó thể đánh bại được Casparov Deep Blue cỗ máy biết đánh cờ ! Nó chí khơng có trí thơng minh sơ đẳng đứa bé biết lên ba nhận diện người thân, khả quan sát nhận biết giới, tình cảm thương, ghét, Ngành trí tuệ nhân tạo có bước tiến đáng kể, trí tuệ nhân tạo thực có phim khoa học giả tưởng Hollywood Vậy nghiên cứu trí tuệ nhân tạo? Điều tương tự ước mơ chế tạo vàng nhà giả kim thuật thời Trung Cổ, chưa thành cơng q trình nghiên cứu làm sáng tỏ nhiều vấn đề

Mặc dù mục tiêu tối thượng ngành TTNT xây dựng máy có lực tư tương tự người khả tất sản phẩm TTNT khiêm tốn so với mục tiêu đề Tuy vậy, ngành khoa học mẻ tiến ngày tỏ ngày hữu dụng số cơng việc địi hỏi trí thơng minh người Hình ảnh sau giúp bạn hình dung tình hình ngành trí tuệ nhân tạo

Trước bước vào tìm hiểu trí tuệ nhân tạo, nhắc lại định nghĩa nhiều nhà khoa học chấp nhận

(45)

Tạo máy tính có khả nhận thức, suy luận phản ứng

Nhận thức hiểu khả quan sát, học hỏi, hiểu biết kinh nghiệm giới xung quanh Quá trình nhận thức giúp người có tri thức Suy luận khả vận dụng tri thức sẵn có để phản ứng với tình hay vấn đề - tốn gặp phải sống Nhận thức suy luận để từ đưa phản ứng thích hợp ba hành vi nói đặc trưng cho trí tuệ người (Dĩ nhiên cịn yếu tố tình cảm Nhưng khơng đề cập đến đây!) Do đó, khơng có ngạc nhiên muốn tạo máy tính thơng minh, ta cần phải trang bị cho khả Cả ba khả cần đến yếu tố tri thức

Dưới góc nhìn tập sách này, xây dựng trí tuệ nhân tạo tìm cách biểu diễn tri thức,

tìm cách vận dụng tri thức để giải vấn đề tìm cách bổ sung tri thức

(46)

II THÔNG TIN, DỮ LIỆU VÀ TRI THỨC

Tri thức khái niệm trừu tượng Do đó, khơng cố gắng đưa định nghĩa hình thức xác Thay vào đó, cảm nhận khái niệm "tri thức" cách so sánh với hai khái niệm khác thông tin liệu Nhà bác học tiếng Karan Sing nói "Chúng ta ngập chìm biển

thơng tin lại khát tri thức" Câu nói làm bật khác biệt lượng lẫn

về chất hai khái niệm thông tin tri thức

Trong ngữ cảnh ngành khoa học máy tính, người ta quan niệm liệu số, chữ cái, hình ảnh, âm mà máy tính tiếp nhận xử lý Bản thân liệu thường khơng có ý nghĩa người Cịn thơng tin tất mà người cảm nhận cách trực tiếp thơng qua giác quan (khứu giác, vị giác, thính giác, xúc giác, thị giác giác quan thứ 6) gián tiếp thông qua phương tiện kỹ thuật tivi, radio, cassette, Thông tin người ln có ý nghĩa định Với phương tiện máy tính (mà cụ thể thiết bị đầu ra), con người tiếp thu phần liệu có ý nghĩa Nếu so lượng, liệu thường nhiều thơng tin

Cũng quan niệm thơng tin quan hệ liệu Các liệu xếp theo thứ tự tập hợp lại theo quan hệ chứa đựng thông tin Nếu quan hệ cách rõ ràng tri thức Chẳng hạn :

Trong toán học :

Bản thân số riêng lẻ 1, 1, 3, 5, 2, 7, 11, liệu Tuy nhiên, đặt chúng lại với theo trật tự chúng bắt đầu có mối liên hệ Dữ liệu : 1, 1, 2, 3, 5, 8, 13, 21, 34,

Mối liên hệ biểu diễn công thức sau : Un = Un-1 + Un-2 Công thức nêu tri thức

Trong vật lý :

Bản sau cho biết số đo điện trở (R), điện (U) cường độ dòng điện (I) mạch điện

(47)

5 10 2

2.5 20 8

4 12 3

7.3 14.6 2

Bản thân số cột khơng có ý nghĩa ta tách rời Nhưng đặt kế nhau, chúng cho thấy có liên hệ Và mối liên hệ diễn tả cơng thức đơn giản sau :

Công thức tri thức

Trong sống hàng ngày :

Hằng ngày, người nông dân quan sát thấy tượng nắng, mưa, râm chuồn chuồn bay Rất nhiều lần quan sát, họ có nhận xét sau :

Chuồn chuồn bay thấp mưa, bay cao nắng, bay vừa râm

Lời nhận xét tri thức

Có quan điểm cho mối liên hệ tường minh (có thể chứng minh được) liệu xem tri thức Còn mối quan hệ khơng tường minh khơng cơng nhận Ở đây, ta quan niệm rằng, mối liên hệ liệu xem tri thức, vì, mối liên hệ thực tồn Điểm khác biệt chưa phát mà thơi Rõ ràng "dù trái đất xoay quanh mặt trời" dù tri thức có Galilê phát hay không!

Như vậy, so với liệu tri thức có số lượng nhiều Thuật ngữ khơng chỉ đơn giản dấu nhỏ bình thường mà kết tinh đọng lại Bạn hình dung liệu điểm mặt phẳng cịn tri thức phương trình của đường cong nối tất điểm lại Chỉ cần phương trình đường cong ta có thể biểu diễn vô số điểm! Cũng vậy, cần có kinh nghiệm, nhận xét từ hàng đống số liệu thống kê, không, ngập chìm biển thơng tin nhà bác học Karan Sing cảnh báo!

(48)

Tri thức kiện : khẳng định kiện, khái niệm (trong

phạm vi xác định) Các định luật vật lý, toán học, thường xếp vào loại (Chẳng hạn : mặt trời mọc đằng đông, tam giác có góc 600, )

Tri thức thủ tục : thường dùng để diễn tả phương pháp, bước cần tiến hành, trình

từ hay ngắn gọn cách giải vấn đề Thuật toán, thuật giải dạng tri thức thủ tục

Tri thức mô tả : cho biết đối tượng, kiện, vấn đề, khái niệm, thấy, cảm

nhận, cấu tạo (một bàn thường có chân, người có tay, mắt, )

Tri thức Heuristic : dạng tri thức cảm tính Các tri thức thuộc loại thường

có dạng ước lượng, đốn, thường hình thành thơng qua kinh nghiệm Trên thực tế, có trí tuệ mà khơng cần đến tri thức (liệu có đại kiện tướng cờ vua mà đánh cờ cờ quan trọng không?) Tuy tri thức không định thông minh (người biết nhiều định lý toán chưa giải toán giỏi hơn!) yếu tố cấu thành trí thơng minh Chính vậy, muốn xây dựng trí thơng minh nhân tạo, ta cần phải có yếu tố Từ đặt vấn đề … Các phương pháp đưa tri thức vào máy tính gọi biểu diễn tri thức

III THUẬT TOÁN – MỘT PHƯƠNG PHÁP BIỄU DIỄN TRI THỨC?

Trước trả lời câu hỏi trên, bạn thử nghĩ xem, liệu chương trình giải phương trình bậc xem chương trình có tri thức hay khơng? Có ! Vậy tri thức nằm đâu? Tri thức giải phương trình bậc hai thực chất mã hóa dưới dạng câu lệnh if then else chương trình Một cách tổng quát, khẳng định tất chương trình máy tính nhiều có tri thức Đó tri thức của lập trình viên chuyển thành câu lệnh chương trình Bạn thắc mắc "như

vậy đưa tri thức vào máy tính lại vấn đề ? (vì từ trước tới đã, đang tiếp tục làm mà?)" Đúng thật, vấn đề nằm chỗ, tri

thức chương trình truyền thống tri thức "cứng", nghĩa khơng thể thêm vào hay điều chỉnh chương trình biên dịch Muốn điều chỉnh phải tiến hành sửa lại mã nguồn chương trình (rồi sau biên dịch lại) Mà thao tác sửa chương trình có lập trình viên làm Điều làm giảm khả ứng dụng chương trình (vì đa số người dùng bình thường khơng biết lập trình)

Bạn thử nghĩ xem, với chương trình hỗ trợ định (như đầu tư cổ phiếu, đầu tư bất động sản chẳng hạn), liệu người dùng có cảm thấy thoải mái khơng muốn đưa vào chương trình kiến thức phải chọn hai cách (1) tự

sửa lại mã chương trình!? (2) tìm tác giả chương trình để nhờ người sửa lại!?

(49)

Để làm điều này, cần phải "mềm" hóa tri thức biểu diễn máy tính Xét cho cùng, chương trình máy tính gồm hai thành phần mã lệnh liệu Mã lệnh ví phần cứng chương trình cịn liệu xem phần mềm (vì thay đổi người dùng) Do đó, "mềm" hóa tri thức đồng nghĩa với việc tìm phương pháp để biểu diễn loại tri thức

của người cấu trúc liệu mà máy tính xử lý Đây

là ý nghĩa thuật ngữ "biểu diễn tri thức"

Bạn cần phải biết rằng, thời điểm bạn đọc sách này, người chưa thể tìm kiểu biểu diễn tổng quát cho loại tri thức!

Để làm vấn đề mà bàn luận trở nên sáng tỏ Chúng ta xem xét số toán phần

IV LÀM QUEN VỚI CÁCH GIẢI QUYẾT VẤN ĐỀ BẰNG CÁCH CHUYỂN GIAO TRI THỨC CHO MÁY TÍNH

Bài tốn : Cho hai bình rỗng X Y tích VX VY, dùng hai

bình để đong z lít nước (z <= min(VX,VY))

Bài tốn : Cho biết số yếu tố tam giác (như chiều dài cạnh góc, ) Hãy

tính yếu tố cịn lại

Bài tốn : Tính diện tích phần giao hình hình học

Hai tốn đầu hai toán tiêu biểu, thường dùng để minh họa cho nét đẹp phương pháp giải vấn đề toán cách chuyển giao tri thức cho máy tính Nếu sử dụng thuật tốn thơng thường, thường giải số trường hợp cụ thể tốn Thậm chí, nhiều người tiếp cận với toán cịn khơng tin hồn tồn giải cách tổng quát máy tính! Bài toán số minh họa đẹp mắt cho kỹ thuật giải vấn đề "vĩ mô", nghĩa ta cần mô tả bước giải mức tổng qt cho máy tính mà khơng cần vào cài đặt cụ thể

Bài toán giải cách sử dụng luật dẫn xuất (luật sinh) Bài toán giải mạng ngữ nghĩa toán giải công cụ frame Ở tìm hiểu cách giải tốn Hai toán giải mục sau

Với trường hợp cụ thể toán 1, VX = VY = z = Sau thời gian tính tốn, bạn đưa quy trình đổ nước :

Múc đầy bình 7

(50)

Đổ bình 5

Đổ cịn lại từ bình sang bình 5 Múc đầy bình 7

Trút hết qua bình bình đầy Phần cịn lại số nước cần đong

Tuy nhiên, với số liệu khác, bạn phải "mày mị" lại từ đầu để tìm quy trình đổ nước Cứ thế, trường hợp có cách đổ nước hồn tồn khác Như vậy, có yêu cầu bạn đưa cách làm tổng qt bạn lúng túng (dĩ nhiên, ngoại trừ trường hợp bạn biết trước cách giải theo tri thức mà sửa tìm hiểu đây!)

Đến đây, bạn bình tâm kiểm lại cách thức bạn tìm kiếm lời giải cho trường hợp cụ thể Vì chưa tìm quy tắc cụ thể nào, bạn thực loạt thao tác "cảm tính" đong đầy bình, trút bình sang bình kia, đổ bình vừa làm vừa nhẩm tính xem cách làm đến kết hay khơng Sau nhiều lần thí nghiệm, bạn rút số kinh nghiệm "khi bình đầy nước

mà bình chưa đầy đổ sang bình bình đầy" Vậy

bạn lại khơng thử "truyền" kinh nghiệm cho máy tính máy tính "mày mị" tìm thao tác cho chúng ta? Điều hồn tồn có lợi, máy tính có khả "mày mị" hẳn chúng ta! Nếu "kinh nghiệm" mà cung cấp cho máy tính khơng giúp tìm lời giải, thay kinh nghiệm khác lại tiếp tục để máy tính tìm kiếm lời giải!

Chúng ta phát biểu lại tốn cách hình thức Khơng làm tính tổng qt, ta ln giả sử VX<VY Gọi lượng nước chứa bình X x (0<=x<=VX)

Gọi lượng nước chứa bình Y y (0<=y<=VY) Như vậy, điều kiện kết thúc toán :

x = z y = z

Điều kiện đầu toán : x = y=0

(51)

xét luật kế tiếp, hết luật, quay trở lại luật Quá trình tiếp diễn đạt điều kiện kết thúc tốn

Ba luật mơ tả sau :

(L1) Nếu bình X đầy đổ bình X (L2) Nếu bình Y rỗng đổ đầy nước vào bình Y

(L3) Nếu bình X khơng đầy bình Y khơng rỗng trút nước t? bình Y sang bình X (cho đến bình X đầy bình Y hết nước)

Trên thực tế, lúc đầu để giải trường hợp tổng quát toán này, người ta dùng đến 15 luật (kinh nghiệm) khác Tuy nhiên, sau này, người ta rút gọn lại luật

Bạn dễ dàng chuyển đổi cách giải thành chương trình sau :

x := 0; y := 0;

WHILE ( (x <> z) AND (y<>z) ) DO BEGIN IF (x = Vx) THEN x := 0;

IF (y = 0) THEN (y:= Vy); IF (y > 0) THEN BEGIN k:= min(Vx - x, y); x := x + k;

y := y - k; END;

END;

Thử "chạy" chương trình với số liệu cụ thể :

Vx = 3, Vy = z = 2

(52)

Luật (L3) -> x = 3, y = Luật (L1) -> x = 0, y = Luật (L3) -> x = 1, y = Luật (L2) -> x = 1, y = Luật (L3) -> x = 3, y = 2

3 luật mà cài đặt chương trình gọi sở tri thức Cịn cách thức tìm kiếm lời giải cách duyệt luật áp dụng gọi

động suy diễn Chúng ta định nghĩa xác hai thuật ngữ cuối mục Người ta chứng minh rằng, tốn đong nước có lời giải số nước cần đong bội số ước số chung lớn thể tích hai bình

z = n  USCLN(VX, VY) (với n nguyên dương)

Cách giải vấn đề theo kiểu khác so với cách giải thuật tốn thơng thường là khơng đưa trình tự giải vấn đề cụ thể mà đưa quy tắc chung chung (dưới dạng luật), máy tính dựa vào (áp dụng luật) để tự xây

dựng quy trình giải vấn đề Điều giống việc giải toán

bằng cách đưa định lý, quy tắc liên quan đến tốn mà khơng cần phải cách giải cụ thể

Vậy điểm thú vị nằm điểm nào? Bạn cảm thấy dùng tri thức "cứng" ! (vì tri thức câu lệnh IF cài sẵn chương trình) Thực chương trình "mềm" tí Nếu khơng tin, bạn quan sát phiên chương trình

FUNCTION DK(L INTEGER):BOOLEAN; BEGIN

CASE L OF

1 : DK := (x = Vx); : DK := (y = 0); : DK := (y>0); END;

END;

(53)

BEGIN CASE L OF : x := 0; 2: y := Vy; : BEGIN

k := min(Vx-x,y); x := x+k;

y := y-k; END; END; END;

CONST SO_LUAT = 3; BEGIN

WHILE (x<>z) AND (y<>z) DO BEGIN FOR i:=1 TO SO_LUAT DO

IF DK(L) THEN ThiHanh(L); END;

END

Đoạn chương trình thi hành cách xét qua lệnh IF chương trình Tuy nhiên, đây, biểu thức điều kiện thay hàm DK hành động ứng với điều kiện thay thủ tục ThiHanh Tính chất "mềm" chương trình thể chỗ, muốn bổ sung "tri thức", ta phải điều chỉnh lại hàm DK ThiHanh mà không cần phải sửa lại chương trình chính. Bây giả sử ta có hàm thủ tục đặc biệt sau :

(54)

hàm GiaTriBool nhận vào chuỗi điều kiện, phân tích chuỗi, tính tốn trả giá trị BOOLEAN biểu thức

Ví dụ : GiaTriBoolean(‘6<7’) trả FALSE

Thủ tục ThucHien nhận vào chuỗi, phân tích chuỗi tiến hành thực hành động miêu tả chuỗi

Với hàm thủ tục này, chương trình sau :

CONST SO_LUAT = 3; TYPE

Luat RECORD DK : String; ThiHanh : String; END;

DSLuat ARRAY [1 SO_LUAT] OF Luat; 9; VAR

CacLuat DSLuat; PROCEDURE KhoiDong; BEGIN

CacLuat[1].DK := ‘x = Vx’; CacLuat[2].DK := ‘y = 0’; CacLuat[3].DK := ‘y>0’; 9; CacLuat[1].ThaoTac := ‘x:=0’; CacLuat[2].ThaoTac:= ‘y:=Vy’;

CacLuat[3].ThaoTac:= ‘k:=min(Vx-x,y), x:=x+k, y:=y-k’; END;

BEGIN

(55)

FOR i:=1 TO SO_LUAT DO

IF GiaTriBoolean(CacLuat[i].DK) THEN ThucHien(CacLuat[i].ThaoTac); END;

END.

Chúng ta tạm cho trình chương trình thi hành, ta dễ dàng thay đổi số phần tử mảng CacLuat (các ngơn ngữ lập trình sau Visual C++, Delphi cho phép điều này) Với chương trình này, muốn sửa đổi "tri thức", bạn cần thay đổi giá trị mảng Luat xong

Tuy nhiên, người dùng gặp khó khăn muốn bổ sung hiệu chỉnh tri thức Họ cần phải nhập chuỗi ‘x=0’ ‘k:=min(Vx-x,y)’ Các chuỗi này, có ý nghĩa chương trình cịn xa lạ người dùng bình thường Chúng ta cần giảm bớt "khoảng cách" lại cách đưa chuỗi điều kiện hoặc thao tác có ý nghĩa trực tiếp người dùng Chương trình có chuyển đổi lại điều kiện thao tác sang dạng phù hợp với chương trình

Để làm điều Chúng ta cần phải liệt kê trạng thái thao tác toán Sau số trạng thái thao tác

Trạng thái :

Bình X đầy, Bình X rỗng, Bình X khơng rỗng, Bình X có n lít nước

Thao tác

Đổ bình, Đổ đầy nước bình, Đổ nước từ bình A sang bình B B đầy A rỗng

Lưu ý ta khơng thể có thao tác "Đổ n lít nước từ A sang B" tốn giả định bình khơng có vạch chia, ta biết cách đổ n lít nước từ A sang B lời giải tốn trở thành đơn giản

"Múc đầy X"

"Đổ z lít nước từ X sang Y"

Vì tốn đơn giản nên bạn dễ nhận thấy rằng, trạng thái thao tác chẳng có khác so với điều kiện mà đưa

(56)

hành chuyển sang dạng máy tính xử lý ví dụ Chúng ta khơng bàn đến việc cài đặt đoạn chương trình giao tiếp với người dùng

Như vậy, so với chương trình truyền thống (được cấu tạo từ hai "chất liệu"

liệu thuật tốn), chương trình trí tuệ nhân tạo cấu tạo từ hai thành phần sở tri thức (knowledge base) động suy diễn (inference engine)

Cơ sở tri thức : tập hợp tri thức liên quan đến vấn đề mà chương trình quan tâm

giải

Động suy diễn : phương pháp vận dụng tri thức sở tri thức để giải quyết

vấn đề

Nếu xét theo quan niệm biểu diễn tri thức mà ta vừa bàn luận sở tri thức dạng liệu đặc biệt động suy diễn dạng thuật tốn đặc biệt mà thơi Tuy vậy, nói rằng, sở tri thức động suy diễn bước tiến hóa liệu thuật tốn chương trình! Bạn hình dung động suy

diễn giống loại động tổng quát, chuẩn hóa dùng để vận hành

(57)

Cơ sở tri thức gặp phải vấn đề tương tự sở liệu khác trùng lắp, thừa, mâu thuẫn Khi xây dựng sở tri thức, ta phải ý đến yếu tố Như vậy, bên cạnh vấn đề biểu diễn tri thức, ta phải đề phương pháp để loại bỏ tri thức trùng lắp, thừa mâu thuẫn Những thao tác thực trình ghi nhận tri thức vào hệ thống Chúng ta đề cập đến phương pháp phần tìm hiểu luật dẫn

Hình ảnh tóm tắt cho thấy cấu trúc chung chương trình trí tuệ nhân tạo

B CÁC PHƯƠNG PHÁP BIỄU DIỄN TRI THỨC TRÊN MÁY TÍNH V LOGIC MỆNH ĐỀ

Đây có lẽ kiểu biểu diễn tri thức đơn giản gần gũi Mệnh đề khẳng định, phát biểu mà giá trị là sai

Ví dụ :

phát biểu "1+1=2" có giá trị

phát biểu "Mọi loại cá sống bờ" có giá trị sai

Giá trị mệnh đề không phụ thuộc vào thân mệnh đề Có mệnh đề mà giá trị ln sai bất chấp thời gian có mệnh đề mà giá trị lại phụ thuộc vào thời gian, khơng gian nhiều yếu tố khác quan khác Chẳng hạn mệnh đề : "Con người nhảy cao 5m với chân trần" trái đất , cịn hành tinh có lực hấp dẫn yếu sai

Ta ký hiệu mệnh đề chữ la tinh a, b, c,

Có phép nối để tạo mệnh đề từ mệnh đề sở phép hội ( ), giao( ) phủ định ( )

Bạn đọc chắn hẳn sử dụng logic mệnh đề chương trình nhiều lần (như cấu trúc lệnh IF THEN ELSE) để biểu diễn tri thức "cứng" máy tính !

Bên cạnh thao tác tính giá trị mệnh đề phức từ giá trị mệnh đề con, có chế suy diễn sau :

Modus Ponens : Nếu mệnh đề A mệnh đề A B giá trị B

Modus Tollens : Nếu mệnh đề A B mệnh đề B sai giá trị A

(58)

Các phép toán suy luận mệnh đề đề cập nhiều đến tài liệu tốn nên khơng vào chi tiết

VI LOGIC VỊ TỪ

Biểu diễn tri thức mệnh đề gặp phải trở ngại ta can thiệp vào cấu trúc mệnh đề Hay nói cách khác mệnh đề khơng có cấu trúc Điều làm hạn chế nhiều thao tác suy luận Do đó, người ta đưa vào khái niệm vị từ lượng từ ( - với mọi,  - tồn tại) để tăng cường tính cấu trúc mệnh đề Trong logic vị từ, mệnh đề cấu tạo hai thành phần đối tượng tri thức và mối liên hệ chúng (gọi vị từ) Các mệnh đề biểu diễn dạng :

Vị từ (<đối tượng 1>, <đối tượng 2>, …, <đối tượng n>)

Như để biểu diễn vị trái cây, mệnh đề viết lại thành : Cam có vị Ngọt  Vị (Cam, Ngọt)

Cam có màu Xanh  Màu (Cam, Xanh)

Kiểu biểu diễn có hình thức tương tự hàm ngơn ngữ lập trình, đối tượng tri thức tham số hàm, giá trị mệnh đề kết hàm (thuộc kiểu BOOLEAN)

Với vị từ, ta biểu diễn tri thức dạng mệnh đề tổng quát, mệnh đề mà giá trị xác định thơng qua đối tượng tri thức cấu tạo nên Chẳng hạn tri thức : "A bố B B anh em người A" biểu diễn dạng vị từ sau :

Bố (A, B) = Tồn Z cho : Bố (A, Z) (Anh(Z, B) Anh(B,Z))

Trong trường hợp này, mệnh đề Bố(A,B) mệnh đề tổng quát Như ta có mệnh đề sở :

a) Bố ("An", "Bình") có giá trị (Anh bố Bình) b) Anh("Tú", "Bình") có giá trị (Tú anh Bình)

thì mệnh đề c) Bố ("An", "Tú") có giá trị (An bố Tú)

(59)

thể tính giá trị mệnh đề c Sở dĩ ta khơng thể thể tường minh tri thức "(A bố B) có Z cho (A bố Z) (Z anh em C)" dạng mệnh đề thông thường Chính đặc trưng vị từ cho phép thể tri thức dạng tổng quát

Thêm số ví dụ để bạn thấy rõ khả vị từ :

Câu cách ngơn "Khơng có vật lớn khơng có vật bé nhất!" biểu diễn dạng vị từ sau :

LớnHơn(x,y) = x>y NhỏHơn(x,y) = x<y

 x,  y : LớnHơn(y,x)  x,  y : NhỏHơn(y,x)

Câu châm ngơn "Gần mực đen, gần đèn sáng" hiểu "chơi với bạn xấu ta thành người xấu" biểu diễn vị từ sau :

NgườiXấu (x) =  y : Bạn(x,y) NgườiXấu(y)

Công cụ vị từ nghiên cứu phát triển thành ngơn ngữ lập trình đặc trưng cho trí tuệ nhân tạo Đó ngơn ngữ PROLOG Phần đọc thêm chương giới thiệu tổng quan với bạn ngôn ngữ

VII MỘT SỐ THUẬT GIẢI LIÊN QUAN ĐẾN LOGIC MỆNH ĐỀ

Một vấn đề quan trọng logic mệnh đề chứng minh tính đắn phép suy diễn (a  b) Đây toán chứng minh thường gặp toán học

Rõ ràng với hai phép suy luận logic mệnh đề (Modus Ponens, Modus Tollens) cộng với phép biến đổi hình thức, ta chứng minh phép suy diễn Tuy nhiên, thao tác biến đối hình thức khó cài đặt máy tính Thậm chí điều cịn khó khăn với người!

Với cơng cụ máy tính, bạn cho ta dễ dàng chứng minh tốn phương pháp "thơ bạo" lập bảng chân trị Tuy lý thuyết, phương pháp lập bảng chân trị cho kết cuối độ phức tạp phương pháp lớn, O(2n) với n số biến mệnh đề Sau nghiên cứu hai phương pháp chứng minh mệnh đề với độ phức tạp có O(n)

VII.1 Thuật giải Vương Hạo

(60)

GT1, GT2, , GTn  KL1, KL2, , KLm

Trong GTi KLi mệnh đề xây dựng từ biến mệnh đề phép nối :  ,  , 

B2 : Chuyển vế GTi KLi có dạng phủ định Ví dụ :

p  q,  (r  s),  g, p  r  s,  p  p  q, p  r, p  (r  s), g, s

B3 : Nếu GTi có phép  thay phép  dấu ","

Nếu KLi có phép  thay phép  dấu ","

Ví dụ :

p  q, r  ( p  s)   q,  s  p, q, r,  p  s   q,  s

B4 : Nếu GTi có phép  tách thành hai dịng

Nếu KLi có phép  tách thành hai dịng Ví dụ :

p,  p  q  q p,  p  q p, q  q

B5 : Một dòng chứng minh tồn chung mệnh đề ở hai phía Ví dụ :

p, q  q chứng minh p,  p  q  p p, q

B6 :

(61)

b) Một vấn đề chứng minh tất dòng dẫn xuất từ dạng chuẩn ban đầu chứng minh

VII.2 Thuật giải Robinson

Thuật giải hoạt động dựa phương pháp chứng minh phản chứng Phương pháp chứng minh phản chứng

Chứng minh phép suy luận (a  b) (với a giả thiết, b kết luận) Phản chứng : giả sử b sai suy  b

Bài toán chứng minh a  b sinh mâu thuẫn

B1 : Phát biểu lại giả thiết kết luận vấn đề dạng chuẩn sau :

GT1, GT2, ,GTn  KL1, KL2, , KLm

Trong : GTi KLj xây dựng từ biến mệnh đề phép toán :  ,  , 

B2 : Nếu GTi có phép  thay dấu ","

Nếu KLi có phép  thay dấu ","

B3 : Biến đổi dòng chuẩn B1 thành danh sách mệnh đề sau :

{ GT1, GT2, , GTn ,  KL1,  KL2, ,  KLm }

B4 : Nếu danh sách mệnh đề bước có mệnh đề đối ngẫu tốn

được chứng minh Ngược lại chuyển sang B4 (a  a gọi hai mệnh đề đối ngẫu nhau)

B5 : Xây dựng mệnh đề cách tuyển cặp mệnh đề danh sách

mệnh đề bước Nếu mệnh đề có biến mệnh đề đối ngẫu biến loại bỏ

Ví dụ : &#p   q   r  s  q

Hai mệnh đề  q, q đối ngẫu nên loại bỏ  p   r  s

(62)

{ p   q ,  r  s  q , w  r, s  q }  { p   r  s , w  r, s  q }

B7 : Nếu không xây dựng thêm mệnh đề danh sách mệnh đề

khơng có mệnh đề đối ngẫu vấn đề khơng chứng minh

Ví dụ : Chứng minh rằng

 p  q,  q  r,  r  s,  u   s   p,  u

B3: {  p  q,  q  r,  r  s,  u   s, p, u }

B4 : Có tất mệnh đề chưa có mệnh đề đối ngẫu

B5 :  tuyển cặp mệnh đề (chọn hai mệnh đề có biến đối ngẫu) Chọn hai mệnh đề

đầu :

p  q   q  r   p  r Danh sách mệnh đề thành :

{ p  r ,  r  s,  u   s, p, u } Vẫn chưa có mệnh đề đối ngẫu Tuyển hai cặp mệnh đề  p  r   r  s   p  s

Danh sách mệnh đề thành { p  s,  u   s, p, u } Vẫn chưa có hai mệnh đề đối ngẫu

Tuyển hai cặp mệnh đề  p  s  u   s   p   u

Danh sách mệnh đề thành : { p   u, p, u } Vẫn chưa có hai mệnh đề đối ngẫu

(63)

Danh sách mệnh đề trở thành : { p, p }

Có hai mệnh đề đối ngẫu nên biểu thức ban đầu chứng minh

VIII BIỂU DIỄN TRI THỨC SỬ DỤNG LUẬT DẪN XUẤT (LUẬT SINH)

VIII.1 Khái niệm

Phương pháp biểu diễn tri thức luật sinh phát minh Newell Simon lúc hai ông cố gắng xây dựng hệ giải toán tổng quát Đây kiểu biểu diễn tri thức có cấu trúc Ý tưởng tri thức cấu trúc cặp

điều kiện – hành động : "NẾU điều kiện xảy THÌ hành động thi hành"

Chẳng hạn : NẾU đèn giao thơng đỏ THÌ bạn khơng thẳng, NẾU máy tính mở mà khơng khởi động THÌ kiểm tra nguồn điện, …

Ngày nay, luật sinh trở nên phổ biến áp dụng rộng rãi nhiều hệ thống trí tuệ nhân tạo khác Luật sinh cơng cụ mô tả để giải vấn đề thực tế thay cho kiểu phân tích vấn đề truyền thống Trong trường hợp này, luật dùng dẫn (tuy khơng hồn chỉnh) hữu ích để trợ giúp cho định q trình tìm kiếm, từ làm giảm khơng gian tìm kiếm Một ví dụ khác luật sinh dùng để bắt chước hành vi chuyên gia Theo cách này, luật sinh không đơn kiểu biểu diễn tri thức máy tính mà kiểu biễu diễn hành vi người

Một cách tổng quát luật sinh có dạng sau :

P1  P2   Pn  Q

Tùy vào vấn đề quan tâm mà luật sinh có ngữ nghĩa hay cấu tạo khác :

Trong logic vị từ : P1, P2, , Pn, Q biểu thức logic Trong ngơn ngữ lập trình, luật sinh câu lệnh

IF (P1 AND P2 AND AND Pn) THEN Q

Trong lý thuyết hiểu ngôn ngữ tự nhiên, luật sinh phép dịch : ONE 

TWO  hai

(64)

Để biễu diễn tập luật sinh, người ta thường phải rõ hai thành phần sau : (1) Tập kiện F(Facts)

F = { f1, f2, fn }

(2) Tập quy tắc R (Rules) áp dụng kiện dạng sau : f1 ^ f2 ^ ^ fi  q

Trong đó, fi , q thuộc F

Ví dụ : Cho sở tri thức xác định sau : Các kiện : A, B, C, D, E, F, G, H, K

Tập quy tắc hay luật sinh (rule) R1 : A  E

R2 : B  D R3 : H  A R4 : E  G  C R5 : E  K  B R6 : D  E  K  C R7 : G  K  F  A

VIII.2 Cơ chế suy luận luật sinh

Suy diễn tiến : trình suy luận xuất phát từ số kiện ban đầu, xác định

sự kiện "sinh" từ kiện

Sự kiện ban đầu : H, K

(65)

R6 : D  E  K  C { A, B, C, D, E, H, K }

Suy diễn lùi : trình suy luận ngược xuất phát từ số kiện ban đầu, ta tìm

kiếm kiện "sinh" kiện Một ví dụ thường gặp thực tế xuất phát từ tình trạng máy tính, chẩn đốn xem máy tính bị hỏng hóc đâu Ví dụ :

Tập kiện :

 Ổ cứng "hỏng" hay "hoạt động bình thường"  Hỏng hình

 Lỏng cáp hình

 Tình trạng đèn ổ cứng "tắt" "sáng"  Có âm đọc ổ cứng

 Tình trạng đèn hình "xanh" "chớp đỏ"  Khơng sử dụng máy tính

 Điện vào máy tính "có" hay "khơng"

Tập luật :

R1 Nếu ( (ổ cứng "hỏng") (cáp hình "lỏng")) khơng sử dụng máy tính

R2 Nếu (điện vào máy "có") ( (âm đọc ổ cứng "không") tình trạng đèn ổ cứng "tắt")) (ổ cứng "hỏng")

R3 Nếu (điện vào máy "có") (tình trạng đèn hình "chớp đỏ") (cáp hình "lỏng")

(66)

Như để xác định nguyên nhân gây hỏng hóc ổ cứng hỏng hay cáp hình lỏng, hệ thống phải vào nhánh để kiểm tra điều kiện điện vào máy "có", âm ổ cứng "không"…Tại bước, giá trị cần xác định suy từ luật nào, hệ thống yêu cầu người dùng trực tiếp nhập vào Chẳng hạn để biết máy tính có điện khơng, hệ thống hình câu hỏi "Bạn kiểm tra xem có điện vào máy tính khơng (kiểm tra đèn nguồn)? (C/K)" Để thực chế suy luận lùi, người ta thường sử dụng ngăn xếp (để ghi nhận lại nhánh chưa kiểm tra)

VIII.3 Vấn đề tối ưu luật

Tập luật sở tri thức có khả thừa, trùng lắp mâu thuẫn Dĩ nhiên hệ thống đổ lỗi cho người dùng việc đưa vào hệ thống tri thức Tuy việc tối ưu sở tri thức mặt tổng quát thao tác khó (vì tri thức thường có quan hệ khơng tường minh), giới hạn sở tri thức dạng luật, ta có số thuật tốn đơn giản để loại bỏ vấn đề

VIII.3.1 Rút gọn bên phải

Luật sau hiển nhiên :

A  B  A (1)

Do luật A  B  A  C

(67)

A  B  C

Quy tắc rút gọn : Có thể loại bỏ kiện bên vế phải kiện xuất

hiện bên vế trái Nếu sau rút gọn mà vế phải trở thành rỗng luật luật hiển nhiên Ta loại bỏ luật hiển nhiên khỏi tri thức

VIII.3.2 Rút gọn bên trái

Xét luật :

(L1) A, B  C (L2) A  X (L3) X  C

Rõ ràng luật A, B  C thay luật A  C mà không làm ảnh hưởng đến kết luận trường hợp Ta nói kiện B luật (1) dư thừa loại bỏ khỏi luật dẫn

VIII.3.3 Phân rã kết hợp luật

Luật A  B  C

Tương đương với hai luật A  C

B  C

Với quy tắc này, ta loại bỏ hồn tồn luật có phép nối HOẶC Các luật có phép nối thường làm cho thao tác xử lý trở nên phức tạp

VIII.3.4 Luật thừa

Một luật dẫn A  B gọi thừa suy luật từ luật cịn lại Ví dụ : tập luật gồm {A  B, B  C, A  C} luật thứ luật thừa suy từ luật cịn lại

VIII.3.5 Thuật tốn tối ưu tập luật dẫn

Thuật tốn tối ưu hóa tập luật cho cách loại luật có phép nối HOẶC, luật hiển nhiên luật thừa

(68)

B1 : Rút gọn vế phải Với luật r R

Với kiện A  VếPhải(r)

Nếu A  VếTrái(r) Loại A khỏi vế phải R

Nếu VếPhải(r) rỗng loại bỏ r khỏi hệ luật dẫn : R = R – {r} B2 : Phân rã luật

Với luật r : X1  X2  …  Xn  Y R Với i từ đến n R := R + { Xi  Y } R := R – {r}

B3 : Loại bỏ luật thừa Với luật r thuộc R

Nếu VếPhải(r)  BaoĐóng(VếTrái(r), R-{r}) R := R – {r} B4 : Rút gọn vế trái

Với luật dẫn r : X : A1  A2, …, An  Y thuộc R Với kiện Ai thuộc r

Gọi luật r1 : X – Ai  Y S = ( R – {r} )  {r1}

Nếu BaoĐóng( X – Ai , S)  BaoĐóng(X, R) loại kiện A khỏi X

VIII.4 Ưu điểm nhược điểm biểu diễn tri thức luật

Ưu điểm

Biểu diễn tri thức luật đặc biệt hữu hiệu tình hệ thống cần đưa hành động dựa vào kiện quan sát Nó có ưu điểm yếu sau :

Các luật dễ hiểu nên dễ dàng dùng để trao đổi với người dùng (vì dạng tự nhiên ngơn ngữ)

(69)

Việc hiệu chỉnh bảo trì hệ thống tương đối dễ dàng Có thể cải tiến dễ dàng để tích hợp luật mờ

Các luật thường phụ thuộc vào

Nhược điểm

Các tri thức phức tạp đôi lúc đòi hỏi nhiều (hàng ngàn) luật sinh Điều làm nảy sinh nhiều vấn đề liên quan đến tốc độ lẫn quản trị hệ thống

Thống kê cho thấy, người xây dựng hệ thống trí tuệ nhân tạo thích sử dụng luật sinh tất phương pháp khác (dễ hiểu, dễ cài đặt) nên họ thường tìm cách để biểu diễn tri thức luật sinh cho dù có phương pháp khác thích hợp hơn! Đây nhược điểm mang tính chủ quan người

Cơ sở tri thức luật sinh lớn làm giới hạn khả tìm kiếm chương trình điều khiển Nhiều hệ thống gặp khó khăn việc đánh giá hệ dựa luật sinh gặp khó khăn suy luận luật sinh

X BIỄU DIỄN TRI THỨC SỬ DỤNG MẠNG NGỮ NGHĨA

X.1 Khái niệm

Mạng ngữ nghĩa phương pháp biểu diễn tri thức phương pháp dễ hiểu Phương pháp biểu diễn tri thức dạng đồ thị, đỉnh đối tượng (khái niệm) cung cho biết mối quan hệ đối tượng (khái niệm)

Chẳng hạn : khái niệm chích chịe, chim, hót, cánh, tổ có số mối quan hệ sau :

Chích chịe lồi chim Chim biết hót

Chim có cánh Chim sống tổ

(70)

Do mạng ngữ nghĩa loại đồ thị thừa hưởng tất mặt mạnh công cụ Nghĩa ta dùng thuật tốn đồ thị mạng ngữ nghĩa thuật tốn tìm liên thơng, tìm đường ngắn nhất,… để thực chế suy luận Điểm đặc biệt mạng ngữ nghĩa so với đồ thị thơng thường việc gán ý nghĩa (có, làm, là, biết, ) cho cung Trong đồ thị tiêu chuẩn, việc có cung nối hai đỉnh cho biết có liên hệ hai đỉnh tất cung đồ thị biểu diễn cho loại liên hệ Trong mạng ngữ nghĩa, cung nối hai đỉnh cho biết hai khái niệm tương ứng có liên hệ Việc gán ngữ nghĩa vào cung đồ thị giúp giảm bớt số lượng đồ thị cần phải dùng để biễu diễn mối liên hệ khái niệm Chẳng hạn ví dụ trên, sử dụng đồ thị thông thường, ta phải dùng đến loại đồ thị cho mối liên hệ : đồ thị để biểu diễn mối liên hệ "là", đồ thị cho mối liên hệ "làm", cho "biết" cho "có" Một điểm thú vị mạng ngữ nghĩa tính kế thừa Bởi từ khái niệm, mạng ngữ nghĩa hàm ý phân cấp (như mối liên hệ "là") nên có nhiều đỉnh mạng có thuộc tính đỉnh khác Chẳng hạn theo mạng ngữ nghĩa trên, ta dễ dàng trả lời "có" cho câu hỏi : "Chích chịe có làm tổ khơng?" Ta khẳng định điều đỉnh "chích chịe" có liên kết "là" với đỉnh "chim" đỉnh "chim" lại liên kết "biết" với đỉnh "làm tổ" nên suy đỉnh "chích chịe" có liên kết loại "biết" với đỉnh "làm tổ" (Nếu để ý, bạn nhận kiểu "suy luận" mà ta vừa thực bắt nguồn từ thuật tốn "loang" hay "tìm liên thơng" đồ thị!) Chính đặc tính kế thừa mạng ngữ nghĩa cho phép ta thực nhiều phép suy diễn từ thông tin sẵn có mạng

(71)

X.2 Ưu điểm nhược điểm mạng ngữ nghĩa

Ưu điểm

Mạng ngữ nghĩa linh động, ta dễ dàng thêm vào mạng đỉnh cung để bổ sung tri thức cần thiết

Mạng ngữ nghĩa có tính trực quan cao nên dễ hiểu

Mạng ngữ nghĩa cho phép đỉnh thừa kế tính chất từ đỉnh khác thông qua cung loại "là", từ đó, tạo liên kết "ngầm" đỉnh khơng có liên kết trực tiếp với

Mạng ngữ nghĩa hoạt động tự nhiên theo cách thức người ghi nhận thông tin

Nhược điểm

Cho đến nay, chưa có chuẩn quy định giới hạn cho đỉnh cung mạng Nghĩa bạn gán ghép khái niệm cho đỉnh cung!

Tính thừa kế (vốn ưu điểm) mạng dẫn đến nguy mâu thuẫn tri thức Chẳng hạn, bổ sung thêm nút "Gà" vào mạng hình sau ta kết luận "Gà" biết "bay"! Sở dĩ có điều có khơng rõ ràng ngữ nghĩa gán cho nút mạng Bạn đọc phản đối quan điểm cho rằng, việc sinh mâu thuẫn ta thiết kế mạng dở khuyết điểm mạng! Tuy nhiên, xin lưu ý rằng, tính thừa kế sinh nhiều mối liên "ngầm" nên khả nảy sinh mối liên hệ không hợp lệ lớn! Hầu biển diễn tri thức dạng thủ tục mạng ngữ nghĩa khái niệm thời gian trình tự khơng thể tường minh mạng ngữ nghĩa

X.3 Một ví dụ tiêu biểu

Dù phương pháp tương đối cũ có yếu điểm mạng ngữ nghĩavẫn có ứng dụng vơ độc đáo Hai loại ứng dụng tiêu biểu mạng ngữ nghĩa ứng dụng xử lý ngôn ngữ tự nhiên ứng dụng giải tốn tự động

Ví dụ : Trong ứng dụng xử lý ngôn ngữ tự nhiên, mạng ngữ nghĩa giúp máy tính

(72)

Chẳng hạn, câu "Châu đọc sách dày cười khối trá" biểu diễn mạng ngữ nghĩa sau :

Ví dụ : Giải tốn tam giác tổng qt

Chúng ta khơng sâu vào ví dụ vấn đề q phức tạp để trình bày sách Trong ví dụ này, khảo sát vấn đề đơn giản không phần độc đáo Khi học lập trình, bạn thường giáo viên cho tập nhập môn "Cho cạnh tam giác, tính chiều dài

đường cao", "Cho góc a, b cạnh AC Tính chiều dài trung tuyến", Với tập này,

việc bạn cần làm lấy giấy bút tìm cách tính, sau xác định bước tính tốn, bạn chuyển thành chương trình Nếu có 10 bài, bạn phải làm lại việc tính tốn lập trình 10 lần Nếu có 100 bài, bạn phải làm 100 lần Và tin buồn cho bạn số lượng tốn thuộc loại nhiều! Bởi tam giác có tất 22 yếu tố khác nhau! Khơng lẽ lần gặp tốn mới, bạn phải lập trình lại? Liệu có chương trình tổng qt tự động giải tất (vài ngàn!) toán tam giác thuộc loại khơng? Câu trả lời CĨ ! Và ngạc nhiên nữa, chương trình lại đơn giản Bài toán giải mạng ngữ nghĩa

Có 22 yếu tố liên quan đến cạnh góc tam giác Để xác định tam giác hay để xây dựng tam giác ta cần có yếu tố phải có yếu tố cạnh Như có khoảng C322 -1 (khoảng vài ngàn) cách để xây dựng hay xác định tam giác Theo thống kê, có khoảng 200 cơng thức liên quan đến cạnh góc tam giác

Để giải tốn cơng cụ mạng ngữ nghĩa, ta phải sử dụng khoảng 200 đỉnh để chứa công thức khoảng 22 đỉnh để chứa yếu tố tam giác Mạng ngữ nghĩa cho toán có cấu trúc sau :

Đỉnh đồ thị bao gồm hai loại :

 Đỉnh chứa cơng thức (ký hiệu hình chữ nhật)  Đỉnh chứa yếu tố tam giác (ký hiệu hình trịn)

Cung : nối từ đỉnh hình trịn đến đỉnh hình chữ nhật cho biết yếu tố tam giác xuất trong cơng thức (khơng có trường hợp cung nối hai đỉnh hình trịn cung

(73)

* Lưu ý : công thức liên hệ n yếu tố tam giác, ta giả định biết giá trị n-1 yếu tố tính giá trị yếu tố lại Chẳng hạn cơng thức tổng góc tam giác 1800 biết hai góc, ta tính góc cịn lại

Cơ chế suy diễn thực theo thuật toán "loang" đơn giản sau :

B1 : Kích hoạt đỉnh hình trịn cho ban đầu (những

yếu tố có giá trị)

B2 : Lặp lại bước sau kích hoạt tất

đỉnh ứng với yếu tố cần tính khơng thể kích hoạt đỉnh

Nếu đỉnh hình chữ nhật có cung nối với n đỉnh hình trịn

mà n-1 đỉnh hình trịn kích hoạt kích hoạt đỉnh hình trịn cịn lại (và tính giá trị đỉnh cịn lại thơng qua cơng thức đỉnh hình chữ nhật)

Giả sử ta có mạng ngữ nghĩa để giải tốn tam giác hình sau

Ví dụ : "Cho hai góc  chiều dài cạnh a tam giác Tính chiều dài đường cao

hC" Với mạng ngữ nghĩa cho hình Các bước thi hành thuật toán

(74)

Bắt đầu : đỉnh acủa đồ thị kích hoạt

Cơng thức (1) kích hoạt (vìa kích hoạt) Từ cơng thức (1) tính cạnh b Đỉnh b kích hoạt

Cơng thức (4) kích hoạt (vì ) Từ cơng thức (4) tính góc  Cơng thức (2) kích hoạt (vì đỉnh b kích hoạt) Từ cơng thức (2) tính cạnh c Đỉnh c kích hoạt

Cơng thức (3) kích hoạt (vì đỉnh a, b, c kích hoạt) Từ cơng thức (3) tính diện tích S Đỉnh S kích hoạt

Cơng thức (5) kích hoạt (vì đỉnh S, c kích hoạt) Từ cơng thức (5) tính hC Đỉnh hC kích hoạt

Giá trị hC tính Thuật tốn kết thúc

Về mặt chương trình, ta cài đặt mạng ngữ nghĩa giải toán tam giác mảng hai chiều A :

Cột : ứng với cơng thức Mỗi cột ứng với công thức tam giác khác

nhau (đỉnh hình chữ nhật)

Dịng : ứng với yếu tố tam giác Mỗi dòng ứng với yếu tố tam giác

khác (đỉnh hình tròn)

Phần tử A[i, j] = -1 nghĩa cơng thức ứng với cột j có yếu tố tam giác ứng với cột i Ngược lại A[i,j] = 0.

Để thực thao tác "kích hoạt" đỉnh hình trịn, ta đặt giá trị tồn dòng ứng với yếu tố tam giác

Để kiểm tra xem cơng thức có đủ n-1 yếu tố hay chưa (nghĩa kiểm tra điều kiện "đỉnh hình chữ nhật có cung nối với n đỉnh hình trịn mà n-1 đỉnh hình trịn kích

hoạt"), ta việc lấy hiệu tổng số có giá trị tổng số có giá trị -1

cột ứng với công thức cần kiểm tra Nếu kết n, cơng thức có đủ n-1 yếu tố

Trở lại mạng ngữ nghĩa cho Q trình thi hành kích hoạt diễn sau : Mảng biểu diễn mạng ngữ nghĩa ban đầu

(75)

-1 0 0 -1 0

-1 -1 0 -1 0

 0 -1 0 -1 0

a -1 0 -1 0 0

b -1 -1 -1 0 0

c 0 -1 -1 0 -1

S 0 0 -1 0 -1

hC 0 0 0 0 -1

Khởi đầu : đỉnh , a đồ thị kích hoạt

(1) (2) (3) (4) (5)

1 0 0 1 0

1 1 0 1 0

 0 -1 0 -1 0

a 1 0 1 1 0

b -1 -1 -1 0 0

c 0 -1 -1 0 -1

S 0 0 -1 0 -1

hC 0 0 0 0 -1

Trên cột (1), hiệu (1+1+1 – (-1)) = nên dòng b kích hoạt

(1) (2) (3) (4) (5)

(76)

1 1 0 1 0

 0 -1 0 -1 0

a 1 0 1 1 0

b 1 1 1 0 0

c 0 -1 -1 0 -1

S 0 0 -1 0 -1

hC 0 0 0 0 -1

Trên cột (4), hiệu (1+1+1 – (-1)) = nên dịng  kích hoạt

(1) (2) (3) (4) (5)

1 0 0 1 0

1 1 0 1 0

 0 1 0 1 0

a 1 0 1 1 0

b 1 1 1 0 0

c 0 -1 -1 0 -1

S 0 0 -1 0 -1

hC 0 0 0 0 -1

Trên cột (2), hiệu (1+1+1 – (1)) = nên dịng c kích hoạt

(1) (2) (3) (4) (5)

1 0 0 1 0

(77)

 0 1 0 1 0

A 1 0 1 1 0

B 1 1 1 0 0

C 0 1 1 0 1

S 0 0 -1 0 -1

hC 0 0 0 0 -1

Trên cột (3), hiệu (1+1+1 – (-1)) = nên dịng S kích hoạt

(1) (2) (3) (4) (5)

1 0 0 1 0

1 1 0 1 0

 0 1 0 1 0

a 1 0 1 1 0

b 1 1 1 0 0

c 0 1 1 0 1

S 0 0 1 0 1

hC 0 0 0 0 -1

Trên cột (5), hiệu (1+1 – (1)) = nên dịng hC kích hoạt

(78)

trong cơng thức Các phép tính sin, cos rút có độ phức tạp cao nhất, nhân chia cuối cộng trừ Cuối bạn cải tiến lại phương pháp suy luận bằng cách vận dụng thuật toán A với ước lượng h=0 để chọn "đường đi" tối ưu Ta chọn ước lượng h=0 hai lý sau (1) khơng gian tốn nhỏ nên ta khơng cần phải giới hạn độ rộng tìm kiếm (2) xây dựng ước lượng tương đối khó khăn, đặc biệt để hệ thống không đánh giá cao h

XI BIỂU DIỄN TRI THỨC BẰNG FRAME

XI.1 Khái niệm

Frame cấu trúc liệu chứa đựng tất tri thức liên quan đến đối

tượng cụ thể Frames có liên hệ chặt chẽ đến khái niệm hướng đối tượng (thực frame nguồn gốc lập trình hướng đối tượng) Ngược lại với phương pháp biểu diễn tri thức đề cập đến, frame "đóng gói" tồn đối tượng, tình vấn đề phức tạp thành thực thể có cấu trúc Một frame bao hàm khối lượng tương đối lớn tri thức đối tượng, kiện, vị trí, tình yếu tố khác Do đó, frame giúp ta mô tả chi tiết đối tượng

Dưới khía cạnh đó, người ta xem phương pháp biểu diễn tri thức frame nguồn gốc ngơn ngữ lập trình hướng đối tượng Ý tưởng phương pháp "thay bắt người dùng sử dụng công cụ phụ dao mở để đồ hộp, ngày hãng sản xuất đồ hộp thường gắn kèm nắp mở đồ hộp bên vỏ lon Như vậy, người dùng khơng phải lo lắng đến việc tìm thiết bị để mở đồ hộp nữa!" Cũng vậy, ý tưởng frame (hay phương pháp lập trình hướng đối tượng) biểu diễn tri thức, ta "gắn kèm" thao tác thường gặp tri thức Chẳng hạn mô tả khái niệm hình chữ nhật, ta gắn kèm cách tính chu vi, diện tích

Frame thường dùng để biểu diễn tri thức "chuẩn" tri thức xây dựng dựa kinh nghiệm đặc điểm hiểu biết cặn kẽ Bộ não người "lưu trữ" nhiều tri thức chung mà cần, "lấy ra" để vận dụng vấn đề cần phải giải Frame cơng cụ thích hợp để biểu diễn kiểu tri thức

XI.2 Cấu trúc frame

Mỗi frame mô tả đối tượng (object) Một frame bao gồm thành phần

slot facet Một slot thuộc tính đặc tả đối tượng biểu diễn frame Ví dụ

: frame mơ tả xe hơi, có hai slot trọng lượng loại máy

(79)

Value (giá trị) : cho biết giá trị thuộc tính (như xanh, đỏ, tím vàng slot

màu xe)

Default (giá trị mặc định) : hệ thống tự động sử dụng giá trị facet slot

là rỗng (nghĩa chẳng có đặc tả nào!) Chẳng hạn frame xe, xét slot số lượng

bánh Slot có giá trị Nghĩa là, mặc định xe có bánh!

Range (miền giá trị) : (tương tự kiểu biến), cho biết giá trị slot nhận

loại giá trị (như số nguyên, số thực, chữ cái, )

If added : mô tả hành động thi hành giá trị slot thêm

vào (hoặc hiệu chỉnh) Thủ tục thường viết dạng script

If needed : sử dụng slot khơng có giá trị Facet mơ tả hàm để tính

giá trị slot

Frame : XE HƠI

Thuộc lớp : phương tiện vận chuyển.

Tên nhà sản xuất : Audi

Quốc gia nhà sản xuất : Đức Model : 5000 Turbo

Loại xe : Sedan Trọng lượng : 3300lb Số lượng cửa : (default) Hộp số : số tự động Số lượng bánh : (default)

Máy (tham chiếu đến frame Máy) Kiểu : In-line, overhead cam

Số xy-lanh : 5 Khả tăng tốc

0-60 : 10.4 giây

Frame MÁY Xy-lanh : 3.19 inch

Tỷ lệ nén : 3.4 inche

(80)

¼ dặm : 17.1 giây, 85 mph

XI.3 Tính kế thừa

Trong thực tế, hệ thống trí tuệ nhân tạo thường sử dụng nhiều frame liên kết với theo cách Một điểm thú vị frame tính phân cấp Đặc tính cho phép kế thừa tính chất frame

Hình sau cho thấy cấu trúc phân cấp loại hình hình học Gốc tương ứng với mức độ trừu tượng cao Các frame nằm (khơng có frame nào) gọi Những frame nằm mức thấp thừa kế tất tính chất frame cao

Các frame cha cung cấp mô tả tổng quát thực thể Frame có cấp cao mức độ tổng qt cao Thơng thường, frame cha bao gồm định nghĩa thuộc tính Cịn frame chứa đựng giá trị thực thuộc tính

Một ví dụ biểu diễn đối tượng hình học frame

(81)

Perimeter : numberic; //chu vi Side : numeric; //cạnh

Diagonal : numeric; //đường chéo Radius : numeric; //bán kính Angle : numeric; //góc

Diameter : numeric; //đường kính pi : (val:numeric = 3.14159) Frame : CIRCLE (hình trịn) r : radius;

s : area; p : perimeter; d : diameter; d =  r; s = pi  r2; p =  pi  r;

Frame RECTANGLE (hình chữ nhật) b1 : side;

(82)

Frame SQUARE (hình vng) Là : RECTANGLE

b1 = b2;

Frame RHOMBUS (hình thoi) b : side;

d1 : diagonal; d2 : diagonal; s : area; p : perimeter; alpha1 : angle; alpha2 : angle; h : height;

cos (alpha2/2)  d1 = h; s = d1  d2 / 2;

p =  b; s = b  h;

cos (alpha2/2)/(2 b) = d2;

(83)

Dễ thấy rằng, diện tích phần tơ đen hiệu diện tích hình vng diện tích hình trịn nội tiếp Dĩ nhiên bạn viết chương trình bình thường để tính tốn, "tích hợp" tri thức tính diện tích bên biểu diễn, chương trình trở nên gọn nhẹ Bạn lưu ý lệnh in đậm ví dụ dưới Lệnh "đặc tả" lại giả thiết "hình vng có cạnh với chiều dài x", lệnh kế tiếp đặc tả giả thiết "hình trịn nội tiếp", cịn lệnh thứ mơ tả việc tính diện tích cách lấy diện tích hình vng trừ cho diện tích hình trịn

VAR x, s : numeric; k : square; c : circle;

BEGIN

<Nhập x>;

k.b1 := x; c.d := x; s := k.s – c.s; END.

Như vậy, chương trình máy tính hoạt động giống việc "mơ tả" giải tốn ngôn ngữ tự nhiên Hãy nghĩ xa tí Các tốn hình học thường mơ tả ngơn từ xác (chẳng hạn : cho tam giác với chiều cao xuất phát từ đỉnh A 5, chiều dài cạnh đáy 6, ) Do đó, mặt nguyên tác, xây dựng chương trình để "hiểu" đề (theo cách mà vừa làm) Sau đó, người dùng hồn tồn nhờ máy tính giải giúp bài tốn cho cách mơ tả lời giải cho máy tính (chứ khơng cần phải lập trình) Bạn có cảm giác điều thật thú vị khơng? Đây bước việc tạo ra chương trình trợ giúp cho việc giải tốn hình học máy tính với giao tiếp ngơn ngữ tự nhiên!

(84)

XII BIỂU DIỄN TRI THỨC BẰNG SCRIPT

Script cách biểu diễn tri thức tương tự frame thay đặc tả đối tượng, mơ tả chuỗi kiện Để mô tả chuỗi kiện, script sử dụng dãy các slot chứa thông tin người, đối tượng hành động liên quan đến kiện

Tuy cấu trúc script khác tùy theo toán, nhìn chung script thường bao gồm thành phần sau :

Điều kiện vào (entry condition): mô tả tình điều kiện cần

được thỏa mãn trước kiện script diễn

Role (diễn viên): người có liên quan script

Prop (tác tố): tất đối tượng sử dụng chuỗi kiện

diễn

Scene(Tình huống) : chuỗi kiện thực diễn

Result (Kết quả) : trạng thái Role sau script thi hành xong Track (phiên bản) : mô tả biến thể (hoặc trường hợp đặc biệt) xảy

trong đoạn script

Sau ví dụ tiêu biểu cho script Ví dụ biến thể ví dụ tiếng nhà hàng bán thức ăn nhanh (các nhà hàng bán gà rán mà ta thường gặp siêu thị!) thường sử dụng để minh họa cách biểu diễn tri thức script cách sách nói trí tuệ nhân tạo Đi ăn nhà hàng tình thường gặp trong sống với điều kiện vào, diễn viên, tác tố, hoàn cảnh, kết "chuẩn" Và qua script ví dụ, bạn thấy phương pháp dùng để mơ tả xác tình diễn hàng ngày nhà hàng bán thức ăn nhanh Các tình đoạn script đoạn script để mơ tả tình nhỏ tồn q trình Lưu ý đoạn script có tình tùy chọn mơ tả việc khách hàng mua thức ăn thay vào nhà hàng ăn

Script "nhà hàng"

Phiên : Nhà hàng bán thức ăn nhanh Diễn viên : Khách hàng

Người phục vụ

(85)

Chỗ ngồi

Khay đựng thức ăn Thức ăn

Tiền

Các loại gia vị muối, tương, ớt, tiêu,

Điều kiện vào :

Khách hàng đói

Khách hàng có đủ tiền để trả Tình : Vào nhà hàng Khách hàng đậu xe vào bãi đậu xe Khách hàng bước vào nhà hàng

Khách hàng xếp hàng trước bàn phục vụ

Khách hàng đọc thực đơn tường định kêu ăn Tình 2: Kêu ăn

Khách hàng kêu ăn với người phục vụ (đang đứng quầy phục vụ) Người phục vụ đặt thức ăn lên khay đưa hóa đơn tính tiền cho khách Khách hàng trả tiền cho người phục vụ

Tình 3: Khách hàng dùng ăn Khách hàng lấy thêm gia vị

Khách hàng cầm khay đến bàn trống Khách hàng ăn thức ăn

(86)

Tình : Ra Khách hàng thu dọn bàn

Khách hàng bỏ rác (thức ăn thừa, xương, mảng vụn, ) vào thùng rác Khách hàng khỏi nhà hàng

Khách hàng lái xe Kết :

Khách hàng khơng cịn đói

Khách hàng cịn tiền ban đầu Khách hàng vui vẻ *

Khách hàng bực * Khách hàng no

* Tùy chọn

Script hữu dụng việc dự đốn điều xảy đến tình xác định Thậm chí tình chưa diễn ra, script cịn cho phép máy tính dự

đốn việc xảy xảy vào thời điểm Nếu máy tính kích

hoạt script, người dùng đặt câu hỏi hệ thống suy câu trả lời xác mà không cần người dùng cung cấp thêm nhiều thông tin (trong số trường hợp khơng cần thêm thơng tin) Do đó, giống frame, script dạng biểu diễn tri thức tương đối hữu dụng cho phép ta mơ tả xác tình "chuẩn" mà người thực ngày nắm bắt xác

Để cài đặt script máy tính, bạn phải tìm cách lưu trữ tri thức dạng hình thức LISP ngơn ngữ lập trình phù hợp để làm điều Sau cài đặt xong script, bạn (người dùng) đặt câu hỏi người điều kiện có liên quan script Hệ thống sau tiến hành thao tác tìm kiếm thao tác so mẫu để tìm câu trả lời Chẳng hạn bạn đặt câu hỏi "Khách hàng làm trước tiên?" Hệ thống tìm thấy câu trả lời scene đưa đáp án "Đậu xe bước vào nhà hàng"

XIII PHỐI HỢP NHIỀU CÁCH BIỂU DIỄN TRI THỨC

(87)

trữ Do đó, để thỏa mãn mục tiêu trên, chọn phương pháp biểu diễn tri thức, phải cân nhắc số yếu tố sau :

Tính tự nhiên, đồng dễ hiểu biểu diễn tri thức

Mức độ trừu tượng tri thức : tri thức khai báo cụ thể hay nhúng vào hệ thống dạng mã thủ tục?

Tính đơn thể linh động sở tri thức (có cho phép dễ dàng bổ sung tri thức, mức độ phụ thuộc tri thức, )

Tính hiệu việc truy xuất tri thức sức mạnh phép suy luận (theo kiểu heuristic)

Bảng sau cho số ưu khuyết điểm phương pháp biểu diễn tri thức trình bày

P.Pháp Ưu điểm Nhược điểm

Luật sinh Cú pháp đơn giản, dễ hiểu, diễn dịch đơn giản, tính đơn thể cao, linh động (dễ điều chỉnh)

Rất khó theo dõi phân cấp, khơng hiệu hệ thống lớn, biểu diễn loại tri thức, yếu việc biểu diễn tri thức dạng mơ tả, có cấu trúc Mạng ngữ nghĩa Dễ theo dõi phân cấp, dò

theo mối liên hệ, linh động Ngữ nghĩa gắn liền với đỉnh có thểnhập nhằng, khó xử lý ngoại lệ, khó lập trình

Frame Có sức mạnh diễn đạt tốt, dễ cài đặt thuộc tính cho slot mối liên hệ, dễ dàng tạo thủ tục chuyên biệt hóa, dễ đưa vào thông tin mặc định dễ thực thao tác phát giá trị bị thiếu sót

Khó lập trình, khó suy diễn, thiếu phần mềm hỗ trợ

Logic hình thức Cơ chế suy luận xác (được

chứng minh toán học) Tách rời việc biểu diễn xử lý, khônghiệu với lượng liệu lớn, chậm sở liệu lớn

(88)

Một ví dụ kết hợp nhiều kiểu biểu diễn tri thức mà làm quen kiểu kết hợp frame mạng ngữ nghĩa việc trợ giúp giải tốn hình học

Một phối hợp tương đối thành công kết hợp luật sinh frame Luật sinh không đủ hiệu nhiều ứng dụng, đặc biệt tác vụ định nghĩa, mô tả đối tượng mối liên kết tĩnh đối tượng Nhưng yếu điểm lại ưu điểm frame Ngày nay, có nhiều hệ thống tạo kiểu biểu diễn lai luật sinh frame có ưu điểm hai cách biểu diễn Sự thành công hệ thống tiếng KEE, Level5 Object Nexpert Object minh chứng cho điều Frame cung cấp ngôn ngữ cấu trúc hiệu để đặc tả đối tượng xuất luật Frame cịn đóng vai trò lớp hỗ trợ cho thao tác suy diễn đối tượng không cần phải tương tác cách tường minh luật Khả phân lớp frame cịn dùng để phân hoạch, tạo mục xếp luật sinh hệ thống Khả thích hợp cho người dùng việc xây dựng hiểu luật, theo dõi luật sử dụng cho mục

Hình sau cho thấy kiểu kết hợp luật sinh frame Sự kết hợp cho phép tạo luật so mẫu nhằm tăng tốc độ tìm kiếm hệ thống Kết kết hợp cho phép tạo biểu diễn phức tạp nhiều so với việc dùng frame, chí phức tạp việc lập trình trực tiếp ngơn ngữ C++ !!

(89)

Ví dụ kết hợp biểu diễn tri thức luật sinh frame toán điều chế chất hóa học

Vấn đề : Cho trước số chất hóa học Hãy xây dựng chuỗi phản ứng hóa học để

điều chế số chất hóa học khác

Đầu tiên, ứng dụng tự nhiên tri thức biểu diễn dạng luật Lý thân phản ứng hóa học tiêu chuẩn thể dạng luật Chẳng hạn ta có phương trình phản ứng sau :

Na + Cl2  NaCl Fe + Cl2  FeCl2 Cu + Cl2  CuCl2

Cl2 + H2O  HCl + HClO

MnO2 + 4HCl  MnCl2 + Cl2 + H2O

HCl + KMnO4  KCl + MnCl2 + H2O + Cl2 NaCl + H2O  Cl2 + H2 + NaOH

Như vậy, xem chất hóa học kiện phương trình phản ứng luật dẫn tốn điều chế chất hóa học, cách tự nhiên, trở thành toán suy luận tiến sở tri thức dạng luật dẫn

Tuy nhiên, số lượng phản ứng lớn, nên ta sử dụng luật dựa phản ứng cụ thể mà phải sử dụng phản ứng tổng quát :

Axit + Bazơ  Muối + Nước Kiềm + Nước  Xút + H2

(trong hóa học có nhiều phản ứng đặc biệt tổng quát được, trường hợp này, ta xem phản ứng luật riêng!)

(90)(91)

Chương MỞ ĐẦU VỀ QUAN MÁY HỌC

I THẾ NÀO LÀ MÁY HỌC ?

II HỌC BẰNG CÁCH XÂY DỰNG CÂY ĐỊNH DANH

II.1 Đâm chồi

II.2 Phương án chọn thuộc tính phân hoạch II.2.1 Quinlan

II.2.2 Độ đo hỗn loạn II.3 Phát sinh tập luật

II.4 Tối ưu tập luật

II.4.1 Loại bỏ mệnh đề thừa II.4.2 Xây dựng mệnh đề mặc định

I THẾ NÀO LÀ MÁY HỌC ?

Thuật ngữ "học" theo nghĩa thông thường tiếp thu tri thức để biết cách vận dụng Ở ngồi đời, q trì học diễn nhiều hình thức khác học thuộc lòng (học vẹt), học theo kinh nghiệm (học dựa theo trường hợp), học theo kiểu nghe nhìn, Trên máy tính có nhiều thuật tốn học khác Tuy nhiên, phạm vi giáo trình này, khảo sát phương pháp học dựa theo trường hợp Theo phương pháp này, hệ thống cung cấp số trường hợp "mẫu", dựa tập mẫu này, hệ thống tiến hành phân tích rút quy luật (biểu diễn luật sinh) Sau đó, hệ thống dựa luật để "đánh giá" trường hợp khác (thường không giống trường hợp "mẫu") Ngay với kiểu học này, có nhiều thuật tốn học khác Một lần nữa, với mục đích giới thiệu, khảo sát trường hợp đơn giản

Có thể khái qt q trình học theo trường hợp dạng hình thức sau :

Dữ liệu cung cấp cho hệ thống ánh xạ f ứng trường hợp p tập hợp P với "lớp" r tập R

(92)

p  r

Tuy nhiên, tập P thường nhỏ (và hữu hạn) so với tập tất trường hợp cần quan tâm

P’ (P  P’) Mục tiêu xây dựng ánh xạ f ’ cho ứng trường

hợp p’ tập P’ với "lớp" r tập R Hơn nữa, f ’ phải bảo toàn f, nghĩa : Với p  P f(p)  f ’(p)

Hình 3.1 : Học theo trường hợp tìm cách xây dựng ánh xạ f’ dựa theo ánh xạ f f gọi tập mẫu

Phương pháp học theo trường hợp phương pháp phổ biến nghiên cứu khoa học mê tín dị đoan Cả hai dựa liệu quan sát, thống kê để từ rút quy luật Tuy nhiên, khác với khoa học, mê tín dị đoan thường dựa tập mẫu không đặc trưng, cục bộ, thiếu sở khoa học

II HỌC BẰNG CÁCH XÂY DỰNG CÂY ĐỊNH DANH

Phát biểu hình thức khó hình dung Để cụ thể hợn, ta quan sát ví dụ cụ Nhiệm vụ ví dụ xây dựng quy luật để kết luận người tắm biển bị cháy nắng Ta gọi tính chất cháy nắng hay không cháy nắng thuộc tính quan tâm (thuộc tính mục tiêu) Như vậy, trường hợp này, tập R gồm có hai phần tử {"cháy nắng", "bình thường"} Cịn tập P tất người liệt kê bảng (8 người) Chúng ta quan sát hiện tượng cháy nắng dựa thuộc tính sau : chiều cao (cao, trung bình, thấp), màu

tóc (vàng, nâu, đỏ) cân nặng (nhẹ, TB, nặng), dùng kem (có, khơng), Ta gọi thuộc

tính gọi thuộc tính dẫn xuất

Dĩ nhiên thực tế để đưa kết luận vậy, cần nhiều liệu đồng thời cần nhiều thuộc tính dẫn xuất Ví dụ đơn giản nhằm để minh họa ý tưởng thuật toán máy học mà trình bày

(93)

Nặng kem?

Sarah Vàng T.Bình Nhẹ Khơng Cháy

Dana Vàng Cao T.Bình Có Khơng

Alex Nâu Thấp T.Bình Có Khơng

Annie Vàng Thấp T.Bình Khơng Cháy

Emilie Đỏ T.Bình Nặng Khơng Cháy

Peter Nâu Cao Nặng Khơng Khơng

John Nâu T.Bình Nặng Khơng Khơng

Kartie Vàng Thấp Nhẹ Có Khơng

Ý tưởng phương pháp tìm cách phân hoạch tập P ban đầu thành tập Pi cho tất phần tử tất tập Pi có chung thuộc tính mục tiêu

P = P1  P2   Pn  (i,j) i j : (Pi  Pj =  ) và

i,  k,l : pk  Pi pl  Pj f(pk) = f(pl)

Sau phân hoạch xong tập P thành tập phân hoạch Pi đặc trưng thuộc tính đích ri (ri  R), bước ứng với phân hoạch Pi ta xây dựng luật Li :

GTi  ri GTi mệnh đề hình thành cách kết hợp thuộc tính dẫn xuất

Một lần nữa, vấn đề hình thức làm bạn cảm thấy khó khăn Chúng ta thử ý tưởng với bảng số liệu mà ta có

Có hai cách phân hoạch hiển nhiên mà nghĩ Cách cho

mỗi người vào phân hoạch riêng (P1 = {Sarah}, P2 = {Dana}, … tổng cộng có phân hoạch cho người) Cách thứ hai phân hoạch thành hai tập, tập gồm tất những người cháy nắng tập lại bao gồm tất người không cháy nắng Tuy đơn giản phân hoạch theo kiểu chẳng giải !!

II.1 Đâm chồi

(94)

Pvàng = { Sarah, Dana, Annie, Kartie } Pnâu = { Alex, Peter, John }

Pđỏ = { Emmile }

* Các người bị cháy nắng gạch in đậm

Thay liệt kê trên, ta dùng sơ đồ để tiện mô tả cho bước phân hoạch sau :

Quan sát hình ta thấy phân hoạch Pnâu Pđỏ thỏa mãn điều kiện "có

chung thuộc tính mục tiêu" (Pnâu chứa tồn người khơng cháy nắng, Pđỏ chứa tồn người cháy nắng)

Còn lại tập Pvàng lẫn lộn người cháy không cháy nắng Ta tiếp tục phân hoạch tập thành tập Bây ta quan sát thuộc tính chiều cao Thuộc tính giúp phân hoạch tập Pvàng thành tập : PVàng, Thấp = {Annie, Kartie}, PVàng, T.Bình= {Sarah} PVàng,Cao= { Dana }

Nếu nối tiếp vào hình trước ta có hình ảnh phân hoạch sau :

(95)

Đến đây, lại gặp vấn đề Nếu ban đầu ta khơng chọn thuộc tính màu tóc để phân hoạch mà chọn thuộc tính khác chiều cao chẳng hạn để phân hoạch sao? Cuối cách phân hoạch tốt hơn?

II.2 Phương án chọn thuộc tính phân hoạch

Vấn đề mà gặp phải tương tự tốn tìm kiếm : "Đứng trước ngã rẽ, ta cần phải vào hướng nào?" Hai phương pháp đánh giá giúp ta chọn thuộc tính phân hoạch bước xây dựng định danh

II.2.1 Quinlan

Quinlan định thuộc tính phân hoạch cách xây dựng vector đặc trưng cho giá trị thuộc tính dẫn xuất thuộc tính mục tiêu Cách tính cụ thể sau : Với thuộc tính dẫn xuất A cịn sử dụng để phân hoạch, tính :

VA(j) = ( T(j, r1), T(j, r2) , …, T(j, rn) )

T(j, ri) = (tổng số phần tử phân hoạch có giá trị thuộc tính dẫn xuất A j có giá trị thuộc tính mục tiêu ri ) / ( tổng số phần tử phân hoạch có giá trị thuộc tính dẫn xuất A j )

* r1, r2, … , rnlà giá trị thuộc tính mục tiêu

*

Như thuộc tính A nhận giá trị khác có vector đặc trưng

Một vector V(Aj ) gọi vector đơn vị có thành phần có giá trị thành phần khác có giá trị

Thuộc tính chọn để phân hoạch thuộc tính có nhiều vector đơn vị

Trở lại ví dụ chúng ta, trạng thái ban đầu (chưa phân hoạch) tính vector đặc trưng cho thuộc tính dẫn xuất để tìm thuộc tính dùng để phân hoạch Đầu tiên là thuộc tính màu tóc Thuộc tính màu tóc có giá trị khác (vàng, đỏ, nâu) nên có vector đặc trưng tương ứng :

VTóc(vàng) = ( T(vàng, cháy nắng), T(vàng, khơng cháy nắng) ) Số người tóc vàng : 4

(96)

Số người tóc vàng khơng cháy nắng : 2

Do

VTóc(vàng) = (2/4 , 2/4) = (0.5, 0.5)

Tương tự

VTóc(nâu) = (0/3, 3/3) = (0,1) (vector đơn vị) Số người tóc nâu : 3

Số người tóc nâu cháy nắng : 0 Số người tóc nâu khơng cháy nắng : 3 VTóc(đỏ) = (1/1, 0/1) = (1,0) (vector đơn vị)

Tổng số vector đơn vị thuộc tính tóc vàng 2

Các thuộc tính khác tính tương tự, kết sau :

VC.Cao(Cao) = (0/2,2/2) = (0,1) VC.Cao(T.B) = (2/3,1/3) VC.Cao(Thấp) = (1/3,2/3)

VC.Nặng (Nhẹ) = (1/2,1/2) VC.Nặng (T.B) = (1/3,2/3) VC.Nặng (Nặng) = (1/3,2/3)

VKem (Có) = (3/3,0/3) = (1,0) VKem(Khơng) = (3/5,2/5)

Như thuộc tính màu tóc có số vector đơn vị nhiều nên chọn để phân hoạch

(97)

(chiều cao, cân nặng, dùng kem) Trong phân hoạch Pvàng, tập liệu lại :

Tên Ch.Cao Cân

Nặng

Dùng kem?

Kết quả

Sarah T.Bình Nhẹ Khơng Cháy

Dana Cao T.Bình Có Khơng

Annie Thấp T.Bình Khơng Cháy

Kartie Thấp Nhẹ Có Khơng

VC.Cao(Cao) = (0/1,1/1) = (0,1) VC.Cao(T.B) = (1/1,0/1) = (1,0) VC.Cao(Thấp) = (1/2,1/2)

VC.Nặng (Nhẹ) = (1/2,1/2) VC.Nặng (T.B) = (1/2,1/2) VC.Nặng (Nặng) = (0,0)

VKem (Có) = (0/2,2/2) = (0,1) VKem(Khơng) = (2/2,0/2) = (1,0)

(98)

II.2.2 Độ đo hỗn loạn

Thay phải xây dựng vector đặc trưng phương pháp Quinlan, ứng với thuộc tính dẫn xuất ta cần tính độ đo hỗn loạn lựa chọn thuộc tính có độ đo hỗn loại thấp Cơng thức tính sau :

TA = :

bt tổng số phần tử có phân hoạch

bj tổng số phần tử có thuộc tính dẫn xuất A có giá trị j

bri : tổng số phần tử có thuộc tính dẫn xuất A có giá trị j thuộc tính mục tiêu có giá trị i

II.3 Phát sinh tập luật

Nguyên tắc phát sinh tập luật từ định danh đơn giản Ứng với nút lá, ta việc từ đỉnh nút phát sinh luật tương ứng Cụ thể từ định danh kết cuối phần II.2 ta có luật sau (xét nút từ trái sang phải)

(Màu tóc vàng) (có dùng kem)  khơng cháy nắng (Màu tóc vàng) (khơng dùng kem)  cháy nắng (Màu tóc nâu)  khơng cháy nắng

(99)

Khá đơn giản phải khơng? Có lẽ khơng có phải nói thêm Chúng ta thực bước cuối tối ưu tập luật

II.4 Tối ưu tập luật

II.4.1 Loại bỏ mệnh đề thừa

Khác so với phương pháp loại bỏ mệnh đề thừa trình bày phần biểu diễn tri thức (chỉ quan tâm đến logic hình thức), phương pháp loại bỏ mệnh đề thừa dựa vào liệu Với ví dụ tập luật có phần trước, bạn quan sát luật sau :

(Màu tóc vàng) (có dùng kem)  khơng cháy nắng

Bây ta lập bảng (gọi bảng Contigency), bảng thống kê người có

dùng kem tương ứng với tóc màu vàng bị cháy nắng hay không Trong liệu cho,

có người khơng dùng kem

Khơng cháy nắng Cháy nắng

Màu vàng

Màu khác

Theo bảng thống kê rõ ràng thuộc tính tóc vàng (trong luật trên) khơng đóng góp việc đưa kết luận cháy nắng hay không (cả người dùng kem không cháy nắng) nên ta loại bỏ thuộc tính tóc vàng khỏi tập luật

Sau loại bỏ mệnh đề thừa, tập mệnh đề ví dụ cịn :

(có dùng kem)  khơng cháy nắng

(Màu tóc vàng) (khơng dùng kem)  cháy nắng (Màu tóc nâu)  khơng cháy nắng

(Màu tóc đỏ)  cháy nắng

Như quy tắc chung để loại bỏ mệnh đề nào? Rất đơn giản, giả sử luật có n mệnh đề :

(100)

Để kiểm tra xem loại bỏ mệnh đề Ai hay khơng, bạn lập tập hợp P bao gồm phần tử thỏa tất mệnh đề A1 , A2 , … Ai-, Ai+1, …, An (lưu ý : không cần xét là có thỏa Ai hay khơng, cần thỏa mệnh đề lại được)

Sau đó, bạn lập bảng Contigency sau :

R R

Ai E F

Ai G H

Trong

E số phần tử P thỏa Ai R F số phần tử P thỏa Ai không thỏa R G số phần tử P không thỏa Ai thỏa R H số phần tử P không thỏa Ai không thỏa R

Nếu tổng F+H = loại bỏ mệnh đề Ai khỏi luật

II.4.2 Xây dựng mệnh đề mặc định

Có vấn đề đặt gặp phải trường hợp mà tất luật khơng thỏa phải làm nào? Một cách hành động đặt luật mặc định :

Nếu luật thỏa  cháy nắng (1) Hoặc

Nếu khơng có luật thỏa  khơng cháy nắng (2)

(chỉ có hai luật thuộc tính mục tiêu nhận hai giá trị cháy nắng hay không cháy nắng)

Giả sử ta chọn luật mặc định (2) tập luật trở thành :

(Màu tóc vàng) (khơng dùng kem)  cháy nắng (Màu tóc đỏ)  cháy nắng

(101)

Lưu ý loại bỏ tất luật dẫn đến kết luận không cháy nắng thay luật mặc định Tại vậy? Bởi luật có kết luận với luật mặc định Rõ ràng có hai khả cháy nắng hay không Vấn đề chọn luật nào? Sau số quy tắc

1) Chọn luật mặc định cho thay cho nhiều luật (trong ví dụ ta ngun tắc khơng áp dụng có luật dẫn đến cháy nắng luật dẫn đến không cháy nắng)

2) Chọn luật mặc định có kết luận phổ biến Trong ví dụ nên chọn luật (2) số trường hợp khơng cháy nắng cịn khơng cháy nắng 3) Chọn luật mặc định cho tổng số mệnh đề luật mà thay nhiều Trong ví dụ luật chọn luật (1) tổng số mệnh đề luật dẫn đến cháy nắng tổng số mệnh đề luật dẫn đến không cháy nắng

BÀI TẬP CHƯƠNG

1) Viết chương trình giải tốn hành trình người bán hàng rong hai thuật giải GTS1 GTS2 trường hợp có n địa điểm khác

2) Viết chương trình giải tốn phân cơng công việc cách ứng dụng nguyên lý thứ tự

3) Ứng dụng nguyên lý thứ tự, giải tốn chia đồ vật sau Có n vật với khối lượng M1, M2, … Mn Hãy tìm cách chia n vật thành hai nhóm cho chênh lệch khối lượng hai nhóm nhỏ

4) Viết chương trình giải tốn mã tuần 5) Viết chương trình giải tốn hậu

6) Viết chương trình giải tốn Ta-canh thuật giải A* 7) Viết chương trình giải toán tháp Hà Nội thuật giải A*

(102)

Mở rộng toán trường hợp chi phí để di chuyển từ (x,y) sang kế (x,y) A[x,y]

CHƯƠNG 2

1 Viết chương trình minh họa bước giải toán đong nước (sử dụng đồ họa tốt)

2 Viết chương trình cài đặt hai thuật tốn Vương Hạo Robinson liệt kê bước chứng minh biểu thức logic

3 Viết chương trình giải tốn tam giác tổng qt mạng ngữ nghĩa (lưu ý sử dụng thuật toán ký pháp nghịch đảo Ba Lan)

4 Hãy thử xây dựng luật phức tạp ví dụ trình bày dùng để chuẩn đốn hỏng hóc máy tính Viết chương trình ứng dụng luật việc chuẩn đốn hỏng hóc máy tính (sử dùng thuật toán suy diễn lùi)

5 Hãy cài đặt frame đặc tả đối tượng hình học kỹ thuật hướng đối tượng ngôn ngữ lập trình mà bạn quen dùng Hãy xây dựng ngơn ngữ script đơn giản cho phép người dùng sử dụng frame việc giải số tốn hình học đơn giản

CHƯƠNG

1) Cho bảng số liệu sau

Hãy xây dựng định danh tìm luật để xác định người Châu Âu hay Châu Á hai phương pháp vector đặc trưng Quinlan độ đo hỗn loạn

STT Dáng Cao Giới Châu

1 To TB Nam Á

2 Nhỏ Cao Nam Á

3 Nhỏ TB Nam Âu

4 To Cao Nam Âu

5 Nhỏ TB Nữ Âu

6 Nhỏ Cao Nam Âu

7 Nhỏ Cao Nữ Âu

(103)

2)* Viết chương trình cài đặt tổng quát thuật toán học dựa việc xây dựng định danh Chương trình yêu cầu người dùng đưa vào danh sách thuộc tính dẫn xuất, thuộc tính mục tiêu với tất giá trị thuộc tính; yêu cầu người dùng cung cấp bảng số liệu quan sát Chương trình liệt kê lên hình luật mà tìm từ bảng số liệu Sau đó, yêu cầu người dùng nhập vào trường hợp cần xác định, hệ thống đưa kết luận trường hợp

Lưu ý : Nên sử dụng hệ quản trị CSDL để cài đặt chương trình

Ngày đăng: 13/04/2021, 23:19

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

Tài liệu liên quan