1 / 57

CHƯƠNG 2

CHƯƠNG 2. BIỂU DIỄN TRI THỨC VÀ TÌM KIẾM MÙ. NỘI DUNG. Biểu diễn và tìm kiếm. Không gian tìm kiếm. Graph Search. Các giải thuật tìm kiếm trên không gian trạng thái. Depth First Search (DFS). Breath First Search (BFS). Tại sao phải tìm kiếm?. Tìm kiếm cái gì?  Kết quả, lời giải.

dung
Download Presentation

CHƯƠNG 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHƯƠNG 2 BIỂU DIỄN TRI THỨC VÀ TÌM KIẾM MÙ

  2. NỘI DUNG • Biểu diễn và tìm kiếm. • Không gian tìm kiếm. • Graph Search. • Các giải thuật tìm kiếm trên không gian trạng thái. • Depth First Search (DFS). • Breath First Search (BFS).

  3. Tại sao phải tìm kiếm? • Tìm kiếm cái gì?  Kết quả, lời giải. • Biểu diễn và tìm kiếm là kỹ thuật phổ biến để giải các bài toán trong lĩnh vực TTNT. • Các vấn đề khó khăn trong việc tìm kiếm: • Đặc tả vấn đề phức tạp. • Không gian tìm kiếm lớn. • Đặc tính đối tượng tìm kiếm thay đổi. • Đáp ứng thời gian thực. • Meta knowledge. • Kết quả “tối ưu”. • Khó khăn về kỹ thuật.

  4. Cấu trúc chung của bài toán • Không gian bài toán là một đồ thị. • Giải bài toán là tìm đường đi trong đồ thị gồm một chuỗi các đỉnh T0,T1, T2, …,Tn sao cho tổng chi phí là nhỏ nhất:

  5. Ví dụ: Bài toán người giao hàng

  6. Bài toán Konigsberg • Nhà toán học người Áo Leonhard Euler đã phát minh ra lý thuyết đồ thị để giải quyết “bài toán các cây cầu của Konigsberg”. • Thành phố Konigsberg nằm trên cả hai bờ và hai hòn đảo của một con sông. • Người ta nối các đảo và hai bờ sông với nhau bằng bảy chiếc cầu như hình 3.1

  7. Hình 3.1 - Biểu diễn không gian trạng thái hệ thống cầu thành phố Konigsberg

  8. Bản đồ của Konigsberg.

  9. Bài toán Konigsberg • Bài toán Konigsberg đặt câu hỏi là liệu có thể đi khắp thành phố mà phải đi qua mỗi cây cầu một lần hay không? • Mặc dù những người dân ở đây không ai tìm được lối đi nào như vậy, nhưng họ vẫn nghi ngờ là có thể. • Đồng thời cũng không ai chứng minh được là không có khả năng. • Nhờ phát minh dạng lý thuyết đồ thị, Euler đã tạo ra cách biểu diễn phương án lựa chọn cho bản đồ thành phố như trên hình 3.2.

  10. Hình 3.2 - Đồ thị của hệ thống cầu Konigsberg

  11. Xem lại Lý thuyết đồ thị • Đồ thị G = { V, E } là một cấu trúc bao gồm hai tập đỉnh V và tập cạnh E. • Tập đỉnh: V = {N1, N2,… Nn}. • Tập cạnh E = { e1, e2, …, em}. • Bậc của một đỉnh là số cạnh nối với đỉnh đó. • Tổng số bậc = 2 lần tổng số cạnh (Vì 1 cạnh sẽ có 2 bậc). • Tổng số bậc là tổng bậc của các đỉnh.

  12. A B C E D Ví dụ về đồ thị vô hướng • G = { V, E }. • Tập đỉnh: • V = {A,B,C,D,E}. • |V| = 5. • Tập cạnh: • E = {(A,D), (A,B), (A,C), (B,C), (C,D), (C,E), (D,E) }. • |E| = 7. • bậc = 3+2+4+3+2 =14.

  13. B A D C E Ví dụ về đồ thị có hướng • G = { V, E }. • Tập đỉnh: V = {A,B,C,D,E}, | V | = 5. • Tập cạnh: E = {(A,B), (A,E), (B,E), (C,B), (C,E), (E,A), (D,A) }. • | E | = 7. • bậc+ = 2+2+0+0+3 =7. • bậc- = 2+1+2+1+1 = 7. • bậc+ = bậc- = cạnh.

  14. Đặctínhđồthị. • Đồ thị có hướng: là đồ thị với các cung có định hướng, nghĩa là cặp nút có quan hệ thứ tự trước sau theo từng cung. • Ví dụ: Cung (Ni,Nj) có hướng từ Ni đến Nj. Khi đó Ni là nút cha và Nj là nút con. • Nút lá: là nút không có nút con. • Path (đường đi): là chuỗi có thứ tự các nút mà 2 nút kế tiếp nhau tồn tại một cung.

  15. Đặctínhđồthị (tt) • Đồ thị có gốc (cây): Trên đồ thị tồn tại 1 nút sao cho tất cả các đường đi đều xuất phát từ nó  nút đó gọi là gốc (Root). • Vòng (chu trình): là một đường đi xuất phát từ 1 nút và quay về nút đó. • Cây: là đồ thị mà không có chu trình. • Hai nút nối nhau (liên thông): nếu có một đường đi qua 2 nút đó.

  16. ĐỊNH NGHĨA ĐỒ THỊ EULER • Chu trình đơn trong đồ thị G đi qua mỗi cạnh của nó một lần được gọi là chu trình Euler. • Đường đi đơn trong G đi qua mỗi cạnh của nó một lần được gọi là đường đi Euler. • Đồ thị được gọi là đồ thị Euler nếu nó có chu trình Euler. • Đồ thị được gọi là đồ thị nửa Euler nếu nó có đường đi Euler.

  17. ĐỊNH LÝ ĐỒ THỊ EULER • Đồ thị vô hướng liên thông G là đồ thị Euler khi và chỉ khi mọi đỉnh của G đều có bậc chẵn. • Nếu bậc của mỗi đỉnh của đồ thị G không nhỏ hơn 2 thì G chứa chu trình. • Đồ thị vô hướng liên thông G là đồ thị nửa Euler khi và chỉ khi nó có không quá 2 đỉnh bậc lẻ.

  18. THUẬT TOÁN FLOR • Giả sử G là đồ thị Euler, thuật toán đơn giản sau đây cho phép xác định chu trình Euler: • Xuất phát từ 1 đỉnh u nào đó của G ta đi theo các cạnh của nó 1 cách tùy ý chỉ cần tuân thủ 2 quy tắc sau: • Xóa bỏ cạnh đã đi qua đồng thời xóa bỏ cả những đỉnh cô lập tạo thành. • Ở mỗi bước ta đi qua cầu khi không còn cách lựa nào khác.

  19. Định nghĩa ĐỒ THỊ HAMILTON • Đường đi qua tất cả các đỉnh mỗi đỉnh đúng 1 lần gọi là đường đi Hamilton. • Chu trình bắt đầu từ 1 đỉnh v nào đó đi qua tất cả các đỉnh còn lại mỗi đỉnh đúng 1 lần rồi quay trở về v được gọi là chu trình Hamilton. • Đồ thị G được gọi là đồ thị Hamilton nếu nó chứa chu trình Hamilton. • Đồ thị G được gọi là đồ thị nửa Hamilton nếu nó chứa đường đi Hamilton.

  20. Định lý ĐỒ THỊ HAMILTON • Đồ thị đơn vô hướng G với n>2 đỉnh, mỗi đỉnh có bậc không nhỏ hơn n/2 là đồ thị Hamilton. • Giả sử G là đồ thị có hướng liên thông với n đỉnh. Nếu deg+(v)  n/2 và deg-(v)  n/2, với v  V. Thì G là đồ thị Hamilton. • Mọi đồ thị đáy loại là nữa Hamilton. • Mọi đồ thị đáy loại liên thông mạnh là Hamilton.

  21. Khônggiantrạngthái • Định nghĩa:Không gian trạng thái là một hệ thống gồm 4 thành phần [N,A,S,GD]. Trong đó: • N là tập nút của Graph. Mỗi nút là một trạng thái của quá trình giải quyết vấn đề • A: Tập các cung nối giữa các nút N. Mỗi cung là một bước trong giải quyết vấn đề. Cung có thể có hướng • S: Tập các trạng thái bắt đầu. S khác rỗng. • GD: Tập các trạng thái đích. GD Không rỗng.

  22. Khônggiantrạngthái • Solution path: Là một path đi từ một nút bắt đầu Si đến một nút kết thúc GDj . • Mục tiêu của các giải thuật tìm kiếm là tìm ra một solution path và/hay solution path tốt nhất.

  23. Không gian trạn thái của trò Tic-Tac-Toe

  24. Trò chơi Tic-Tac-Toe • Bắt đầu ván đấu bằng bàn cờ trống, đấu thủ thứ nhất có thể đặt ký hiệu nước đi X vào bất cứ ô nào trong 9 ô trống của bàn cờ. Mỗi trong số những nước đi này tạo ra một bàn cờ khác cho phép đấu thủ thứ hai đến lượt mình đi sẽ có thể chọn 8 cách đặt ký hiệu nước đi O của mình vào... Và sẽ cứ luân phiên như thế. • Như vậy có tất cả 9 x 8 x 7 x … hay 9! Trạng thái khác nhau có thể được tạo ra. Mặc dù máy tính hoàn toàn có đủ khả năng thăm dò hết số lượng trạng thái này (362880), nhưng nhiều bài toán quan trọng có mức độ phức tạp theo qui luật số mũ hay giai thừa với qui mô lớn hơn nhiều.

  25. Trò chơi Tic-Tac-Toe • Cờ vua có 10120 cách đi có thể xảy ra cho một ván chơi, cờ đam có 1040 cách đi, một số trong đó có thể không bao giờ xảy ra ở một ván chơi thực tế. Các không gian này rất khó hoặc không thể nào khảo sát cho đến hết được. Chiến lược tìm kiếm đối với một không gian lớn như vậy thường phải dựa vào các heuristic để làm giảm bớt mức độ phức tạp cho quá trình tìm kiếm. • Chúng ta có thể xem mỗi hình thái bàn cờ này như là một nút trong đồ thị, các liên kết của đồ thị biểu diễn các nước đi hợp lệ từ một thế cờ này sang thế cờ khác. Cấu trúc kết quả tạo thành một đồ thị không gian trạng thái cho bài toán. Và lúc đó, một chiến lược tìm kiếm xuất phát từ trạng thái đầu và tìm trên các trạng thái để tìm trạng thái đích.

  26. Trò chơi ô số • Nguyên bản của trò chơi là trò đố 15 ô như hình 3.3, có 15 viên gạch đánh số khác nhau được đặt vừa vào 16 ô vuông theo bảng. • Có một ô vuông để trống nên các viên gạch đó có thể di chuyển loanh quanh để tạo ra các sắp xếp khác nhau. • Mục tiêu là tìm ra một chuỗi bước di chuyển các viên gạch vào ô trống để sắp xếp bảng thành một cấu hình đích nào đó. • Không gian trạng thái bài toán đủ lớn để xem xét (16! nếu các trạng thái đối xứng được xem xét riêng biệt).

  27. Trò chơi 15 ô và 8 ô số

  28. Trò chơi 8 ô số • Di chuyển ô trống lên phía trên (Up). • Di chuyển ô trống về bên phải (Right). • Di chuyển ô trống xuống phía dưới (Down). • Di chuyển ô trống về bên trái (Left).

  29. Trò chơi 8 ô số (tt) • Trò đố 8 ô là một phiên bản với kích thước 3 x 3 của trò đố 15 ô, vì nó tạo ra không gian trạng thái nhỏ hơn so với trò đố 15 ô nên thường được dùng cho nhiều ví dụ. • Các cách di chuyển đúng luật là: Để áp dụng một di chuyển, phải bảo đảm rằng không di chuyển ô trống ra ngoài bảng. • Do đó, tất cả bốn cách di chuyển này không phải lúc nào cũng có thể áp dụng.

  30. Trò chơi 8 ô số (tt) • Nếu đã xác định một trạng thái xuất phát và một trạng thái đích thì có thể đưa ra một sơ đồ không gian trạng thái của quá trình giải toán. • Giống như trò chơi Tic-tac-toe không gian trạng thái của trò đố 8 ô cũng là một đồ thị (với hầu hết các trạng thái đều có nhiều nút cha), nhưng khác Tic-tac-toe là có vòng lặp.

  31. Trò chơi 8 ô số (tt) • Mô tả đích (GD) của không gian trạng thái này là một trạng thái cụ thể, tức một cấu hình bảng cụ thể nào đó. • Khi tìm được trạng thái này trên đường đi, quá trình tìm kiếm kết thúc. • Đường đi từ trạng thái xuất phát đến trạng thái đích là dãy các bước di chuyển theo yêu cầu.

  32. State Space Không gian tìm kiếm thường là một graph. Mục tiêu tìm kiếm là một path. Phải lưu trữ toàn bộ không gian trong quá trình tìm kiếm. Không gian tìm kiếm biến động liên tục trong quá trình tìm kiếm. Đặc tính của trạng thái/nút là phức tạp & biến động. Database Không gian tìm kiếm là một list hay tree. Tìm kiếm một record hoặc nút. Phần tử đã duyệt qua là không còn dùng tới. Không gian tìm kiếm là cố định trong quá trình tìm kiếm. Thuộc tính của một record/nút là cố định StateSpace & Databasesearch

  33. Chiến lược điều khiển trong SSS • Mục tiêu của bài toán tìm kiếm trên không gian trạng thái: PATH vs STATE • Xuất phát từ đâu và kết thúc như thế nào? • Chiến lược Data-Driven-Search: Quá trình search sẽ đi từ trạng thái hiện thời áp dụng các luật để đi đến trạng thái kế tiếp và cứ thế cho đến khi đạt được một goal (mục tiêu).

  34. Chiến lược điều khiển trong SSS (tt) • Chiến lược Goal-Driven-Search: Quá trình search sẽ đi từ trạng thái đích về trạng thái hiện tại tạm thời (goal tạm thời) tìm xem luật nào có thể sinh ra trạng thái này. • Các điều kiện để áp dụng được các luật đó trở thành sub goal. Quá trình lặp lại cho đến khi lui về đến các sự kiện ban đầu. Data-Driven Search hay Goal-Driven Search??

  35. Data-DrivenvsGoal-Driven • Cả hai chiến lược cùng làm việc trên không gian trạng thái nhưng thứ tự và số các sự kiện duyệt qua khác nhau. Do cơ chế sinh ra các state khác nhau. • Quyết định chọn lựa chiến lược tùy thuộc vào: • Độ phức tạp của các luật • Độ phân chia của không gian trạng thái • Sự hiện hữu của dữ liệu • Goal đã có hay chưa, nhiều hay ít • Goal được đặc tả như thế nào: state cụ thể hay mô tả mang tính đặc tính. • Cơ sở thông tin để chọn lựa chiến lược hợp lý là một META KNOWLEDGE.

  36. Data-DrivenvsGoal-Driven–Vídụ • Ba và Nam là bà con. Ba hơn nam 250 tuổi. Tìm mối quan hệ giữa Ba và Nam. • Trong bài toán này: • Không gian trạng thái là cây phả hệ. • Mục tiêu tìm kiếm là path nối Ba với Nam. • Giả sử mỗi thế hệ cách nhau 25 năm, như vậy Ba cách Nam 10 thế hệ. • Data-Driven-Search: Tìm từ Ba đến Nam. nếu trung bình mỗi thế hệ có X con thì số trạng thái cần xét là X10 • Goal-Driven search: Tìm từ Nam đến Ba mỗi người chỉ có 1 cha và 1 mẹ. Số trạng thái cần xét là 210. Như vậy Goal-Driven sẽ tốt hơn Data driven nếu số con > 2

  37. GraphSearch • Giải thuật graph search phải có khả năng tìm kiếm ra tất cả các path có thể có để tìm được nghiệm : PATH từ trạng thái khởi đầu đến goal. • Graph search thực hiện bằng cách “lần” theo các nhánh của graph. Từ một trạng thái, sinh ra các trạng thái con, chọn một trạng thái con, xem đó là trạng thái xét kế tiếp. Lặp lại cho đến khi tìm thấy một trạng thái đích. • “Lần” theo các trạng thái  Đi vào ngõ cụt ? • Khi gặp nhánh không đi tiếp được, giải thuật phải có khả năng quay lui lại trạng thái trước đó để đi sang nhánh khác: BACK TRACKING. Do đó giải thuật còn có tên là BACKTRACK search.

  38. PROCEDURE backtrack; BEGIN SL:=[start]; NLS:=[start]; DE:=[ ]; CS:=start; WHILE (NSL<>[ ]) DO BEGIN IF CS = Goal THEN return(SL); IF CS has no children (Except node in DE, SL and NSL) THEN WHILE (SL<>[ ] AND CS=First element of SL) DO BEGIN add CS to DE remove first element from SL; remove first element from NSL; CS:= first element of NSL; END; add CS to SL; ELSE add children of CS (Except node in DE,SL and NSL) to NSL CS:= first element of NSL; add CS to SL; ENDIF; END Return FAIL; END; Giải thuật Graph search

  39. Graph Search Giảithuậtchitiết (tt) • Trong đó: • SL (State list): chứa danh sách các trạng thái trên path hiện đang xét. Nếu tìm ra goal thì SL chính là nghiệm. • NSL (New State List): chứa danh sách các trạng thái đang đợi xét. • DE (Dead End): chứa các trạng thái mà con cháu của chúng không chứa đích. • CS (Current State): chứa trạng thái đang xét. • Hướng phát triển của quá trình search tùy theo cơ cấu tổ chức của NSL: FIFO, FILO hay Evaluated.

  40. Giảithuậtchitiết (tt) –Vídụ A D • Xét graph sau: B C G E F H I J

  41. BREATH FIRST SEARCH Làgraphsearchvớicácnút“anhem”củanúthiệnthờiđượcxemxéttrướccácnút“concháu” Procedure Breath_first_search; BEGIN open :=[start]; close:=[]; WHILE (open <>[]) do BEGIN remove X which is the leftmost of Open; IF (X=goal) THEN return (Success) ELSE BEGIN generate children of X; Put X to close; eleminate children of X which is in Open or Close; Put remain children on RIGHT end of open; END; END; Return (FAIL); END;

  42. BreathFirstSearch–Vídụ A D • Với đồ thị đã có trong ví dụ graph search. Với Breath first search ta có quá trình như sau: B C G E F H I J

  43. DEPTHFIRSTSEARCH Làgraphsearchvớicácnút“concháu”củanúthiệnthờiđượcxemxéttrướccácnút“anhem”. Procedure depth_first_search; Begin open :=[start]; close:=[]; While (open <>[]) do begin remove X which is the leftmost of Open; If (X=goal) the return (Success) else begin generate children of X; Put X to close; eleminate children of X which is in Open or Close; Put remain children on LEFT end of open; End; End; Return (FAIL); End;

  44. DepthFirstSearch–Vídụ A D B C • Với đồ thị đã có trong ví dụ graph search.Với Depth First Search ta có quá trình như sau: G E F H I J

  45. BreathFirstvsDepthFirst • Breath First: open được tổ chức dạng FIFO (Queue) • Depth First: open được tổ chức dạng LIFO (Stack) • Đặc tính: • Breath First search hiệu quả khi lời giải nằm gần gốc của cây tìm kiếm, tìm nhiều lời giải, luôn tìm ra nghiệm có số cung nhỏ nhất • Depth First search hiệu quả khi lời giaỉ nằm sâu trong cây tìm kiếm và có một phương án chọn hướng đi chính xác. • Kết quả • Breath First search chắc chắn tìm ra kết quả nếu có. • Depth First có thể bị lặp vô tận. Tại sao? • Bùng nổ tổ hợp là khó khăn lớn nhất cho các giải thuật này. GiảiPhápchobùngnổtổhợp??

  46. Depthfirstsearchcógiớihạn • Depth first search có khả năng lặp vô tận do các trạng thái con sinh ra liên tục. Độ sâu tăng vô tận. • Khắc phục bằng cách giới hạn độ sâu của giải thuật. • Sâu bao nhiêu thì vừa? • Chiến lược giới hạn: • Cố định một độ sâu MAX, như các danh thủ chơi cờ tính trước được số nước nhất định. • Theo cấu hình resource của máy tính. • Meta knowledge trong việc định giới hạn độ sâu. • Giới hạn độ sâu => co hẹp không gian trạng thái => có thể mất nghiệm.

  47. BÀI TẬP 1: Xét đồ thị trạng thái sau đây, với mỗi chiến lược tìm kiếm bên dưới hãy liệt kê với danh sách thứ tự các nút được duyệt qua: 1/ Tìm kiếm rộng (BrFS) 2/ Tìm kiếm sâu (DFS) 3/ Tìm kiếm sâu với độ sâu là 3

  48. BÀI TẬP 2: Giả sử P là nút mục tiêu của đồ thị bên dưới. Hãy liệt kê danh sách thứ tự các nút duyệt qua ứng với từng chiến lược tìm kiếm. 1/ Graph search 2/ Tìm kiếm rộng (BrFS) 3/ Tìm kiếm sâu (DFS) 4/ Tìm kiếm sâu với độ sâu là 3

  49. BÀI TẬP 3 • Wallace và gromit vừa kết thúc kỳ nghỉ hè trên mặt trăng và sắp quay về trái đất với con tàu phản lực (tại vị trí G của hình dưới). • Một robot địa phương muốn cùng đi theo họ, nhưng phải gấp rút đến tàu phản lực đúng giờ từ vị trí S hình bên dưới. Nó phải tìm đường đi qua các tòa nhà. • Việc tìm đường cũng phải khôn khéo để tránh các đèn giao thông, do đèn giao thông làm nó chậm lại nếu nó đi thẳng hay rẽ trái (rẽ phải không làm nó chậm lại).

More Related