Thuật toán kết hợp tìm kiếm với số lượng hàng xóm lớn

Một phần của tài liệu Một thuật toán hiệu quả cho tập đỉnh thống trị có trọng số nhỏ nhất (Trang 36 - 41)

2.1Thuật toán HLNS

Thuật toán HLNS là sự kết hợp giữa thuật toán LNS và GRASP để giải quyết bài toán MWDS. Thuật toán LNS khắc phục nhược điểm của các thuật toán tìm kiếm địa phương với việc bị lặp bởi các chu trình hoặc mắc kẹt tại các nghiệm cục bộ như các thuật toán tìm kiếm địa phương với sự thay đổi nhỏ từ điểm duyệt trước đến điểm duyệt sau. Bên cạnh đó, thuật toán có khả năng nhanh tìm kiếm lời giải tốt hơn các thuật toán tìm kiếm địa phương khác. Do vậy ngay cả trong trường hợp các thuật toán tìm kiếm địa phương kia có sử dụng các kỹ thuật thoát khỏi nghiệm cục bộ. Thuật toán 3 được áp dụng cho bài toán MWDS.

Procedure Thuật toán HLNS

Input Đồ thị G= (V, E) với trọng số W

Begin

1. Khởi tạo lời giải S; // dựa vào thuật toán 2

2. S*← S;

3. while (chưa hết thời gian tìm kiếm) do 4. for i in (1, k) do

5. Si← DEL(S); //xóa ngẫu nhiên phân bố đều dùng thuật toán 3

6. Si ← REPAIR(Si);// tạo ra lời giải hợp lệ

7. end-for

8. S** là lời giải tốt nhất từ S1, …, Sk 9. if (S** tối ưu hơn S*) then

10. S*← S**; 11. end-if 12. S ← S**; 13.end-while;

End;

Thuật Toán 3: Thuật toán HLNS

Thuật toán HLNS sử dụng thuật toán 4 để khởi tạo. Việc khởi tạo không yêu cầu chất lượng lời giải phải quá tốt, chỉ yêu cầu khởi tạo nhanh. Thuật toán sử dụng phép toán DEL_REDUANT nên chất lượng lời giải không quá tệ.

Thuật toán HLNS duyệt trong không gian duyệt theo phương pháp đi đến điểm tốt nhất trong các lời giải được tạo thành sau các phép xóa và sửa. Trong đó, thuật toán phép DEL và REPAIR để tạo ra k lời giải hai lời giải S1, S2, …, Sk tại mỗi bước tìm kiếm của thuật toán. Trong đó, phép DEL xóa các đỉnh một cách ngẫu nhiên với phân bố đều trong tập đỉnh đang xét. Thuật toán REPAIR áp dụng thuật toán GRASP với đầu vào là tập đỉnh chưa phải là tập đỉnh thống trị và thêm vào các đỉnh cho đến khi hợp lệ.

Thuật toán lựa chọn điểm duyệt tiếp theo là lời giải tốt nhất trong số các lời giải S1, S2, …, Sk làm điểm duyệt tiếp theo. Ngoài ra, thuật toán còn có thể mở rộng bằng việc thêm các phép xóa, sửa và kết hợp lại với nhau để có thể tạo nhiều kiểu thành viên hơn, làm cải thiện chất lượng lời giải. Tuy nhiên, trong luận văn này chỉ sử dụng hai phép toán tử xóa DEL, và sửa REPAIR.

2.2Thuật toán khởi tạo cho tập đỉnh thống trị

Thuật toán khởi tạo sử dụng việc thêm đỉnh ngẫu nhiên theo phân bố đều với xác suất𝛾. Giá trị của 𝛾 ∈(0, 1), giá trị càng cao càng nhiều đỉnh được lựa chọn,

giá trị càng thấp càng ít đỉnh được lựa chọn. Sau đó, toán tử REPAIR được sử dụng để thêm vào các đỉnh để tạo ra lời giải hợp lệ.

Procedure Thuật toán khởi tạo

Begin 1. S ←{}; 2. For u in (1, n) do 3. If rand() < 𝛾 then 4. S ←S ∪ {u}; 5. End-if 6. End-for 7. S ← REPAIR(S);

8. Đưa ra lời giải S;

End;

Thuật Toán 4: Thuật toán khởi tạo tập đỉnh

2.3 Các thuật toán xóa các đỉnh trong tập đỉnh thống trị

Thuật toán DEL dùng để xóa các đỉnh trong lời giải S để tạo ra lời giải không chấp nhận được S−. Các phần tử thuộc danh sách S có khả năng bị loại bỏ như nhau với cùng một xác suất delta β. Số lượng ứng viên bị xóa trung bình phụ thuộc vào số lượng phần tử ban đầu trong S và β theo công thức xác định kỳ vọng. Thuật toán có ưu điểm là tạo cơ hội ngang nhau cho tất cả các nhánh có thể được tạo ra từ S. Thuật toán DEL được trình bày trong thuật toán 5.

