Генетическое программирование и поисковые алгоритмы - PullRequest
6 голосов
/ 06 февраля 2011

Способно ли генетическое программирование в настоящее время преобразовывать один тип алгоритма поиска в другой?Например, проводил ли когда-либо эксперимент с BubbleSort из QuickSort когда-либо созданный / мутировавший (см. http://en.wikipedia.org/wiki/Sorting_algorithm)

Ответы [ 3 ]

3 голосов
/ 06 февраля 2011

Возможно, вы захотите взглянуть на работы В. Даниэля Хиллиса из 80-х. Он потратил много времени на создание сетей сортировки с помощью генетического программирования. Хотя он был более заинтересован в решении проблемы сортировки постоянного числа объектов (сети сортировки из 16 объектов были серьезной академической проблемой в течение почти десятилетия), было бы неплохо ознакомиться с его работой, если вы действительно заинтересованы в генетических алгоритмах сортировки.

При разработке алгоритма сортировки списка произвольной длины вы также можете ознакомиться с концепцией коэволюции. Ранее я построил коэволюционную систему, в которой смысл заключался в том, чтобы один генетический алгоритм развивал алгоритмы сортировки, а другой ГА разрабатывал несортированные списки чисел. Пригодность сортировщика - это его точность (плюс бонус за меньшее количество сравнений, если он точен на 100%), а пригодность генератора списков заключается в том, сколько ошибок делают алгоритмы сортировки при сортировке своего списка.

Чтобы ответить на ваш конкретный вопрос о том, эволюционировал ли пузырь когда-либо быстро, я должен был бы сказать, что я серьезно сомневаюсь в этом, если только фитнес-функция программиста не будет очень специфической и опрометчивой. Да, пузырек очень прост, поэтому, возможно, терапевт, чья фитнес-функция состояла в точности плюс размер программы, в конечном итоге обнаружил бы пузырь. Однако зачем программисту выбирать размер вместо числа сравнений в качестве фитнес-функции, когда именно последняя определяет время выполнения?

Спрашивая, может ли GP превратить один алгоритм в другой, я задаюсь вопросом, полностью ли вы понимаете, что такое GP. В идеале каждая уникальная хромосома определяет уникальный вид. Население 200 хромосом представляет 200 различных алгоритмов. Да, где-то там может быть quick и bubble, но есть и 198 других, потенциально неназванных, методов.

2 голосов
/ 06 февраля 2011

Нет причин, по которым GP не мог развиваться, например, любой тип алгоритма. Я не уверен, что действительно имеет смысл думать об эволюции одного "в" другого. GP просто разработает программу, которая будет все ближе к определенной вами фитнес-функции.

Если ваша фитнес-функция смотрит только на правильность сортировки (и при условии, что у вас есть надлежащие строительные блоки для использования вашим GP), то она вполне может развить BubbleSort и QuickSort. Если вы также включите эффективность в качестве меры пригодности, то это может повлиять на то, какой из них будет определен как лучшее решение.

Вы можете посеять GP, например, QuickSort, и если у вас есть подходящая функция пригодности, она, безусловно, может в конечном итоге создать BubbleSort, но она может предложить и все, что более подходит, чем QuickSort.

Теперь, сколько времени понадобится движку GP для этой эволюции - это другой вопрос ...

1 голос
/ 06 февраля 2011

Я не знаю ни одного, и конкретное направление, которое вы предлагаете в своем примере, кажется маловероятным;это потребовало бы своего рода извращенной функции пригодности, поскольку пузырьковая сортировка в большинстве случаев хуже быстрой сортировки.Это не исключено, что это может произойти, но в целом, когда у вас есть хорошо понятный алгоритм, он уже вполне пригоден - переход к другому, вероятно, требует прохождения некоторых худших вариантов.минимумы не являются неизвестной проблемой для большинства поисковых стратегий.

...