Là một thuật toán di truyền cần thiết khi tính toán là vô cùng nhanh chóng?


8

Từ những gì tôi hiểu, các thuật toán di truyền thử nhiều biến thể và đánh giá mức độ phù hợp của từng biến thể. Sau đó, họ chọn các biến thể tốt nhất, thay đổi chúng một chút và tiếp tục quá trình với thế hệ tiếp theo.

Nhưng nếu chúng ta có tài nguyên tính toán không giới hạn thì sao? Sau đó chúng ta có thể thử tất cả các biến thể có thể và đánh giá thể lực của chúng mà không cần dùng đến quy trình phức tạp để tạo ra các thế hệ mới không? Nói cách khác, các thuật toán di truyền chỉ cần thiết khi tính toán đắt tiền và khi phương pháp vũ phu là không thể? Hay họ cũng thêm những lợi ích khác?


1
Tôi đã gắn cờ cái này là thuộc về Stackoverflow, nhưng theo tôi nó thuộc về trang Khoa học Máy tính (không có tùy chọn nào trong trình hướng dẫn gắn cờ). (Nhưng tôi vẫn nêu lên; câu hỏi thú vị!)
Patrick M

5
Nếu bạn có bộ nhớ vô hạn và tính toán nhanh vô hạn, bạn có thể tạo tất cả các trạng thái có thể có của hệ thống, sau đó đánh giá mọi trạng thái và chọn trạng thái lý tưởng hoặc kết luận rằng không có trạng thái nào khả thi là thỏa đáng. "Vô hạn" làm cho toàn bộ câu hỏi của IMO vô nghĩa. Chà, ngoại trừ nếu không gian vấn đề là vô hạn, nhưng sau đó chúng ta sẽ bị loại bỏ khỏi mọi thứ mà một "lập trình viên" có thể làm.
hyde

Câu trả lời:


14

Các thuật toán di truyền về cơ bản là một phương pháp thử và sai hướng dẫn. Ưu điểm duy nhất tôi có thể nghĩ đến đối với GA so với tìm kiếm toàn diện là vì GA tối ưu hóa chức năng tập thể dục theo các bước, bạn có thể có được giải pháp tối ưu nhanh hơn, vì GA sẽ ưu tiên các giải pháp tốt hơn. Một tìm kiếm toàn diện được đảm bảo để tìm ra giải pháp có thể đi một chặng đường dài.

  • Nếu "tài nguyên tính toán" có nghĩa là CPU nhưng không phải bộ nhớ, thì nhóm gen GA có thể có dung lượng bộ nhớ nhỏ hơn, cần ít bộ nhớ hơn.

  • Mặt khác, do leo đồi, GA có thể bị kẹt ở mức tối đa cục bộ & mọi đột biến có thể không đủ để làm lung lay nó.

  • Ngoài ra, thời gian tìm kiếm cho GA tăng theo cấp số nhân với kích thước của đầu vào, do đó, một tìm kiếm toàn diện cuối cùng có thể nhanh hơn, tùy thuộc vào kích thước của không gian bạn đang tìm kiếm và nếu bạn có thể giới hạn kích thước của không gian bằng cách loại trừ các khả năng.

...

Gần đây tôi đã suy nghĩ về GA theo "entropy mỗi giây" và đo lường tiến trình GA của tôi như là thước đo xem có bao nhiêu khả năng khác biệt mà nó chạy qua mỗi giây. Sau đó, tôi có thể so sánh nó với tổng số entropy của không gian vấn đề. Nếu một tìm kiếm vũ phu có thể đánh bại entropy mỗi giây bằng cách xử lý song song hoặc xử lý nhanh, thì "điểm số tốt nhất" của GA sẽ không tốt hơn "điểm số tốt nhất" được phát hiện.

Nhưng tôi vừa mới làm phiền điều đó; Tôi chưa thực sự sử dụng GA theo cách đó.

(Entropy ln(N)dành cho N trạng thái có thể, hoặc ln(N) - sum(n * ln(n) for all n) / Nđâu nlà cách có thể để đạt được một kết quả trong số N kết quả có thể xảy ra.)

Câu hỏi thú vị :)


