Professional Documents
Culture Documents
520401193 Bao cao Tri tuệ nhan tạo
520401193 Bao cao Tri tuệ nhan tạo
II. Tổng quan về trí tuệ nhân tạo tìm đường đi ngắn
nhất:
1. Thế nào là trí tuệ nhân tạo (AI) tìm đường đi ngắn nhất:
Là việc máy tính sử dụng các giải thuật sẵn có và tính toán quãng đường di
chuyển và tự nhận định con đường ngắn nhất, hiển thị lên màn hình thông báo
cho người dùng nắm rõ thông tin.
Các ứng dụng thực tiễn:
Google map sử dụng trí tuệ nhân tạo tìm đường đi ngắn nhất.
Các ứng dụng Be, Grab, Uber sử dụng Google map để tìm đường đi ngắn
nhất, hỗ trợ việc di chuyển, đưa đón hành khách.
2. Tổng quan về giải thuật tìm kiếm Heuristic:
Trong ngành khoa học máy tính một giải thuật tìm kiếm là một thuật toán lấy đầu
vào là một
bài toán và trả về kết quả là một lời giải cho bài toán đó, thường là sau khi cân
nhắc giữa một loạt các lời giải có thể. Hầu hết các thuật toán được nghiên cứu bởi
các nhà khoa học máy tính để giải quyết các bài toán đều là các thuật toán tìm
kiếm tập hợp tất cả các lời giải có thể đối với một bài toán được gọi là không gian
tìm kiếm thuật toán thử sai (brute-force search) hay các thuật toán tìm kiếm "sơ
đẳng" không có thông tin sử dụng phương pháp đơn giản nhất và trực quan nhất
trong khi đó, các thuật toán tìm kiếm có thông tin sử dụng heuristics để áp dụng
các tri thức về cấu trúc của không gian tìm kiếm nhằm giảm thời gian cần thiết
cho việc tìm kiếm.
2.1. Heuristic:
George Polya định nghĩa heuristic là “sự nghiên cứu về các phương pháp và các
qui tắc trong việc khám phá và phát minh” (Polya 1945) nghĩa này có thể xuất
phát từ gốc Hy Lạp của động từ eurisco nghĩa là “tôi phát hiện”.
Trong tìm kiếm không gian trạng thái, heuristic là các luật dùng để chọn những
nhánh nào có nhiều khả năng nhất dẫn đến một giải pháp chấp nhận được:
- Heuristic chỉ là một phỏng đoán chứa các thông tin về bước tiếp theo sẽ được
chọn dùng trong việc giải quyết một vấn đề.
- Heuristic là những tri thức được rút ra từ những kinh nghiệm, “trực giác” của
con người
- Heuristic có thể là những tri thức đúng hoặc sai
Vì các heuristic sử dụng những thông tin hạn chế nên chúng ít khi có khả năng
đoán trước chính xác cách hành xử của không gian trạng thái ở những giai đoạn
xa hơn
2.2. Chức năng của Heuristic:
Các chương trình giải quyết những vấn đề trí tuệ nhân tạo sử dụng Heuristic cơ
bản theo hai dạng:
- Vấn đề có thể không có giải pháp chính xác vì những điều không rõ ràng
trong diễn đạt vấn đề hoặc trong các dữ liệu có sẵn.
- Vấn đề có thể có giải pháp chính xác, nhưng chi phí tính toán để tìm ra nó
không cho phép.
là nhỏ nhất
Thứ tự ưu tiên cho một đường đi đươc quyết định bởi hàm Heuristic được đánh
giá: f(x) = g(x) + h(x)
g(x) là chi chi phí của đường đi từ điểm xuất phát cho đến thời điểm hiện tại.
h(x) là hàm ước lượng chi phí từ đỉnh hiện tại đến đỉnh đích
f(x) là tổng của h và g, thường có giá trị càng thấp thì độ ưu tiên càng cao.
* Ưu điểm:
- Thuật toán A* có tính đến khoảng cách đã đi qua, điều này khiến cho A* trở nên
đầy đủ và tối ưu.
- Luôn tìm thấy đường đi ngắn nhất nếu nó tồn tại.
* Nhược điểm:
- Nếu không gian các trạng thái là hữu hạn, vô hạn và không có giải pháp để tránh
việc xét (lặp) lại các trạng thái, thì giải thuật A * là không hoàn chỉnh
- Không đảm bảo sẽ chạy nhanh hơn các thuật toán tìm kiếm đơn giản hơn
* Mô tả thuật toán:
1. Open: tập các trạng thái đã được sinh ra nhưng chưa được xét đến.
2. Close: tập các trạng thái đã được xét đến.
3. Cost(p, q): là khoảng cách giữa p, q.
4. g(p): khoảng cách từ trạng thái đầu đến trạng thái hiện tại p.
5. h(p): giá trị được lượng giá từ trạng thái hiện tại đến trạng thái đích.
6. f(p) = g(p) + h(p)
o Bước 1:
Open: = {p}
Close: = {}
o Bước 2: while (Open !={})
Chọn trạng thái (đỉnh) tốt nhất p trong Open (xóa p khỏi Open).
Nếu p là trạng thái kết thúc thì thoát.
Chuyển p qua Close và tạo ra các trạng thái kế tiếp q sau p.
Nếu q đã có trong Open
Nếu g(q) > g(p) + Cost(p, q)
g(q) = g(p) + Cost(p, q)
f(q) = g(q) + h(q)
prev(q) = p (đỉnh cha của q là p)
Nếu q chưa có trong Open
g(q) = g(p) + cost(p, q)
f(q) = g(q) + h(q)
prev(q) = p
Thêm q vào Open
Nếu q có trong Close
Nếu g(q) > g(p) + Cost(p, q)
Bỏ q khỏi Close
Thêm q vào Open
o Bước 3: Không tìm được.
- Ý tưởng là tìm kiếm không gian trạng thái và tìm con đường ngắn nhất đến trạng
thái mục tiêu.
- Trong quá trình tìm kiếm, ta sẽ theo dõi 2 danh sách các trạng thái, các nút.
Danh sách đầu tiên là OPEN list, danh sách này lưu trữ các nút đã tạo bằng cách
sử dụng các quy tắc từ một nút hiện có, nhưng chúng tôi chưa biết chúng dẫn đến
đâu; danh sách thứ hai là các nút mà ta đã tạo bằng việc khám phá vị trí của
chúng.
- Mỗi trạng thái được lưu trữ cùng với một số dữ liệu bổ sung cần thiết để tìm
kiếm. Điều đầu tiên được yêu cầu là một con trỏ cha. Chúng ta cần biết cách để
đến được nút này, vì kết quả cuối cùng của việc tìm ra trạng thái mục tiêu sẽ là
tạo ra một đường dẫn trở lại điểm bắt đầu.
- Theo dõi nút nào được đặt trong gốc nút này cho phép thực hiện việc này. Nút
này cũng có ba xếp hạng được sử dụng trong quá trình tìm kiếm là chi phí của nút,
ước tính heuristic của nút này và 'f' là tổng của hai điểm kia.
- Hàm uớc tính heuristic có thể phức tạp hơn nhiều mà chúng ta đã thấy. Chúng ta
có thể đoán xem nút này tốt như thế nào bằng cách nó gần mục tiêu. Cuối cùng là
xếp hạng nút để thể hiện mức độ tốt của nó về mặt chi phí để đi đến đó và
khoảng cách gần với mục tiêu mà ta cần đi đến. Đảm bảo trong suốt quá trình tìm
kiếm luôn đi theo con đường tối ưu nhất.
- Khởi đầu, chỉ có một nút (trạng thái) A nên nó sẽ được mở rộng tạo ra 3 nút mới
B, C và D.
- Do D là nút có khả năng nhất nên nó sẽ được mở rộng tiếp sau nút A và sinh ra 2
nút kế tiếp là E và F.
- Đến đây, ta lại thấy nút B có vẻ có khả năng nhất (trong các nút B, C, E, F) nên ta
sẽ chọn mở rộng nút B và tạo ra 2 nút G và H.
- Hai nút G, H này được đánh giá ít khả năng hơn E, vì thế sự chú ý lại trở về E. E
được mở rộng và các nút được sinh ra từ E là I và J.
- Ở bước kế tiếp, J sẽ được mở rộng vì nó có khả năng nhất. Quá trình này tiếp tục
cho đến khi tìm thấy một lời giải.
3, Thuật toán Depth limited search
* Mô tả:
- Depth Limited Search là thuật toán tìm kiếm theo độ sâu và nó có thể khắc
phục bằng cách áp đặt một ranh giới hoặc giới hạn cho độ sâu của miền tìm
kiếm. Việc đặt giới hạn độ sâu làm cho chiến lược tìm kiếm DFS trở nên tinh tế
hươn và được tổ chức thành một vòng lặp hữu hạn.
- Giới hạn độ sâu có thể bị chấm dứt với hai điều:
+) Giải quyết xong được vấn đề.
+) Xác định không có giải pháp cho vấn đề trong một giới hạn độ sâu đã
cho.
- DLS có thể được gọi là phiên bản mở rộng và tinh chỉnh của thuật toán DFS.
- Thích hợp với bài toán biết trước độ sâu tối đa và có nhiều trạng thái đích.
* Ưu điểm: tránh được trường hợp của đường dẫn vô hạn trong tìm kiếm theo
độ sâu.
* Nhược điểm: không đầy đủ, tốn thời gian, nó có thể không tối ưu nếu bài
toán có nhiều hơn một giải pháp.
*Mô tả thuật toán:
- Nút bắt đầu hoặc nút 1 được thêm vào đầu ngăn xếp. Sau đó, nó được đánh
dấu là đã truy cập và nếu nút 1 không phải là nút mục tiêu trong tìm kiếm, thì
chúng ta đẩy nút thứ hai 2 lên trên cùng của ngăn xếp.
- Tiếp theo, đánh dấu nó là đã thăm và kiểm tra xem nút 2 có phải là nút mục
tiêu hay không. Nếu nút 2 không được tìm thấy là nút mục tiêu thì ta đẩy nút 4
lên đầu ngăn xếp. Bây giờ chúng ta tìm kiếm trong cùng một giới hạn độ sâu và
di chuyển theo độ sâu để kiểm tra các nút mục tiêu.
- Nếu nút 4 cũng không được tìm thấy là nút mục tiêu và giới hạn độ sâu được
tìm thấy là đạt đến thì ta truy xuất trở lại các nút gần nhất mà vẫn chưa được
khám phá hoặc chưa được khám phá. Sau đó đẩy chúng vào ngăn xếp và đánh
dấu chúng đã ghé thăm.
- Tiếp tục thực hiện các bước này theo các cách lặp đi lặp lại trừ khi đạt đến
nút mục tiêu hoặc cho đến khi tất cả các nút trong giới hạn độ sâu đã được
khám phá cho mục tiêu.
- Khi so sánh các bước trên với DFS, ta có thể thấy rằng DLS cũng có thể được
thực hiện bằng cách sử dụng cấu trúc dữ liệu hàng đợi. Ngoài ra với mỗi cấp
độ của nút cần được tính toán để kiểm tra tính hữu hạn và tầm với của nút
mục tiêu từ nút nguồn.
4, Greedy Best-First Search (Greedy BFS)
Thuật toán sẽ sử dụng 1 hàm đánh giá là hàm Heuristic H(n). Hàm Heuristic này sẽ
đánh giá chi phí để đi từ nút hiện tại n đến nút mục đích (mục tiêu).
- Ví dụ: trong bài toán sử dụng H(n) = ước lượng khoảng cách đường thẳng
từ thành phố hiện tại n đến Buncharest. Phương pháp này sẽ xét các nút có
vẻ gần với nút đích nhất vì nó chỉ phát triển từ những nút có ước lượng tốt
nhất.
- Từ hình vẽ, giả sử bắt đầu từ Arad, đường đi thực tế đến Sibiu = 140,
điểm đích là Buncharest, ước lượng từ Arad đến đích là 366.
- Cách hoạt động của thuật toán:
Bắt đầu từu Arad: TÌm các hang xóm của Arad và tính hàm ước lượng từ
các điểm đó tới đích.
Ta thấy Sibiu có ước lượng nhỏ nhất, ta tiếp tục phát triển Sibiu.
* Ưu điểm:
- Nhanh, độ phức tạp thời gian: O(b^m).
- Một hàm heuristic tốt có thể mang lại cải thiện lớn.
* Nhược điểm:
- Không tối ưu.
- Chưa hoàn chỉnh, có thể vướng trong các vòng lặp vô hạn (VD: Lasi -> Neamt ->
Lasi -> Neamt -> …).
5, Iterative Depth – First Search (IDFS):
- Giống với DFS nhưng không bao giờ mở rộng các nút có độ sâu quá một giới
hạn nào đó, giới hạn độ sâu sẽ được tăng dần cho đến khi tìm được lời giải.
- Thích hợp với bài toán cây tìm kiếm có độ sâu lớn
- Tối ưu, có tính đầy đủ
*Mô tả thuật toán:
- Tương tự như DFS nhưng độ sâu tìm kiếm sẽ được tăng dần khi chưa tìm
được lời giải. Quá trình lặp đi lặp lại với độ sâu lần lượt là 1, 2, 3 … đến một độ
sâu nào đó.
Thuật giải:
fringe là một cấu trúc hàng đợi, trong đó các phần tử được sắp xếp theo chi
phí đường đi
Ví dụ:
6, Thuật toán Uniform Cost Search:
1. Khái niệm
Thuật toán Uniform Cost Search (hay còn gọi là tìm kiếm chi phí cực tiểu hoặc tìm
kiếm theo giá thành thống nhất, viết tắt tiếng Anh là UCS) là một cách duyệt cây
dùng cho việc duyệt hay tìm kiếm một cây, cấu trúc cây, hoặc đồ thị có trọng
lượng (chi phí). Việc tìm kiếm bắt đầu tại nút gốc và tiếp tục bằng cách duyệt các
nút tiếp theo với trọng lượng hay chi phí thấp nhất tính từ nút gốc. Các nút được
duyệt tiếp tục cho đến khi đến được nút đích cần đến.
2. Thuật toán
- Định nghĩa: Hàng đợi ưu tiên Priority Queue là cấu trúc dữ liệu lưu trữ các phần
tử cùng với độ ưu tiên của nó và khi lấy phần tử ra khỏi hàng đợi sẽ căn cứ vào độ
ưu tiên nhỏ nhất.
Cho một trạng thái n, ký hiệu g(n) là tổng chi phí đường đi ngắn nhất (hiện có) từ
trạng thái ban đầu S đến trạng thái n. Thuật toán UCS sử dụng một hàng đợi ưu
tiên (Priority Queue – PQ) để lưu trữ và duyệt các trạng thái trên đường đi. Thuật
toán dùng thêm một danh sách CLOSE để lưu trữ các trạng thái đã được xét
MÃ GIẢ:
- Khởi tạo: Priority Queue (PQ) rỗng, CLOSE rỗng.
- Đưa trạng thái ban đầu START vào PQ, độ ưu tiên g(START) = 0
- Lấy một trạng thái n (có g thấp nhất) ra khỏi PQ. Đưa n vào CLOSE.
- Nếu n là trạng thái đích GOAL thì “đã tìm thấy”. Dừng thuật toán.
- Nếu không, với mỗi trạng thái con n’ chưa xét (n’ không thuộc CLOSE) của n:
+ Tính độ ưu tiên: g(n’) = g(n) + cost(n, n’)
+ đưa (n’, g(n’)) vào PQ
- Lặp đến khi PQ rỗng.
- Thông báo không có đường đi từ START đến GOAL.
Ví dụ: Cho đồ thị, nút gốc là A, duyệt và tìm đường đi đến G với chi phí thấp nhất.
Bảng dưới đấy mô tả các bước duyệt đồ thị
VI. KẾT LUẬN
Các heuristic và việc thiết kế thuật toán để thực hiện tìm kiếm heuristic từ lâu đã
là sự quan tâm chủ yếu của các công trình nghiên cứu trí tuệ nhân tạo chơi game
và chứng minh định lý là hai ứng dụng lâu đời nhất, cả hai đều cần đến các
heuristic để thu giảm bớt không gian giải pháp có thể không thể nào kiểm tra hết
mọi suy luận có thể sinh ra trong lĩnh vực toán hoặc mọi nước đi có thể có trên
bàn cờ vua, tìm kiếm heuristic thường là câu trả lời thực tế duy nhất gần đây việc
tìm kiếm trong các hệ chuyên gia cũng xác nhận mức độ quan trọng của các
heuristic như là một phần không thể thiếu trong quá trình giải quyết vấn đề.
TÀI LIỆU THAM KHẢO:
1, Iterative deepening depth-first search - Wikipedia
2, thuật toán tìm kiếm greedy best-first search – Blog Lập Trình (wordpress.com)
3, Iterative Depth First Traversal of Graph - GeeksforGeeks
4, (PDF) Giải quyết vấn đề bằng tìm kiếm Nhập môn trí tuệ nhân tạo | KogMaw
Devil - Academia.edu
5, Uniform Cost Search | Algorithm of Uniform Cost Search (educba.com)
6, Tìm kiếm chi phí đều – Wikipedia tiếng Việt
7, Tìm kiếm theo chiều rộng – Wikipedia tiếng Việt
8,https://web.archive.org/web/20000528203204/http://www.geocities.com/jhey
esjones/astar.html
9,https://www.educative.io/edpresso/what-is-the-a-star-algorithm