algorithm - 遗传规划和搜索算法

标签 algorithm sorting genetic-programming

遗传编程目前是否能够将一种搜索算法演变成另一种搜索算法?例如,是否有任何实验曾经从 QuickSort 培育/变异 BubbleSort(参见 http://en.wikipedia.org/wiki/Sorting_algorithm)

最佳答案

您可能想看看 80 年代 W. Daniel Hillis 的作品。他花了很多时间通过遗传编程创建分类网络。虽然他更感兴趣的是解决固定数量对象的排序问题(近十年来 16 对象排序网络一直是一个主要的学术问题),但如果您是对遗传排序算法非常感兴趣。

在对任意长度列表进行排序的算法的演化过程中,您可能还想熟悉协同演化的概念。我之前建立了一个共同进化系统,重点是让一个遗传算法进化排序算法,而另一个 GA 开发未排序的数字列表。排序器的适应度是它的准确性(如果它是 100% 准确的话,加上减少比较的奖励),列表生成器的适应度是排序算法在对其列表进行排序时犯了多少错误。

要回答你关于泡泡是否曾经从 quick 进化而来的具体问题,我不得不说我会严重怀疑它,除非程序员的适应度函数既非常具体又不明智。是的,气泡非常简单,所以也许其适应度函数是准确性加上程序大小的 GP 最终会找到气泡。然而,当决定运行时间的是后者时,为什么程序员会选择大小而不是比较次数作为适应度函数?

通过询问 GP 是否可以将一种算法演变成另一种算法,我想知道您是否完全清楚 GP 是什么。理想情况下,每个独特的染色体都定义了一个独特的类别。 200 条染色体代表 200 种不同的算法。是的,quick 和 bubble 可能在某处,但其他 198 种可能未命名的方法也是如此。

关于algorithm - 遗传规划和搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915057/

相关文章:

algorithm - 条件语句的时间复杂度

计算浮点值哈希码的算法?

algorithm - Np-硬度降低

c++ - 在 C++ 中使用 sort() 对二维字符数组进行排序

java - 需要帮助解决遗传算法问题

arrays - 高效的矩阵转置算法

python - 根据子字符串拆分和排序列表

javascript - 重新排序对象数组,使数组的每个位置都有一个特定的键/值对

c# - .Net 中的遗传算法 - 可变染色体 - 外星飞船场景

python - 改变方程的 ast.NodeTransformer 示例