2.3.2.5.1. Giữ lại cá thể ưu tú (Elitism)
Để tránh hiện tượng “thoái hóa nòi giống”, tức là hiện tượng con cháu sinh ra kém hơn bố mẹ chúng. Người ta thường đưa luôn một vài cá thể tốt nhất trong thế hệ
Trước đột biến : 2.6 8.7 1.9 1.9 0.5 4.3 Sau đột biến : 5.1 8.7 1.9 1.0 0.5 4.3 Trước đột biến : 1 1 0 1 0 0 0 0 Sau đột biến : 1 1 0 0 1 0 0 0 Trước đột biến : A C E G J F B D H I Sau đột biến : A E C G J F B D H I
này sang thế hệ kế tiếp, không qua tác động của các toán tử di truyền. Việc này giúp bảo tồn những cá thể ưu tú và duy trì hạt giống tốt cho thế hệ sau. Kỹ thuật này được gọi là Elitism. Kỹ thuật elitism rất hay được áp dụng trong thuật toán di truyền.
2.3.2.5.2. Chiến lược thay thế quần thể
Một vấn đề khác nảy sinh trong quá trình thực hiện thuật toán là sau khi con cháu được sinh ra (đã trải qua lai ghép và đột biến) thì chúng sẽ được đưa vào quần thể mới. Do dân số của quần thể là cố định nên sẽ có những cá thể phải nhường chỗ cho chúng. Việc lựa chọn phương thức thay thế cá thể trong quần thể cũ bằng những cá thể mới tạo ra 2 dạng thuật toán di truyền.
Thuật toán di truyền có tính thế hệ (generational GA): các cá thể con cháu sẽ được sinh ra và đưa vào một quần thể trung gian. Sau khi quần thể trung gian có đủ n cá thể rồi thì ta thay hoàn toàn quần thể cũ bằng quần thể trung gian này. Phương pháp này thể hiện tính “thay thế quyết liệt” trong quá trình chuyển đổi thế hệ từ quần thể này sang quần thể khác, và nếu không có kỹ thuật elitism hỗ trợ thì sẽ có khả năng bị mất mát những cá thể ưu tú. Tuy nhiên nó có ưu điểm là sự đa dạng trong kiểu gen qua các thế hệ, điều này đồng nghĩa với việc không gian tìm kiếm được khai phá rộng hơn.
Thuật toán di truyền có tính bền vững (steady-state GA): các cá thể con cháu sinh ra sẽ thay thế những cá thể có độ thích nghi kém nhất trong quần thể. Phương pháp này cho phép duy trì được những cá thể tốt qua các thế hệ nhưng có nhược điểm là do các cá thể có độ thích nghi kém “không có chỗ đứng” trong quần thể mới nên sẽ bị loại bỏ dứt khoát, thế nhưng trong những cá thể đó lại chứa đựng những “vật chất di truyền” xác định những thông số của lời giải tối ưu. Do đó, khi những cá thể này bị loại, những vật chất đó cũng không còn. Vì vậy ta có thể chỉ tìm được những cực trị địa phương.
2.3.2.5.3. Chiến lược tìm kiếm cực trị địa phương
Một trong những yếu tố quyết định sự thành công của thuật toán di truyền là việc khảo sát đa dạng trên không gian tìm kiếm và rà soát kỹ những vùng tiếp cận được. Tức là ta cần phải đảm bảo những vùng “hứa hẹn” chứa những lời giải tốt sẽ được khảo sát tới, và sau khi tiếp cận những vùng đó ta phải có cách để tìm kiếm điểm tối ưu của vùng đó. Việc lựa chọn hướng tiếp cận những vùng “hứa hẹn” được căn cứ vào dấu hiệu là độ thích nghi của các cá thể và kết hợp với những toán tử đột biến, lai ghép cho phép tạo những vùng tiềm năng mới. Việc rà soát trên những vùng đã tiếp cận được là nhiệm vụ của những thủ tục tìm kiếm cực trị địa phương. Do tính ngẫu nhiên, xác suất để những lời giải ta đang có rơi đúng vào những vị trí tốt nhất của những vùng “hứa hẹn” (điểm cực trị địa phương của không gian lời giải) là rất thấp, nhưng xác suất chúng nằm trong vùng lân cận của những cực trị này lại khá cao. Nếu ta không tìm cách dịch chuyển những điểm đã có đến những vị trí cực trị này thì ta đã lãng phí cơ hội có được những lời giải tốt (và nếu may mắn có thể ta lại gặp được lời giải tối ưu). Ngoài ra nếu không có chiến lược để rà soát những vùng đã tiếp cận được thì quá trình tiến hóa của thuật toán di truyền thực chất là một quá trình “chạy nhảy” ngẫu nhiên trong không gian tìm kiếm mà không có sự tận dụng những thông tin đã tích lũy được và thuật toán di truyền sẽ mất đi tính hiệu quả của nó.
Có nhiều cách khác nhau để tìm kiếm cực trị địa phương ở những vùng đã tiếp cận được. Dưới đây là một cách tìm kiếm cực trị địa phương cơ bản nhất.
Bước 1: Xuất phát từ một điểm “có chất lượng” mà ta đã có, chọn điểm này làm điểm hiện tại.
Bước 2: Xem xét toàn bộ các điểm thuộc vùng lân cận của điểm đó.
Bước 3: Chọn điểm lân cận có chất lượng tốt nhất trong số những điểm lân cận đó làm điểm hiện tại mới nếu như nó tốt hơn điểm hiện tại.
Bước 4: Lặp lại hai bước 2 và 3 cho đến khi tất cả các điểm lân cận đều có chất lượng không hơn điểm hiện tại.
Bước 5: Trả về điểm hiện tại làm cực trị cho vùng đang khảo sát.
Thủ tục tìm kiếm cực trị ở trên có tên gọi là kỹ thuật leo đồi (hill climbing), là một kỹ thuật hay được sử dụng trong thuật toán di truyền.
Chương 3
CÁC THUẬT TOÁN GIẢI BÀI TOÁN PHỦ ĐỈNH
Đối với các bài toán thuộc lớp NP – khó nói chung, việc tìm được lời giải chính xác cho bài toán thì đòi hỏi thời gian là hàm mũ đối với kích thước dữ liệu đầu vào của bài toán. Hiện nay vẫn chưa tìm ra được thuật toán hiệu quả để giải các bài toán loại này. Thay vào đó người ta phải sử dụng các phương pháp giải gần đúng để có thể thu được lời giải chấp nhận được trong thời gian đa thức. Như vậy, với bài toán phủ đỉnh nói riêng và lớp bài toán NP – khó nói chung, có hai phương pháp để giải quyết đó là sử dụng các thuật toán giải chính xác hoặc sử dụng thuật toán giải gần đúng. Các thuật toán chính xác sẽ đảm bảo tìm được lời giải đúng hay tối ưu, tuy nhiên không gian tìm kiếm về nguyên tắc là phải đầy đủ, do đó thời gian thực hiện là hàm mũ đối với dữ liệu đầu vào. Trong khi đó, thuật toán giải xấp xỉ không đảm bảo đưa ra được lời giải đúng nhưng độ chính xác của các lời giải thường đủ để đáp ứng được yêu cầu trong các ứng dụng và quan trọng là thời gian tìm ra lời giải là chấp nhận được.