Procedure Thuât toán xóa đỉnh ngẫu nhiên DEL

Input một tập đỉnh thống trị S Begin 1. S- ← S 2. for (đỉnh u in S) do 3. if rand() < β then 4. S- ← S- / {u}; 5. end-if; 6. end-for; 7. Đưa ra S-; End;

Thuật Toán 5: Thuật toán xóa đỉnh DEL

2.4 Các thuật toán sửa tập đỉnh

Phép toán REPAIR sử dụng lời giải S− làm đầu vào, đây là các lời giải tạo thành do các đỉnh bị xóa từ lời giải chấp nhận được (xem thuật toán 6). Tiếp theo, phép toán sẽ thêm vào các đỉnh để tạo ra lời giải S. Quá trình kết thúc khi S là một tập đỉnh thống trị. Tại mỗi bước thêm đỉnh, thuật toán sẽ chọn đỉnh v một đỉnh tự do để tạo danh sách là các đỉnh kề với đỉnh v là Rv. Hàm G2 sẽ được sử dụng để đánh giá chất lượng của đỉnh trong danh sách Rv. Đỉnh có chất lượng ước lượng lớn nhất trong danh sách Rv được lựa chọn với xác xuất µ, nếu

không danh sách giới hạn RCL gồm (α * kích thước của Rv) đỉnh có chất lượng tốt nhất được được tạo thành, đỉnh được chọn là đỉnh ngẫu nhiên trong RCL.

Procedure Thuật toán thêm đỉnh REPAIR

Input Một tập đỉnh S-

Begin

1. S ← S-

2. while (S chưa phải là một tập đỉnh thống trị) do 3. v ← chọn một đỉnh chưa bị trị

4. Rv ← là các đỉnh kề với v 5. P ← {G2(Rvi) | Rvi ∉ S} 6. if rand() < µ then

7. u ← đỉnh Rvi với P(Rvi) đạt giá trị lớn nhất 8. else

9. RCL ← (α * kích thước của Rv) đỉnh có chất lượng tốt nhất

10. u ← phần tử ngẫu nhiên trong RCL 11. end-if

12. S← S∪ u 13.end-while

14.S ←DEL-REDUNDANT(S); 15.Đưa ra lời giải S;

End;

Thuật Toán 6: Thuật toán thêm đỉnh REPAIR

2.5Các thuật toán xóa bỏ đỉnh dư thừa trong tập đỉnh thống trị

Cuối cùng, thuật toán DEL-REDUNDANT xóa bỏ thành phần dư thừa để cải thiện lời giải (xem thuật toán 7). Thuật toán duyệt lần lượt các đỉnh thống trị trong S, nếu đỉnh đó và các đỉnh kề với nó bị thống trị bởi các đỉnh khác thì đỉnh đó là đỉnh dư thừa, thuật toán sẽ loại bỏ đỉnh đó. Việc loại bỏ các đỉnh dư thừa sẽ cải thiện chất lượng lời giải. Tuy nhiên, chiến thuật toán bỏ khác nhau có thể cải thiện chất lượng tập đỉnh khác nhau, chẳng hạn như việc xóa đỉnh lần lượt

một cách ngẫu nhiên hoặc theo một hàm ước lượng đánh giá nào đó. Bên cạnh đó, các thuật toán xóa bỏ các đỉnh dư thừa có thể được sử dụng phối hợp lẫn nhau để cải thiện chất lượng lời giải, không nhất thiết phải có định một chiến thuật loại bỏ đỉnh dư thừa.

Cụ thể, thuật toán tạo ra một danh sách R các đỉnh có khả năng là đỉnh dư thừa trong tập đỉnh thống trị. Thuật toán sẽ lựa chọn ngẫu nhiên đỉnh trong danh sách R và xóa đỉnh đó trong tập đỉnh thống trị nếu đỉnh đó là đỉnh dư thừa. Thuật toán kết thúc khi danh sách R là danh sách trống rỗng (xem thuật toán 7).

Procedure Thuật toán DEL-REDUNDANT

Input Một tập đỉnh thống trị S

Begin

1.Sopt← S;

2.R ← danh sách các đỉnh có khả năng loại bỏ khỏi S 3.While R không rỗng do

4. u ← đỉnh được chọn ngẫu nhiên trong R 5. if u là đỉnh dư thừa then

6. Sopt← Sopt / {u}; 7. end-if;

8. R ← R / {u} 9.end-for;

10.Đưa ra lời giải Sopt

End;

Một phần của tài liệu Một thuật toán hiệu quả cho tập đỉnh thống trị có trọng số nhỏ nhất (Trang 36 - 41)

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

(55 trang)