CÀI ĐẶT THUẬT TOÁN AKT CHO BÀI TOÁN THÁP HÀ NỘI - Pdf 14

Tài liệu hướng dẫn thực hành
1
CÀI ĐẶT THUẬT TOÁN A
KT
CHO BÀI TOÁN THÁP HÀ NỘI
1. Thuật toán A
KT
Bước 1
Mởđỉnh đầu tiên S, gán g(S) = 0
Sử dụng tri thức bổ sung để ước tính hàm h(S)
Tính f(S) = g(S) + h(S)
Bước 2
Chọn đỉnh mở có f là nhỏ nhất và gọi đỉnh đólàN
Nếu N là đích: đường đi từđỉnh ban đầu đến đỉnh N là ngắn nhất và bằng g(N). Dừng
(Success).
Nếu không tồn tại đỉnh mở nào: cây biểu diễn vấn đề không tồn tại đường đi tới mục tiêu.
Dừng (Fail).
Nếu có 2 đỉnh mở trở lên có cùng giá trị f nhỏ nhất: ta phải kiểm tra xem những đỉnh đó
có đỉnh nào là đích hay không.
Nếu có: Đường đi từđỉnh ban đầu đến đỉnh N là ngắn nhất và bằng g(N). Dừng.
Nếu không có: chọn ngẫu nhiên một trong các đỉnh đóvàgọi đólàđỉnh N.
Bước 3
Đóng đỉnh N, mở mọi đỉnh sau N. Với mỗi đỉnh sau N, tính:
g(S) = g(N) + gt(S->N)
Sử dụng tri thức bổ sung để tính h(S).
f(S) = g(S) + h(S).
Bước 4
Quay lại Bước 2.
2. Cấu trúc dữ liệu
typedef struct {
char Dia[MAXDIA];

}
3.2 Hàm tìm kiếm
void Solve()
{
DINH O[MAXDINH];
int nO;
int Thoat;
// Thoat = 1: Tìm thành công.
// Thoat = 2: Tìm thất bại.
// Thoat = 3: Không có lời giải.
// Thoat = 0: Đang trong quá trình tìm kiếm
Khởi tạo mảng đỉnh O
O[0].Cot
O[0].SoCot
O[0].DinhTruoc = -1
O[0].TrangThai = 0
O[0]. g = 0
O[0]. h = TinhH(O[0])
nO = 1
Thoat = 0;
while (Thoat == 0)
{
t = chỉ số đỉnh mở trong O có f (lấy g + h) nhỏ nhất.
Nếu không tìm được t thì
Thoat = 3
Thuật giải dừng, không có lời giải cho bài toán
Đóng đỉnh O[t]. (O[t].TrangThai = 1)
Gọi S1[0 k] là tập đỉnh sau O[t] không nằm trong O.
Với mỗi S1[i]: i=0 k
Nếu nO>MAX

List <DINH> DinhSau;
DINH *DinhTruoc;
}CANH;
typedef struct {
COT Cot[MAXCOT];
int SoCot;
int TrangThai;
List <CANH> Canh;
}DINH;
List <DINH> O
¾ Tối ưu cách lưu 1 đỉnh.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status