Độ phức tạp thời gian của thuật toán di truyền


9

Làm thế nào để bạn xác định độ phức tạp thời gian của một thuật toán di truyền (nói chung)? Nếu có thể.

Tôi đã suy nghĩ về điều này rất nhiều, và tất cả những gì tôi dạy có liên quan đến việc xác định Độ phức tạp thời gian của các vấn đề ít mang tính ngẫu nhiên hơn trong tự nhiên.


1
Hầu như không có gì đảm bảo rằng một thuật toán di truyền sẽ tìm thấy một giải pháp đủ tốt. Vì vậy, thật khó để nói về việc sẽ mất bao lâu. Mặc dù tôi đoán rằng bạn đang tìm kiếm một cách tiếp cận xác suất để bắt đầu ... Đây là một bài báo mà tôi đã tìm thấy có vẻ phù hợp.
Karolis Juodelė

Đáng yêu, cảm ơn bạn. Đó sẽ là một số đọc cho tàu của tôi vào ngày mai.
Jack H

Câu trả lời:


8

Các thuật toán di truyền là một siêu dữ liệu và do đó không có phân tích chung áp dụng cho tất cả các thuật toán di truyền cùng một lúc (mà không phải là siêu lỏng lẻo). Nói chung, khi bạn đang tìm kiếm thông tin về thời gian chạy của thuật toán di truyền, bạn sẽ gặp nhiều may mắn hơn nếu bạn sử dụng thuật ngữ "thời gian hội tụ", vì đó là thuật ngữ phổ biến hơn. Một khởi đầu tốt cho một số kỹ thuật chính thức:

Y. Rabinovich, A. Tóc giả. Kỹ thuật giới hạn tốc độ hội tụ của các thuật toán di truyền. Thuật toán cấu trúc ngẫu nhiên, tập. 14, không 2, 111-138, 1999.

Để có thêm tài nguyên về các phương pháp điều trị chính thức, hãy xem xét câu hỏi cstheory : Các tuyên bố có thể chứng minh về thuật toán di truyền .


3

Tôi đồng ý với các câu trả lời trước, và tôi cũng thêm vào sau đây.

Chúng ta thường không quan tâm đến sự phức tạp thời gian của một thuật toán di truyền. Chúng tôi thường quan tâm đến kết quả tốt như thế nào so với một số điểm chuẩn và về tốc độ hội tụ.

Tuy nhiên, bạn có thể thấy các thuật toán di truyền chạy trong các lần lặp. Ban đầu, một tập hợp các giải pháp được tạo ngẫu nhiên ( được gọi là dân số). Các chi phí của các giải pháp của được tính toán. Một số thao tác được thực hiện qua các giải pháp của trong mỗi lần lặp như giao nhau, đột biến, v.v. Các giải pháp tốt nhất trong được giữ trong và chúng tôi tiếp tục như trước. Sau lần lặp cuối cùng, chúng tôi đưa ra giải pháp tốt nhất mà chúng tôi tìm thấy.SSSSkkS

Bạn có thể lưu ý ở đây rằng chi phí thời gian của một lần lặp phụ thuộc vào các hoạt động bên trong (ví dụ crossover, đột biến và những người khác, việc tìm kiếm tốt nhất giải pháp khác nhau, tạo ra các giải pháp ngẫu nhiên, chi phí tính toán trong những giải pháp của vv ..) mà thường đơn giản để thực hiện, và cũng phụ thuộc vào vấn đề. Nói chung, chúng phụ thuộc vào kích thước của một giải pháp.kS

Thời gian thực hiện của một thuật toán di truyền cũng phụ thuộc vào số lần lặp (rõ ràng!). Thông thường, chúng tôi muốn dừng lại khi chúng tôi hội tụ một giải pháp hầu như không được cải thiện. Làm thế nào để tìm số lần lặp đảm bảo điều này? có một số phân tích xác suất để tìm thời gian hội tụ trung bình. Xem ví dụ [1] (kết quả khá thú vị). Nhưng bạn sẽ lưu ý rằng chúng tôi chưa đạt đến mức độ phân tích các vấn đề phức tạp nơi sử dụng thuật toán di truyền. Do đó, trong nhiều trường hợp, số lần lặp trong thuật toán di truyền được quyết định bằng thực nghiệm.

[1] Oliveto, Pietro S., Jun He và Xin Yao. "Độ phức tạp thời gian của các thuật toán tiến hóa để tối ưu hóa tổ hợp: Một thập kỷ kết quả." Tạp chí quốc tế về tự động hóa và tính toán 4.3 (2007): 281-293.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.