3. Bố cục của luận văn
2.4.1. Thuật toán leo đồi cơ bản
Thuật toán leo đồi cơ bản là một trƣờng hợp đặc biệt của tìm kiếm theo chiều sâu [11]. Trong tìm kiếm leo đồi việc lựa chọn trạng thái tiếp theo dựa trên một hàm đánh giá. Hàm đánh giá có thể hiểu đơn giản là ƣớc lƣợng khả năng dẫn đến lời giải tính từ trạng thái đó. Thông thƣờng thì hàm này là không thể tính toán đƣợc (vì nếu tính đƣợc đồng nghĩa với việc đã biết đƣợc con đƣờng dẫn đến lời giải) mà ta chỉ dùng nó nhƣ một cơ sở để suy luận.
Tƣ tƣởng:
Để áp dụng thuật toán leo đồi cơ bản trong kiểm thử, thuật toán sẽ thực hiện bằng cách tạo ra hàng xóm cho trạng thái hiện thời và di chuyển sang hàng xóm có hàm đánh giá tốt hơn. Có nghĩa là, thuật toán sinh ra các hàng xóm cho dữ liệu kiểm thử hiện tại và sau đó chọn lấy một dữ liệu từ hàng xóm đó mà có hàm đánh giá tốt nhất.
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 không tồn tại trạng thái hợp lệ tiếp theo Tkcủa trạng thái hiện thời:
Đặt Tk là trạng thái hợp lệ tiếp theo của trạng thái hiện thời Ti. Đánh giá trạng thái Tk mới:
o Nếu là trạng thái đích thì trả về trị này và thoát.
o Nếu không phải là trạng thái kết thúc nhƣng tốt hơn trạng thái hiện thời thì cập nhật nó làm trạng thái hiện thời.
o Nếu nó không tốt hơn trạng thái hiện thời thì tiếp tục vòng lặp. Mã giả
Ti :=T0 ;
STOP := FALSE ;
WHILE STOP = FALSE DO BEGIN IF Ti TG THEN BEGIN
STOP := TRUE ;
END;
ELSE BEGIN
BETTER := FALSE ;
WHILE (BETTER = FALSE) AND (STOP = FALSE) DO BEGIN IF <không tồn tại trạng thái hợp lệ kế tiếp của Ti>THEN BEGIN
<không tồn tại kết quả> ; STOP := TRUE ;
END;
ELSE BEGIN
Tk = < trạng thái hợp lệ kế tiếp của Ti> ;
IF <hàm đánh giá Tk tốt hơn hàm đánh giá Ti>THEN BEGIN
Ti := Tk ; BETTER := TRUE ; END; END; 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);
Mệnh đề "hàm đánh giá Tk tốt hơn hàm đánh giá Ti" đây là khái niệm chung chung tùy vào bài toán, một số trƣờng hợp tốt hơn là lớn hơn Tk>Ti một số trƣờng hợp tốt hơn lại là nhỏ hơn Tk<Ti (Ví dụbài toán tìm đƣờng đi ngắn nhất). Nên khi khai báo ta cần định nghĩa tƣờng minh về hàm đánh giá.