1
Không phải câu hỏi entropy này về cơ bản sôi sục đến "GA thường lặp lại trạng thái và vũ lực không bao giờ làm"? Cách tôi có xu hướng nghĩ về nó như một thuật toán tìm kiếm định nghĩa và được xác định bởi một hoán vị trên không gian giải pháp. Nói tóm lại, một thuật toán tìm kiếm không có gì khác hơn là thứ tự mà nó truy cập vào các điểm (modulo một số chi phí do sự lặp đi lặp lại). Các định lý NFL có ý nghĩa hoàn hảo sau đó - Tôi luôn có thể xây dựng một vấn đề mà thuật toán của tôi sẽ gặp tối ưu sớm hơn của bạn và ngược lại.
deong

1
@deong Trong nhiều trường hợp, trạng thái tốt hơn hoặc thậm chí trạng thái tối ưu, đôi khi có thể bị từ chối (ví dụ: hệ thống không xác định), do đó có thể cần phải tìm kiếm trường hợp nhiều lần.
phục hồi

1
Tôi muốn nói có nhiều hơn một chút so với điều này; trước hết, trong khi câu hỏi đặt ra trước "tài nguyên tính toán không giới hạn", GA thường được sử dụng khi tìm kiếm toàn diện là hoàn toàn không khả thi (chúng ta đang nói "chờ vũ trụ kết thúc" ở đây, bạn có thể tiếp cận nhanh chóng với bất kỳ vấn đề thú vị nào). Thứ hai, GA có một toán tử chéo, ngoài đột biến cũ đơn giản; đối với một số loại vấn đề nhất định (NFL đang nắm giữ), đây là một heuristic rất tốt và tốt hơn nhiều so với tìm kiếm toàn diện. Phần còn lại, tôi phần lớn đồng ý với.
Daniel B

4
GA thường không được sử dụng để tìm giải pháp tối ưu. Họ đang tìm giải pháp hợp lý trong một khoảng thời gian giới hạn.
Cruncher

1
Mô phỏng luyện kim là một biến thể của thuật toán di truyền nhằm giải quyết vấn đề cực đại / cực tiểu cục bộ rất hiệu quả.
đệ

6

Có, nếu tính toán là miễn phí, thì bạn sẽ không cần thuật toán di truyền nào cả. Nhưng hãy nhớ rằng đây là một chữ "nếu" khổng lồ, to lớn mà không ai trong chúng ta sẽ sống để thấy!

Tuy nhiên, vì bạn đang hỏi ... nếu tính toán là vô cùng nhanh chóng, sẽ không có lý do gì để không áp dụng búa tạ tạo và thử nghiệm tổ hợp vũ lực đơn giản nhất cho một vấn đề. Mọi câu hỏi có thể được trả lời với một bộ thông tin hữu hạn (nghĩa là một vấn đề thỏa mãn ràng buộc theo nghĩa lỏng lẻo nhất có thể của thuật ngữ đó, thực sự khá lỏng lẻo) sẽ có thể được giải quyết ngay lập tức; leo đồi, heuristic và tất cả các đơn giản hóa thông minh mà chúng ta hiện đang sử dụng để xây dựng, ví dụ như một động cơ cờ vua đẳng cấp thế giới đơn giản là không cần thiết.

Nói cách khác, nếu tính toán đạt tốc độ vô hạn, quyết định sử dụng phương pháp tiếp cận sẽ được xác định dựa trên mức độ khó để viết chương trình máy tính được thực thi, chứ không phải mất bao lâu để thực sự thực thi; và điều đó có nghĩa là đơn giản là không đáng để phát minh ra một thuật toán phức tạp hơn khi đơn giản nhất có thể cũng sẽ hoạt động và chạy cùng một lúc.

Có thể cho rằng, tính toán thực sự đã đi theo hướng này, nhưng một lần nữa, hãy nhớ rằng, chúng ta chưa hoàn toàn ở đó, và có lẽ sẽ không bao giờ. (Tất nhiên trừ khi máy tính lượng tử được hoàn thiện, tất nhiên.)


3
Ngay cả khi máy tính lượng tử được hoàn thiện, chúng tôi vẫn nghi ngờ (nhưng chưa biết chắc chắn) rằng NP-Complete không phải là tập hợp con của BQP. Nếu đúng, điều này có nghĩa là loại vấn đề có thể giải quyết được bằng máy tính lượng tử có xác suất cao trong thời gian đa thức không bao gồm các vấn đề tối ưu hóa NP-hard mà người ta thường sử dụng GA.
deong

1
Có hậu quả lớn hơn nhiều với tốc độ tính toán vô hạn ... Ví dụ, tất cả các vấn đề dễ nhận biết giờ trở nên có thể quyết định được. Yay cho vấn đề tạm dừng!
Cruncher

