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

Bài Tập Lớn Trí Tuệ Nhân Tạo Cài đặt các thuật toán tìm kiếm chiều sâu, tìm kiếm chiều rộng

23 2K 13

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 159 KB

Nội dung

Bài Tập Lớn Trí Tuệ Nhân TạoĐề bài : Cài đặt các thuật toán tìm kiếm chiều sâu, tìm kiếm chiều rộng Giảng viên hướng dẫn : PGS.TS Phan Huy Khánh Nhóm học viên thực hiện: 1.. Mục đích chí

Trang 1

Bài Tập Lớn Trí Tuệ Nhân Tạo

Đề bài : Cài đặt các thuật toán tìm kiếm chiều sâu, tìm kiếm

chiều rộng

Giảng viên hướng dẫn : PGS.TS Phan Huy Khánh

Nhóm học viên thực hiện:

1 Lê Nam Trung

2 Nguyễn Nương Quỳnh

3 Nguyễn Duy Linh

4 Hoàng Đình Tuyền

Trang 2

Mục Lục

Phần 1 : Lời nói đầu

1.Mục đích của đề bài………

2.Phân công công việc………

Phần 2: Thuật Toán Tìm Kiếm Theo Chiều Sâu

1 Sơ lược thuật toán tìm kiếm chiều sâu……… 4

2 Kĩ thuật tìm kiếm chiều sâu……… 4

3 Giải thuật

4 Ví dụ

5 Ưu điểm và nhược điểm của tìm kiếm chiều sâu

Phần 3: Thuật Toán Tìm Kiếm Theo Chiều Rộng……… 8

1 Sơ lược thuật toán tìm kiếm chiều rộng……… 8

2 Kĩ thuật tìm kiếm theo chiều rộng……… 9

3 Giải thuật

4 Ví dụ

5 Ưu điểm và nhược điểm của tìm kiếm chiều rộng

Phần 4: So sánh hai thuật toán tìm kiếm chiều sâu và chiều rông… 15 Tài Liệu Tham Khảo

I.Lời mở đầu

1.Mục đích của thuật toán

Trang 3

Mục đích chính của các thuật toán tìm kiếm chiều sâu và chiều rộng là tìm ra lờigiải tối ưu nhất cho bài toán trong thời gian nhỏ nhất Các thuật toán như tìm kiếmkhông có thông tin / vét cạn ( tìm kiếm trên danh sách, trên cây hoặc đồ thị ) sử dụngphương pháp đơn giản nhất và trực quan nhất để áp dụng các tri thức về cấu trúc củakhông gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm được sử dụngnhiều Tuy nhiên, do bản chất là vét cạn nên với những bài toán có không gian lớn thì ta khôngthể dùng hai chiến lược này được Hơn nữa, hai chiến lược này đều có tính chất "mù quáng" vìchúng không chú ý đến những thông tin (tri thức) ở trạng thái hiện thời và thông tin về đích cầnđạt tới cùng mối quan hệ giữa chúng.

2.Phân công công việc

_ Sưu tầm tài liệu: cả nhóm thực hiện

_ Soạn lý thuyết: cả nhóm thực hiện

_ Soạn chương trình demo: cả nhóm thực hiện

_ In ấn, báo cáo: Hoàng Đình Tuyền

II Thuật toán tìm kiếm chiều sâu.

1 Sơ lược thuật toán tìm kiếm chiều sâu:

Trong tìm kiếm theo chiều sâu, tại trạng thái (đỉnh) hiện hành, ta chọn một trạng thái kế tiếp (trong tập các trạng thái có thể biến đổi thành từ trạng thái hiện tại) làm trạng thái hiện hành cho đến lúc trạng thái hiện hành là trạng thái đích Trong trường hợp tại trạng thái hiện hành, ta không thể biến đổi thành trạng thái kế tiếp thì ta sẽ quay lui (back-tracking) lại trạng thái trước trạng thái hiện hành (trạng thái biến đổi thành trạng thái hiện hành) để chọn đường khác Nếu ở trạng thái trước này mà cũng không thể biến đổi được nữa thì ta quay lui lại trạng thái trước nữa và cứ thế Nếu đã quay lui đến trạng thái khởi đầu mà vẫn thất bại thì kết luận là không có lời giải Hình ảnh sau minh họa hoạt động của tìm kiếm theo chiều sâu

