Học viên thực hiện: Nguyễn Thị Minh - CB110185 - 11BCNTT.KH 26
Có nhiều phƣơng pháp để xây dựng một giải thuật heuristic, trong đó ngƣời ta thƣờng dựa vào một số nguyên lý cơ sở sau:
Nguyên lý vét cạn thông minh:
Trong các bài toán tìm kiếm, khi không gian tìm kiếm lớn, ta thƣờng tìm cách giới hạn lại không gian tìm kiếm hoặc thực hiện kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra lời giải.
Nguyên lý tham lam:
Lấy tiêu chuẩn tối ƣu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ từng bƣớc trong quá trình tìm kiếm lời giải.
Nguyên lý thứ tự:
Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt đƣợc một lời giải tốt nhất.
Hàm heuristic:
Trong việc xây dựng các giải thuật heuristic, ngƣời ta thƣờng dùng các hàm heuristic. Đó là các hàm đánh giá thô các giá trị của hàm phụ thuộc vào trạng thái của bài toán tại mỗi bƣớc giải. Nhờ giá trị này, ta có thể chọn đƣợc các di chuyển tƣơng đối hợp lý trong từng bƣớc giải của giải thuật.
2.2. Lớp các giải thuật heuristic và meta-heuristic dùng cho bài toán thiết kế mạng mạng
Trong phần này, tác giả sẽ bắt đầu bằng việc đƣa ra mẹo giải (heuristic procedure) sử dụng các cặp lân cận (shortsighted). Sau đó sẽ giới thiệu về local search dựa trên định nghĩa hàng xóm tốt nhất trong số các hàng xóm đƣợc xem xét. Trong các local search đƣợc để cập, phần này cũng thảo luận chi tiết một số giải thuật meta-heurictic, nhƣ giải thuật luyện thép (SA – simulated annealling), GRASP (Greedy Randomized Adaptive Search Procedure), và tabu search. Cuối cùng, giải thuật di truyền đòi hỏi thời gian tính toán lớn nhƣng lại có thể tìm ra đƣợc giải pháp có chất lƣợng tốt sẽ đƣợc phân tích cụ thể.
Đề tài: Ứng dụng các kỹ thuật Meta-heuristic để thiết kế mạng chịu lỗi.
Học viên thực hiện: Nguyễn Thị Minh - CB110185 - 11BCNTT.KH 27
2.2.1. Heuristic đơn giản:
Mẹo giải đơn giản là ý tƣởng tốt để thử nghiệm trƣớc khi tìm hiểu các phƣơng pháp phức tạp hơn. Chúng thƣờng cung cấp các giải pháp ban đầu khả thi cho các phƣơng pháp tiên tiến hơn, và chúng là cách nhanh nhất giúp hiểu rõ hơn về cấu trúc của bài toán. Hơn nữa, các mẹo giải đơn giản thƣờng đƣợc sử dụng trong các phƣơng pháp phức tạp hơn để giải quyết vấn đề phụ nhỏ một cách hiệu quả. Chúng đƣợc chia thành ba loại khác nhau tùy thuộc vào cách tìm ra lời giải cho bài toán:
Xây dựng (Construction): Cách tiếp cận phổ biến nhất là để cố gắng tìm một giải pháp bằng cách khởi tạo giải pháp rỗng, và thêm lần lƣợt các cạnh vào giải pháp khởi tạo này cho đến lúc nó là lời giải cho bài toán. Thông thƣờng, điều này đƣợc thực hiện bằng cách chọn cạnh tốt nhất, theo một quy tắc nhất định, và thêm vào giải pháp chỉ khi cạnh đó không vi phạm tính khả thi. Ví dụ: thuật toán Kruskal [16] cho bài toán cây khung tối thiểu (MST – Minimum Spanning Tree): lựa chọn cạnh với chi phí thấp nhất trong đồ thị và thêm cạnh đó vào giải pháp nếu nó không tạo ra một chu trình. Thuật toán Prim [17] cũng áp dụng cho bài toán MST: lựa chọn các cạnh với chi phí thấp nhất có kết nối các nút trong cây T đang xây dựng với V \ Vt (V là tập các nút của đồ thị, Vt là tập các nút của cây T, khởi tạo T là một nút ngẫu nhiên).
Xóa (Deletion): Đây là cách tiếp cận ít dùng đƣợc thực hiện theo cách ngƣợc lại: giải pháp khởi tạo chính là đồ thị ban đầu. Sau đó ở mỗi bƣớc thực hiện xóa các cạnh tồi nhất với quy tắc sau khi xóa đi không làm mất tính khả thi của giải pháp. Thủ tục dừng khi không tổn tại cạnh nào trong giải pháp có thể đƣợc xóa. Thông thƣờng, đối với bài toán tối ƣu, các cạnh đƣợc lựa chọn để xóa theo thứ tự giảm của chi phí.
Lƣu trữ (Saving): Đây là tiếp cận hơi khác bằng việc khởi tạo với một giải pháp khả thi đơn giản cho bài toán và cố gắng cải thiện giải pháp đó bằng cách tính toán sự cải tiến đƣợc tạo ra khi thay thế cạnh hiện có với các cạnh mới mà vẫn duy trì tính khả thi. Đối với các bài toán thiết kế mạng cây, giải pháp thƣờng đƣợc khởi tạo là cây khung nhỏ nhất (MST) hay mạng hình sao (đƣợc tạo ra bằng cách kết nối tất cả các nút tới một nút cho trƣớc). Ví dụ: heuristic Esau- Williams [18] cho bài toán cây khung tối thiểu có trọng số (CMST - capacitated minimum spanning tree) và heuristic Clarke và Wright [19] cho bài toán điều phối xe(VRP - vehicle routing problem) đƣợc dựa trên các phƣơng pháp lƣu trữ.
Đề tài: Ứng dụng các kỹ thuật Meta-heuristic để thiết kế mạng chịu lỗi.
Học viên thực hiện: Nguyễn Thị Minh - CB110185 - 11BCNTT.KH 28
Hai phƣơng pháp tiếp cận đầu tiên khá dễ hiểu, dễ thực hiện và thời gian chạy nhanh (tùy thuộc vào việc kiểm tra tính khả thi) nhƣng thông thƣờng kết quả thu đƣợc không tốt, đặc biệt là đối với các bài toán phức tạp. Cách tiếp cận thứ ba có thể cung cấp cho các giải pháp tốt hơn và đã đƣợc sử dụng rộng rãi trong thực tế. Ƣu điểm của cả ba loại heuristic đơn giản trên là hiệu suất cao (Trong một số trƣờng hợp, chúng có thể làm việc tốt hơn các giải thuật phức tạp khác).