3

Vấn đề với các tính toán cực kỳ nhanh là chúng cực nhanh bao trùm một không gian trạng thái lớn hơn giới hạn thông tin của vũ trụ chúng ta đã biết. Bạn đã đề cập đến "lực lượng vũ phu", tuy nhiên, hãy xem xét rằng vũ phu buộc cờ vua chẳng hạn, có thể tạo ra một sản lượng vượt quá kích thước số lượng nguyên tử trong vũ trụ.

Lấy ví dụ về cờ vua hơn nữa, khi bạn đánh bại cờ vua, bạn phải giảm số lượng tổ hợp bàn cờ mà bạn xem xét và bạn sẽ phải đưa ra quyết định giữ trạng thái nào và loại bỏ trạng thái nào - vì vậy, thực sự là các thuật toán chọn lọc, chẳng hạn như các thuật toán di truyền, sẽ mãi mãi là cần thiết.


1
Chà, trừ khi vật lý kỳ lạ như các đường cong theo thời gian đóng (gần cuối) hóa ra hoạt động và có thể được khai thác để tính toán cho mục đích chung.

Thật ra GA không tốt chút nào cho cờ vua. Cắt tỉa heuristic, vâng
Konrad Morawski

Nhắc tôi về câu chuyện này ... Lần đầu tiên đọc nó, tôi đã bối rối tại sao việc viết một thói quen tìm kiếm lại mất nhiều thời gian - tôi phải mất một thời gian để nhận ra rằng khía cạnh "tìm kiếm" khác với khía cạnh "mô phỏng" .
Đại bàng

2

Nếu theo "tài nguyên tính toán không giới hạn", bạn có nghĩa là thuật toán của bạn sẽ mất 0 thời gian và bộ nhớ là không giới hạn và điện không phải lo ngại, tôi sẽ nói rằng thuật toán duy nhất để sử dụng sẽ là thuật toán mạnh mẽ thử mọi đầu vào có thể và được đảm bảo để tìm ra thứ tốt nhất Nếu bạn đang đề cập đến bộ nhớ không giới hạn nhưng có thể có sự khác biệt về thời gian cần thiết, thì thuật toán di truyền có thể thích hợp hơn vì nó có thể đi đến một giải pháp nhanh hơn thuật toán vũ phu. Nhưng giải pháp của thuật toán di truyền có thể không tối ưu, do đó tùy thuộc vào ngữ cảnh và yêu cầu của bạn, bạn vẫn có thể thích phương pháp vũ phu.

Cho rằng tài nguyên tính toán không giới hạn là không thể, câu hỏi lúc đầu có vẻ giống như suy đoán nhàn rỗi. Nhưng khi chúng ta ngày càng có nhiều sức mạnh tính toán, câu hỏi trở nên phù hợp hơn bởi vì chúng ta có thể không cần các thuật toán di truyền trong thời đại siêu máy tính khổng lồ. Tuy nhiên, tôi đã nhận thấy rằng ngay cả khi máy tính trở nên mạnh hơn, chúng tôi vẫn yêu cầu chúng thực hiện các tính toán khó hơn và khó hơn với ngày càng nhiều dữ liệu. Vì vậy, cuối cùng, tôi nghĩ rằng các thuật toán di truyền sẽ ở với chúng ta trong tương lai gần và sẽ được sử dụng ngay cả khi có rất nhiều sức mạnh tính toán.

Tuy nhiên, nếu tài nguyên tính toán thực sự không giới hạn từng có sẵn, sẽ có nhiều thay đổi hơn so với việc có sử dụng thuật toán di truyền hay không.


Dọc theo dòng chữ "không cần thuật toán tốt hơn" hoặc những gì có trong tương lai vì máy móc của chúng tôi rất mạnh: Tôi thường nghĩ về những tối ưu hóa nhỏ được tạo ra trong các CPU đầu tiên như đường ống. Ngày nay có vẻ tầm thường đối với chúng ta để có thêm một vài chu kỳ đồng hồ, nhưng những chu kỳ đó cộng lại. Tôi nghĩ rằng điều quan trọng là tiếp tục thực hiện những tối ưu hóa nhỏ này để giúp thúc đẩy chúng ta hướng tới các máy tính siêu nhanh trong tương lai. Không có chúng, chúng ta chỉ có những máy tính nhanh.
DLeh
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.