Trang 4

Hình 1: Hình ảnh của tìm kiếm chiều sâu Nó chỉ lưu ý "mở rộng" trạng thái được chọn

mà không "mở rộng" các trạng thái khác (nút màu trắng trong hình vẽ)

Trang 5

2 Kỹ thuật tìm kiếm chiều sâu:

Tìm kiếm sâu trong không gian bài toán được bắt đầu từ một nút rồi tiếp tục cho đến khi hoặc đến ngõ cụt hoặc đến đích Tại mỗi nút có luật trong tài, chẳng hạn, “đi theo nút cực trái”, hướng dẫn việc tìm Nếu không đi tiếp được, gọi là đến ngõ cụt, hệ thống quay lại một mức trên

đồ thị và tìm theo hướng khác, chẳng hạn, đến nút “sát nút cực trái” Hành động này gọi là quaylui

Thuật toán tìm kiếm theo chiều sâu được hình dung 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

- Ở bước tổng quát, giả sử đang xét đỉnh i, khi đó các đỉnh kề với i có các trường hợp:

+ 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

FE

DC

B

A

Trang 6

3 False H False Ø C,B

Ta có J  DICH  Thành Công Xây dựng đường đi A  C  G  J

Kết quả đường đi trên cây là:

D

C

B

A

Trang 7

path(Open_stack,_,Path_stack,Goalstate):-stack(Top,_,Open_stack),Top = Goalstate,write("A solution found :\n"),

Trang 8

path(Open_stack,Closed_set,Path_stack,Goalstate):-stack(Top,Res_open_stack,Open_stack),move(Top,Next_state),

not(member_stack(Next_state,Open_stack)),not(member_set(Next_state,Closed_set)),stack(Next_state,Res_open_stack,New_open_stack),stack(Next_state,Path_stack,New_path_stack),add_if_not_in_set(Next_state,Closed_set,New_closed_set),path(New_open_stack,New_closed_set,New_path_stack,Goalstate),!

go(Start,Goalstate):-empty_stack(Open),empty_stack(Path),empty_set(Closed),stack(Start,Open,Open_stack),stack(Start,Path,Path_stack),add_if_not_in_set(Start,Closed,Closed_set),path(Open_stack,Closed_set,Path_stack,Goalstate)

Trang 9

move(state(X,Y),state(New_x,New_y)):- X < 4,New_x = 4, New_y = Y.

move(state(X,Y),state(New_x,New_y)):- Y < 3, New_x = X, New_y = 3

move(state(X,Y),state(New_x,New_y)):- X > 0, New_x = 0, New_y = Y

move(state(X,Y),state(New_x,New_y)):- Y >0, New_x = X, New_y = 0

empty_set([])

stack(Top,Stack,[Top|Stack])

empty_stack(S)

Trang 10

member(X,[X|_]):-!

member(X,L)

member(X,[_|L]):-member_stack(Element,Stack):- member(Element,Stack)

member_set(S,L):- member(S,L)

member(X,S),!

Trang 11

5 Ưu và nhược điểm của phương pháp tìm kiếm chiều sâu:

Ư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

Nhược điểm:

- 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 12

III Thuật toán tìm kiếm chiều rộng.

1: Sơ lược thuật toán tìm kiếm chiều rộng:

Ngược lại với tìm kiếm theo kiểu chiều sâu, tìm kiếm chiều rộng mang hình ảnh của vết dầu loang Từ trạng thái ban đầu, ta xây dựng tập hợp S bao gồm các trạng thái kế tiếp (mà từ

trạng thái ban đầu có thể biến đổi thành) Sau đó, ứng với mỗi trạng thái Tk trong tập S, ta xây

