Professional Documents
Culture Documents
Cac 1
Cac 1
Thuật toán:
Khởi tạo một hàng đợi rỗng Q và đánh dấu tất cả các đỉnh là chưa được thăm.
Thêm đỉnh bắt đầu vào hàng đợi Q.
Lặp lại cho đến khi hàng đợi Q rỗng:
Lấy đỉnh đầu tiên u ra khỏi hàng đợi Q.
Đánh dấu đỉnh u là đã được thăm.
Duyệt qua tất cả các đỉnh v kề với u:
Nếu v chưa được thăm, thêm v vào hàng đợi Q.
Ví dụ:
1 -- 2 -- 3
|\/|
4 -- 5
Với đỉnh bắt đầu là 1, thuật toán BFS sẽ duyệt các đỉnh theo thứ tự: 1, 2, 3, 4, 5.
Thực hiện Python:
Thuật toán:
Khởi tạo một ngăn xếp rỗng S và đánh dấu tất cả các đỉnh là chưa được thăm.
Thêm đỉnh bắt đầu vào ngăn xếp S.
Lặp lại cho đến khi ngăn xếp S rỗng:
Lấy đỉnh đầu tiên u ra khỏi ngăn xếp S.
Đánh dấu đỉnh u là đã được thăm.
Duyệt qua tất cả các đỉnh v kề với u:
Nếu v chưa được thăm, thêm v vào ngăn xếp S.
Ví dụ:
Với cùng đồ thị trên và đỉnh bắt đầu là 1, thuật toán DFS sẽ duyệt các đỉnh theo thứ tự: 1,
2, 5, 3, 4.
Thực hiện Python:
Thuật toán A*
Hàm heuristic:
f(n): Ước lượng chi phí của đường đi từ đỉnh n đến đích.
g(n): Chi phí thực tế của đường đi từ đỉnh bắt đầu đến đỉnh n.
h(n): Ước lượng chi phí của đường đi từ đỉnh n đến đích.
Thuật toán A:*
A -- 1 -- B
|\/|
C -- 2 -- D
Với đỉnh bắt đầu là A và đỉnh đích là D, sử dụng hàm heuristic h(n) là khoảng cách
Manhattan, thuật toán A* sẽ tìm ra đường đi ngắn nhất là A-C-D.