3. Bố cục của luận văn
2.4.2. Thuật toán leo đồi dốc đứng
Về cơ bản thuật toán leo đồi dốc đứng cũng giống leo đồi cơ bản [12], chỉ khác ở điểm là leo đồi dốc đứng sẽ duyệt tất cả các hƣớng đi có thể và chọn hƣớng đi theo trạng thái tốt nhất trong các trạng thái kế tiếp có thể có (trong khi đó leo đồi chỉ chọn đi theo trạng thái kế tiếp đầu tiên tốt hơn trạng thái hiện thời mà nó tìm thấy).
Tƣ tƣởng
Nếu trạng thái bắt đầu và cũng là trạng thái đích thì thoát và báo là đã tìm đƣợc lời giải. Ngƣợc lại đặt trạng thái hiện thời T(i) là trạng thái khởi đầu T0.
Lặp lại cho đến khi đạt đến trạng thái đích hoặc cho đến khi (Ti) không tồn tại trạng thái hợp lệ tiếp theo (Tk) tốt hơn trạng thái hiện thời (Ti):
Đặt S bằng tập tất cả trạng thái kế tiếp có thể có của (Ti) và tôt hơn (Ti). Xác định Tk max là tốt nhất trong tập S. Đặt Ti = Tk max.
Mã giả
Ti := T0 ;
Stop := FALSE ;
WHILE Stop = FALSE DO BEGIN IF Ti TG THEN BEGIN <tìm đƣợc kết quả> ; Stop := TRUE ; END ELSE BEGIN Best := h’(Ti) ; Tmax = Ti ;
WHILE <tồn tại trạng thái kế tiếp hợp lệ của Ti> DO BEGIN
Tk := <một trạng thái kế tiếp hợp lệ của Ti>; IF <h’(Tk) tốt hơn Best> THEN BEGIN
Best := h’( Tk) ; Tmax = Tk ;
END; END;
IF <Best >Ti> THEN Ti := Tmax ELSE BEGIN <không tìm đƣợc kết quả>; Stop := TRUE; END; END; {ELSE} END ; {WHILE Stop}
Trong đó:
Ti = trạng thái hiện hành; T0 = trạng thái khởi đầu; TG = trạng thái đích;
Tk = trạng thái hợp lệ kế tiếp của Ti (trạng thái có hàm đánh giá tốt hơn Ti);
Tk max= trạng thái hợp lệ kế tiếp tốt nhất; h’() : hàm đánh giá;
Tmax: trạng thái tốt nhất;