Thuật toán quay lui đơn giản (Simple backtracking)

Một phần của tài liệu Giải bài toán xếp lịch bảo vệ thạc sỹ bằng các kỹ thuật tối ưu dựa trên ràng buộc (Trang 27 - 28)

Thuật toán đơn giản để thực hiện việc gán giá trị vào các biến trong bài toán thỏa mãn ràng buộc. Thao tác cơ bản quả thuật toán là chọn một biến và gán giá trị vào biến đó, đảm bảo rằng giá trị được chọn sẽ thỏa mãn các ràng buộc. Quá trình gán giá trị vào các biến của bài toán CSP gọi là quá trình gán nhãn (Labelling). Thuật toán quay lui luôn quay lui trong quá trình quyết định khi quá trình gán nhãn kết thúc nên nó được gọi là quay lui có trình tự (chronological backtracking).

Thuật toán quay lui đơn giản có dạng mã như sau: procedure chronological_backtracking

begin

backtracking(Z, {}, D, C); end;

procedure backtracking(unlabelled, compound_labelled, D, C) begin

/*

* unlabelled: tập các biến cần gán nhãn (labelled)

* compound_labelled: tập các biến đã được gán nhãn (labelled) */ if (unlabelled = {}) then return compound_labelled ; end if; chọn một biến x từ unlabelled; repeat

Chương 3: Quy hoạch ràng buộc

if (compound_labelled + {<x,v>} Không vi phạm ràng buộc nào) then

result 

backtracking(unlabelled - {x},

compound_labelled + {x,v}, D, C); if (result != NULL) then

return result; end if;

end if; until (Dx != {}); end;

Nếu số biến là n, số ràng buộc là c, số miền là a cho mỗi biến trong CSP. Khi đó có thể có an. khả năng cho bộ nghiệm, và độ phức tạp thời gian cho việc kiểm tra toàn bộ ràng buộc là o(an c).

Độ phức tạp bộ nhớ của bài toán là o(na). Thuật toán BT không đòi hỏi bộ nhớ tạm thời nhiều hơn o(n) để lưu trữ nhãn kết hợp. Vì vậy, độ phức tạp không gian lưu trữ cho Chronological_Backtracking là o(na).

Chú ý rằng độ phức tạp thời gian ở trên chỉ ra rằng thuật toán sẽ hiệu quả hơn nếu ta giảm được a. Điều này có thể đạt được bằng các kỹ thuật tỉa miền giá trị của các biến.

Một phần của tài liệu Giải bài toán xếp lịch bảo vệ thạc sỹ bằng các kỹ thuật tối ưu dựa trên ràng buộc (Trang 27 - 28)

Tải bản đầy đủ (PDF)

(66 trang)