Tìm kiếm rộng là tìm kiếm trên tất cả các nút của một mức trong không gian bài toán trước khi chuyển sang các nút của mức tiếp theo... 1Ưu điểm Tìm kiếm rộng là kỹ thuật vét cạn khô
Trang 1(Artificial Intelligence AI)
Nguyễn Thanh Cẩm
Trang 2Máy học 4
Mạng Nơron
5
Trang 3Các ph ươ ng pháp gi i quy t v n đ c b n ả ế ấ ề ơ ả Các ph ươ ng pháp gi i quy t v n đ c b n ả ế ấ ề ơ ả
2.1 2.2 2.3
Biểu diễn bài toán trong không gian trạng thái
Tìm kiếm lời giải trong không gian trạng thái Tìm kiếm lời giải trên đồ thị và/hoặc
Trang 42.1.1 2.1.2 2.1.3 2.1.4
Đ t v n đ ặ ấ ề
Bi u di n không gian tr ng thái d ể ễ ạ ướ i d ng đ ạ ồ
th ị
2.1.5
Trang 5Phương pháp giải quyết vấn đề dựa trên:
khái niệm trạng thái (state) và
toán tử (operator) được gọi là cách tiếp cận giải quyết vấn đề nhờ không gian trạng thái.
Trang 62.1.1 2.1.2 2.1.3 2.1.4
Mô t tr ng thái ả ạ
Bi u di n không gian tr ng thái d ể ễ ạ ướ i d ng đ ạ ồ
th ị
2.1.5
Trang 8Cần đong k lit nước. giả thiết k <= min(m,n).
Trang 11Có th mô t tr ng thái c a bài toán b ng m t ma tr n ể ả ạ ủ ằ ộ ậ
7
4 6
1
3 8
7
4 0
8
3 2
1
Tr ng thái cu i ạ ố
Tr ng thái đ u ạ ầ
Trang 14 Trạng thái đầu là (1,1,. . .,1)
Trạng thái cuối là (3,3,. . .,3)
Trang 152.1.1 2.1.2 2.1.3 2.1.4
Toán t chuy n tr ng thái ử ể ạ
Bi u di n không gian tr ng thái d ể ễ ạ ướ i d ng đ ạ ồ
th ị
2.1.5
Trang 16Có hai cách biểu diễn các toán tử:
Biểu diễn hàm xác định trên tập các trạng thái và nhận giá trị cũng trong tập này.
Biểu diễn dưới dạng các quy tắc sản xuất S→A có nghĩa
là nếu có trạng thái S thì có thể đưa đến trạng thái A.
Trang 17Các thao tác sử dụng để chuyển trạng thái này sang trạng thái khác gồm:
Đổ đầy một bình,
đổ hết nước trong một bình ra ngoài,
đổ nước từ bình này sang bình khác.
Trang 18Nếu trạng thái đang xét là (x,y) thì các trạng thái kế tiếp có thể chuyển đến sẽ là:
Trang 19 Các thao tác để chuyển trạng thái tương ứng với việc chuyển ô trống sang phải, sang trái, lên, xuống nếu có thể được.
Biểu diễn theo quy tắc sản xuất
Trang 20 Gọi fu là hàm biểu diễn toán tử chuyển ô trống lên trên;
Gọi B (B= (bij)) là trạng thái sau khi di chuyển ô trống ở trạng thái A (A= (aij)) lên trên, nghĩa là: B= fu(A), giả sử ô trống đang ở
vị trí (i0, j0) (hay nói cách khác ai0 j0 = 0) thì hàm fu được xác định như sau:
Trang 21d l r
Trang 22Mỗi trạng thái là một bộ ba (i, j, k). Có các trường hợp như sau:
Ba đĩa cùng nằm trên một cọc: (i, i, i)
Hai đĩa cùng nằm trên hai cọc: (i, i, j), (i, j, i), (j, i, i),
Ba đĩa nằm trên ba cọc phân biệt: (i, j, k)
Trang 242.1.1 2.1.2 2.1.3 2.1.4
Không gian tr ng thái c a bài toán ạ ủ
Bi u di n không gian tr ng thái d ể ễ ạ ướ i d ng đ ạ ồ
th ị
2.1.5
Trang 28 T = {(aij)3x3 | 0<= aij<= 8 và aij<> akl với i<> j hoặc k <> l}
S = Ma trận xuất phát của bài toán,
G = Ma trận cuối cùng của bài toán (các số nằm theo vị trí yêu cầu)
Trang 292.1.1 2.1.2 2.1.3 2.1.4
Bi u di n không gian tr ng thái d ể ễ ạ ướ i d ng đ ạ ồ
th ị
2.1.5
Trang 30 Đồ thị G = (V, E) trong đó V: tập đỉnh, E: tập cung (E⊂ V*V)
Chú ý
G là đồ thị vô hướng thì (i, j) là một cạnh cũng như là (j, i) (tức là:(i, j)∈E thì (j,i)∈E)
Nếu G là đồ thị có hướng thì cung (i, j) hoàn toàn khác với cung (j, i).
Trang 31Ví dụ: xét đồ thị vô hướng G 1 và đồ thị có hướng G 2
Trang 32 ∀ n ∈ V, ∃! m ∈ V sao cho n ∈ T(m); m là cha của n.
Trang 34
Cho đồ thị G = (V, E) , giả sử V= {1, 2, ,n}.
(1) Biểu diễn bằng ma trận kề
Đồ thị G được biểu diễn bởi ma trận kề A=(aij)nxn, với n là số đỉnh của đồ thị, trong đó:
1 , nếu (i, j) ∈ E
a ij =
0 , trong trường hợp ngược lại
G là đồ thị vô hướng thì ma trận kề A là ma trận đối xứng.
Trang 35Ví dụ:
Trang 36 Với mỗi đỉnh i của đồ thị, ta có một danh sách tất cả các đỉnh kề với i, ký hiệu là List(i).
Để thể hiện List(i) ta có thể dùng mảng, kiểu tập hợp hay kiểu con trỏ.
Trang 37 Ví dụ:
đồ thị G 1 , có List(1)= [2, 3, 4];
đồ thị G 2 , có List(1)= [2, 4];
Trang 38Ví dụ: Bài toán đong nước m =3, n =2, k =1
Trang 39Ví dụ: Tháp Hà Nội với n = 3
Trang 40Các ph ươ ng pháp gi i quy t v n đ c b n ả ế ấ ề ơ ả Các ph ươ ng pháp gi i quy t v n đ c b n ả ế ấ ề ơ ả
2.1 2.2 2.3
Biểu diễn bài toán trong không gian trạng thái
Tìm kiếm lời giải trong không gian trạng thái
Tìm kiếm lời giải trên đồ thị và/hoặc
Trang 42 Tìm kiếm theo chiều rộng (Breadth – First Search)
Tìm kiếm theo chiều sâu (Depth – First Search)
Tìm kiếm tốt nhất đầu tiên (Best First Search)
Tìm kiếm leo đồi (hillclimbing Search).
Trang 432.2.1 2.2.2 2.2.3 2.2.4
r ng ộ
Ph ươ ng pháp tìm ki m t t nh t đ u tiên (BFS) ế ố ấ ầ
Ph ươ ng pháp tìm ki m leo đ i (HCS) ế ồ
Trang 44Tìm kiếm rộng là tìm kiếm trên tất cả các nút của một mức trong không gian bài toán trước khi chuyển sang các nút của mức tiếp theo
Trang 46void BFS; (Breadth First Search) { push(MO,n0)
DONG = null;
While (MO <> null) { n = pop(MO);
Trang 47 Giả sử rằng, mỗi trạng thái khi được xét sẽ sinh ra k trạng thái kế tiếp. Khi đó ta gọi k là nhân tố nhánh.
Nếu bài toán tìm được nghiệm theo phương pháp tìm kiếm rộng có
độ dài d. Như vậy, đỉnh đích sẽ nằm ở mức d+1, do đó số đỉnh cần xét lớn nhất là:
1 + k + k 2 + . . . + k d
Như vậy độ phức tạp thời gian của giải thuật là O(k d ). Độ phức tạp không gian cũng là O(k d ), vì tất cả các đỉnh của cây tìm kiếm ở mức d+1 đều phải lưu vào danh sách.
Trang 48 (1)Ưu điểm
Tìm kiếm rộng là kỹ thuật vét cạn không gian trạng thái bài toán vì vậy sẽ tìm được lời giải nếu có.
Đường đi tìm được đi qua ít đỉnh nhất.
Trang 50 (0;0) → (0;4) → (4;0) → (4;4) → (5;3)
Để có lời giải ta phải lưu lại vết của đường đi
Trang 51(0;0) (0;0) (5;0) (0;4) (5;0) (0;4) (0;0) (5;0) (5;4) (0;0) (1;4) (0;4) (5;4) (1;4) (0;0) (5;0) (0;4) (5;4) (0;0) (4;0) (5;4) (1;4) (4;0) (0;0) (5;0) (0;4) (5;4) (0;4) (5;0) (1;4) (4;0) (0;0) (5;0) (0;4) (5;4) (1;4) (5;4) (0;4) (1;0) (5;0) (4;0) (1;0) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0) (5;0) (4;4) (0;0) (0;4) (1;0) (4;4) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0) (1;0) (5;0) (1;4) (0;1) (4;4) (0;1) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0) (1;0) (4;4) (5;4) (0;4) (4;0) (5;3) (0;1) (5;3) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0) (1;0) (4;4) (0;1) (5;1) (0;4) (0;0) (1;0) (5;3) (5;1) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0) (1;0) (0;1) (5;3)
Trang 53 Mức 1: Có một trạng thái
Trang 54 Mức 2: Có ba trạng thái
Trang 55Mức 3: Có năm trạng thái
Trang 56Mức 4: Có mười trạng thái
Trang 57Mức 6: Có 12 trạng thái
Trang 58…
Ở mức này ta gặp được trạng thái đích
Trang 592.2.1 2.2.2 2.2.3 2.2.4
Ph ươ ng pháp tìm ki m t t nh t đ u tiên (BFS) ế ố ấ ầ
Ph ươ ng pháp tìm ki m leo đ i (HCS) ế ồ
Trang 60Thuật toán tìm kiếm theo chiều sâu như việc khảo sát một cây bắt đầu từ gốc đi theo mọi cành có thể được, khi gặp cành cụt thì quay lại xét cành chưa đi qua
Trang 61 Nếu tồn tại đỉnh j kề i chưa được xét thì xét đỉnh này (nó trở thành đỉnh đã xét) và bắt đầu từ đó tiếp tục quá trình tìm kiếm với đỉnh này
Nếu với mọi đỉnh kề với i đều đã được xét thì i coi như duyệt xong và quay trở lại tìm kiếm từ đỉnh mà
từ đó ta đi đến được i
Trang 62 Input: Đồ thị G = (V,E) đỉnh gốc là n0 (trạng thái đầu); Tập đích Goals
Output: Một đường đi p từ n0 đến một đỉnh n* ∈ Goals
Method: Sử dụng hai danh sách hoạt động theo nguyên tắc LIFO (Stack) MO và
FIFO (queue) DONG void DFS; (Depth First Search) { Push (MO,n0)
Trang 63Đó độ phức tạp thời gian của thuật toán tìm kiếm theo chiều sâu trong trường hợp xấu nhất là O(kd)
Độ phức tạp không gian của thuật toán là O(k*d)
Trang 64 (1)Ưu điểm
Nếu bài toán có lời giải, phương pháp tìm kiếm sâu bảo đảm tìm ra lời giải.
Kỹ thuật tìm kiếm sâu tập trung vào đích, con người cảm thấy hài lòng khi các câu hỏi tập trung vào vấn đề chính.
Do cách tìm của kỹ thuật này, nếu lời giải ở rất sâu, kỹ thuật tìm sâu sẽ tiết kiệm thời gian.
Trang 65 Tìm sâu khai thác không gian bài toán để tìm lời giải theo thuật toán đơn giản một cách cứng nhắc. Trong quá trình tìm nó
không có thông tin nào hổ trợ để phát hiện lời giải. Nếu chọn nút ban đầu không thích hợp có thể không dẫn đến đích của bài toán.
Không phù hợp với không gian bài toán lớn, kỹ thuật tìm kiếm sâu có thể không đến lời giải trong khoảng thời gian vừa phải
Trang 66 Ví dụ: Bài toán đong nước với m = 5, n = 4, k = 3
Nếu ta chọn nhánh ưu tiên đổ đầy bình thứ hai thì sẽ tìm thấy lời giải rất nhanh.
i T(i) MO ↓↑ DONG
(0;0) (0;0) (5;0) (0;4) (5;0) (0;4) (0;0) (0;4) (5;4) (0;0) (4;0) (5;0) (5;4) (4;0) (0;0) (0;4) (4;0) (5;0) (4;4) (0;0) (0;4) (5;0) (5;4) (4;4) (0;0) (0;4) (4;0) (4;4) (5;4) (0;4) (4;0) (5;3) (5;0) (5;4) (5;3) (0;0) (0;4) (4;0) (4;4) (5;3)
Trang 67Nhắc lại, dùng bộ ba (x1; x2; x3) biểu diễn trạng thái bài toán, với xi là cọc chứa đĩa lớn thứ i
Trang 68(1;1;1) (1;1;1) (1;1;2) (1;1;3) (1;1;2) (1;1;3) (1;1;1) (1;1;3) (1;1;1)(1;1;2) (1;2;3) (1;1;2)(1;2;3) (1;1;1)(1;1;3) (1;2;3) (1;1;3)(1;2;1) (1;2;2) (1;1;2)(1;2;1)(1;2;2) (1;1;1)(1;1;3)(1;2;3) (1;2;2) (1;2;3)(1;2;1) (3;2;2) (1;1;2)(1;2;1)(3;2;2) (1;1;1)(1;1;3)(1;2;3)(1;2;2) (3;2;2) (1;2;2) (3;2;3) (3;2;1) (1;1;2)(1;2;1)(3;2;1) (1;1;1)(1;1;3)(1;2;3)(1;2;2) (3;2;2) (3;2;1) (3;2;2) (3;2;3) (3;3;1) (1;1;2)(1;2;1)(3;3;1) (1;1;1)(1;1;3)(1;2;3)(1;2;2) (3;2;2)
(3;2;1) (3;3;1) (3;2;1) (3;3;2) (3;3;3) (1;1;2)(1;2;1)(3;3;3) (1;1;1)(1;1;3)(1;2;3)(1;2;2) (3;2;2)
(3;2;1) (3;3;1) (3;3;3)
Lời giải của bài toán:
Trang 69 Dãy a 1 , a 2 , …,a n được gọi là hợp lý nếu thoả hai điều kiện:
a n là số nguyên tố
a k+1 = a k +1 hoặc 2*a k
Trang 70a 1 = 26; a 2 = 52; a 3 = 53. Như vậy n = 3
Trang 712.2.1 2.2.2 2.2.3 2.2.4
Ph ươ ng pháp tìm ki m t t nh t đ u tiên (BFS) ế ố ấ ầ
Ph ươ ng pháp tìm ki m leo đ i (HCS) ế ồ
Trang 72kiếm mù”.
Trang 73Tìm lời giải có dùng tri thức về bài toán để hướng dẫn
Tại mỗi nút được xem xét, sẽ quyết định việc tìm kiếm tiếp tục theo nhánh nào
Sử dụng hàm đánh giá. gọi là trọng số của nút.
Trang 74void BeFS; {Best First Search}
{ Push(MO,n0);
while MO <> null { i = Pop(MO);
if i ∈ Goals exit;
for j ∈ T(i) do Push(MO,j);
Sort(MO); //theo thứ tự của hàm đánh giá }
cout(‘Khong co loi giai’);
Trang 75Với mỗi trạng thái u, xác định một giá trị h(u), Hàm h(u) được gọi là hàm đánh giá
Tìm kiếm kinh nghiệm là phương pháp tìm kiếm có sử dụng hàm đánh giá.
Trong quá trình tìm kiếm, tại mỗi bước chọn trạng thái
kế tiếp là trạng thái có nhiều khả năng dẫn tới đích nhất
Trang 76Tìm kiếm trong KGTT có sử dụng hàm đánh giá gồm các bước cơ bản sau:
Biểu diễn thích hợp các trạng thái và các toán tử chuyển trạng thái
Xây dựng hàm đánh giá
Thiết kế chiến lược chọn trạng thái ở mỗi bước
Trang 77 (1)Ưu điểm
Tổ hợp các ưu điểm của tìm kiếm rộng và tìm kiếm sâu.
Ưu điểm chủ yếu là dùng tri thức để dẫn dắt việc tìm kiếm. Tri thức này giúp ta bắt đầu từ đâu là tốt nhất và cách tốt nhất để tiến hành tìm lời giải.
Tuân theo cách suy lý của một chuyên gia.
Trang 78 Quá trình tìm kiếm có thể đi xa khỏi lời giải
Trang 79 Ví dụ1: Bài toán tìm kiếm đường đi trên bản đồ giao thông, ta có thể lấy
độ dài của đường chim bay từ một thành phố đang xét tới một thành phố đích làm giá trị của hàm đánh giá của thành phố đang xét.
Trang 80 Hàm h 1: Với mỗi trạng thái u thì h1(u) là số quân không nằm đúng
vị trí của nó trong trạng thái đích.
ví dụ: h1(u) = 4
Hàm h 2: Gọi h2(u) là tổng khoảng cách vị trí của các quân ở trạng thái u và vị trí của nó trong trạng thái đích. khoảng cách được hiểu
là số lần dịch chuyển ít nhất theo hàng hoặc cột để đưa một quân
ở vị trí hiện tại tới trạng thái đích.
ví dụ: h2(u) = 2+3+1+3 = 9 (vì quân 3 cần ít nhất 2 dịch chuyển, quân 8 cần ít nhất 3 dịch chuyển, quân 6 cần ít nhất 1 dịch chuyển
và quân 1 cần ít nhất 3 dịch chuyển)
Trang 812.2.1 2.2.2 2.2.3 2.2.4
Ph ươ ng pháp tìm ki m t t nh t đ u tiên (BFS) ế ố ấ ầ
Ph ươ ng pháp tìm ki m leo đ i (HCS) ế ồ
Trang 82Tìm kiếm leo đồi là tìm kiếm theo độ sâu được hướng dẫn bởi hàm đánh giá.
Song khác với tìm kiếm theo độ sâu, khi phát triển một đỉnh u thì bước tiếp theo ta chọn trong số các đỉnh con của u, đỉnh có hứa hẹn nhiều nhất để phát triển, đỉnh này được xác định bởi hàm đánh giá
Trang 83 Input: Đồ thị G = (V,E), đỉnh xuất phát n0. Hàm đánh giá h(n). Tập đỉnh đích DICH
Output: Đường đi từ đỉnh n0 đến DICH
void HLC; (Hill Climbing Search) { Push(MO,n 0 );
while MO <> null do { i = Pop(MO);
if T(i) ∩ DICH <> null then { L= null;
for j ∈ T(i) do
if j chưa xét then đưa j vào danh sách L sắp xếp L theo thứ tự hàm đánh giá;
chuyển danh sách L vào đầu danh sách MO;
}
Trang 84 Chú trọng tìm hướng đi dễ dẫn đến trạng thái đích nhất → giảm công sức tìm kiếm.
Thuật toán tìm kiếm leo đồi thực chất là thuật toán tìm kiếm theo chiều sâu. song, tại mỗi bước ưu tiên chọn trạng thái có khả năng nhanh tới đích nhất để phát triển.
Nếu trạng thái hiện thời là u thì trạng thái v sẽ được phát triển tiếp theo nếu v kề với u và hàm đánh giá của v đạt giá trị max (hoặc min).
Trang 85 Cực trị địa phương
Cao nguyên bằng phẳng
Trang 87Trạng thái có tiềm năng dẫn đến đích nhanh nhất là trạng thái có hàm đánh giá h đạt giá trị min
Trạng thái được chọn đi tiếp ở hướng mũi tên.
Ở mức 3 ta thấy có hai trạng thái cùng giá trị hàm đánh giá (= 3)
Trang 89Các ph ươ ng pháp gi i quy t v n đ c b n ả ế ấ ề ơ ả Các ph ươ ng pháp gi i quy t v n đ c b n ả ế ấ ề ơ ả
2.1 2.2 2.3
Biểu diễn bài toán trong không gian trạng thái Tìm kiếm lời giải trong không gian trạng thái
Tìm kiếm lời giải trên đồ thị và/hoặc
Trang 902.3.1 2.3.2 2.3.3
Đ t v n đ ặ ấ ề
Trang 91Ý tưởng chủ yếu là xuất phát từ bài toán ban đầu, tách thành các bài toán con, quá trình này tiếp tục đối với các bài toán con cho đến khi gặp các bài toán sơ cấp (bài toán có lời giải ngay).
Trang 92dx x
x
x (ln 2 )
Trang 93∫ x(lnx+x 2 )dx
∫ xdx
Trang 94 mỗi trạng thái ứng với một thành phố,
mỗi toán tử ứng với một con đường, nối thành phố này với thành phố khác.
Trang 96G. Khi đó bài toán tìm đường đi từ A đến B được quy về một trong hai bài toán:
Bài toán tìm đường đi từ A đến B qua E
Bài toán tìm đường đi từ A đến B qua G
Trang 98 Đưa P về các bài toán tương đương: P 1 , P 2 , , P k
Đưa P về các bài toán con: P 1 , P 2 , , P k
Phương pháp phân chia bài toán ban đầu như trên đã gặp trong lập trình truyền thống với cách gọi “chia để trị” , “Modul hoá”
Trang 992.3.1 2.3.2 2.3.3
Đ th Và/Ho c ồ ị ặ
Trang 100 Nếu có một toán tử quy bài toán về các bài toán tương đương thì sẽ có các cung đi từ bài toán xuất phát đến các bài toán tương đương đó.
Nếu một toán tử quy bài toán về các bài toán con thì cũng
có các cung nối từ bài toán xuất phát đến các bài toán con, ngoài ra giữa các cung này cũng có đường nới với nhau
Trang 102 Có thể định nghĩa đồ thị và/hoặc như sau:
Đồ thị G = (V, E) được gọi là đồ thị VÀ/HOẶC nếu, T(n) hoặc các bài toán con của n (n gọi là các đỉnh VÀ) hoặc là tập các bài toán tương đương với n (n gọi là đỉnh HOẶC).
Cách biểu diễn như sau:
Trang 103Nhận xét: Gọi VA: tập các đỉnh VÀ
VO: tập các đỉnh HOẶC
Nếu VA= ∅ ⇒ tìm lời giải trên đồ thị biểu diễn bằng không gian trạng thái, Khi đó:
Bài toán n được gọi là giải được nếu:
hoặc n là đỉnh kết thúc
hoặc T(n)={n1, n2, , nk} và nếu n là đỉnh HOẶC ⇒∃ i ∈ (1 k) sao cho n giải được, ngược lại n giải được ∀ i=1 k.
Trang 104 hoặc n là đỉnh lá và n không phải là đỉnh kết thúc
hoặc T(n)={n1, n2, , nk}và nếu n là đỉnh HOẶC
⇒∃i∈(1 k) sao cho ni không giải được, ngược lại ni không giải được ∀i=1 k
Trang 105Cây lời giải là đồ thị con G’ của G thoả:
Đỉnh gốc (xuất phát) n 0∈V’ ,
∀n 0∈V’, n giải được.
Trang 106toán
Trang 1072.3.1 2.3.2 2.3.3
Tìm ki m l i gi i trên đ th Và/Ho c ế ờ ả ồ ị ặ
Trang 108Các phương pháp tìm kiếm trên đồ thị và/hoặc khác nhau chủ yếu ở phương pháp lựa chọn và sắp xếp đỉnh trước khi thao tác chúng.