dựng tập Sk bao gồm các trạng thái kế tiếp của Tk rồi lần lượt bổ sung các Sk vào S Quá trình này cứ lặp lại cho đến lúc S có chứa trạng thái kết thúc hoặc S không thay đổi sau khi đã bổ sung tất cả Sk

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

rộng, không bỏ sót trạng thái nào

2 Kỹ thuật tìm kiếm chiều rộng:

Kỹ thuật 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àitoán trước khi chuyển sang các nút của mức tiếp theo

Kỹ thuật tìm kiếm rộng bắt đầu từ mức thứ nhất của không gian bài toán, theo hướng dẫn của

Trang 13

luật trọng tài, chẳng hạn “đi từ trái sang phải” Nếu không thấy lời giải tại mức này, nó chuyển xuống mức sau để tiếp tục … đến khi định vị được lời giải nếu có.

JE

DC

B

A

G

PI

Trang 14

Các bước chi tiết thực hiện giải thuật:

Ta có K  Đích  Thành công Xây dựng đường đi: A  B  E  K

Kết quả đường đi trên cây:

E

DC

Trang 18

move(state(X,Y),state(New_x,New_y)):- X < 4,New_x = 4, New_y = Y.

move(state(X,Y),state(New_x,New_y)):- Y < 3, New_x = X, New_y = 3.

move(state(X,Y),state(New_x,New_y)):- X > 0, New_x = 0, New_y = Y.

move(state(X,Y),state(New_x,New_y)):- Y >0, New_x = X, New_y = 0.

move(state(X,Y),state(New_x,New_y)):- X + Y >= 4,

Y > 0,New_x = 4, New_y = Y - (4 - X).

Trang 20

+ Cần nhiều bộ nhớ theo số nút cần lưu trữ.

+ Cần nhiều công sức xử lý các nút, nhất là khi các nhánh cây dài, số nút tăng

Trang 21

+ Dễ thực hiện các thao tác không thích hợp, thừa, đưa đến việc tăng đáng kể số nút phải xử lý.

- Không hiệu qủa nếu lời giải ở sâu Phương pháp này không phù hợp cho trường hợp có nhiều đường dẫn đến kết quả nhưng đều sâu

- Giao tiếp với người dùng không thân thiện Do duyệt qua tất cả các nút, việc tìm kiếm không tập trung vào một chủ đề

Trang 22

IV So sánh thuật toán tìm kiếm chiều sâu, tìm kiếm chiều rộng.

Tính hiệu quả Hiệu quả khi lời giải 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 Hiệu quả của chiến lược phụ thuộc vào phương án chọn hướng đi

Phương án càng kém hiệu quả thì hiệu quả của chiến lược càng giảm Thuận lợi khi muốn tìm chỉ một lời giải

Hiệu quả khi lời giải nằm gần gốc của cây tìm kiếm Hiệu quả của chiến lược phụ thuộc vào độ sâu của lời giải Lời giải càng

xa gốc thì hiệu quả củachiến lược càng giảm

Thuận lợi khi muốn tìm nhiều lời giải

Trường hợp xấu nhất Vét cạn toàn bộ Vét cạn toàn bộ

Trường hợp tốt nhất Phương án chọn hướng đi

tuyệt đối chính xác Lời giải

được xác định một cách trực tiếp

Vét cạn toàn bộ

Tìm kiếm chiều sâu và tìm kiếm chiều rộng đều là các phương pháp tìm kiếm có hệ thống và chắc chắn tìm ra lời giải Tuy nhiên, do bản chất là vét cạn nên với những bài toán có không gian lớn thì ta không thể dùng hai chiến lược này được Hơn nữa, hai chiến lược này đều

Trang 23

có tính chất "mù quáng" vì chúng không chú ý đến những thông tin (tri thức) ở trạng thái hiện thời và thông tin về đích cần đạt tới cùng mối quan hệ giữa chúng

Ngày đăng: 23/03/2015, 12:31

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w