我们都知道遗传算法可以给出最优或接近最优的解决方案。因此,在诸如 NP-hard 问题之类的问题中,在时间和最优解之间进行权衡,接近最优解就足够了。
既然不能保证找到最优解,那么 GA 是否被认为是解决 Knuth 问题的好选择?
根据人工智能:现代方法(第三版),第 3.2 节(第 73 页):
Knuth 推测,从数字 4 开始,一系列阶乘、平方根和下限运算将达到任何所需的正整数。
例如,可以从 4 达到 5:
地板(sqrt(sqrt(sqrt(sqrt(sqrt((4!)!))))))
因此,如果我们有一个数字(5),并且我们想知道上述 3 个操作的顺序以达到给定的数字,那么染色体的每个基因将是一个数字,代表一个特定的操作,并带有一个额外的数字(无操作),适应度函数将是给定数字与我们通过对每个染色体按一定顺序应用操作得到的数字之间的绝对差(到最小值)。让我们考虑迭代次数(代数)是在没有最优解的情况下完成的,我们拥有的最接近的数字是 4(适应度为 1),问题是我们可以通过对 4 不应用任何操作得到 4,而对于 5 我们需要许多操作,因此接近最优的解决方案甚至不接近解决方案。
那么,GA是不是不适合这类问题呢?还是建议的染色体表示和适应度函数不够好?