问题 – 我有10张卡片,数值从1到10。现在我需要排列这些卡片,使得任意5张卡片的总和为36,剩余5张卡片的乘积为360。
我已经成功地用Java编写了一个遗传算法来解决卡牌问题。现在我想用神经网络来解决同样的问题。是否可以用神经网络来解决这个问题?我应该采取什么方法呢?
回答:
直接用神经网络解决这个问题是非常困难的。神经网络没有关于总和或乘积的概念,因此它们无法直接区分有效和无效的解决方案。
如果你创建了足够的例子并对它们进行标记,那么神经网络或许可以通过记忆所有例子来学会区分“好”和“坏”的排列方式。但这是一种非常低效且不准确的方法,而且这在某种程度上是毫无意义的——你需要一个单独的程序来解决这个问题,以便创建数据来训练神经网络。
附注:我认为你能让遗传算法成功运行是有点幸运的——我猜这是因为问题足够小,遗传算法能够尝试大部分可能的解,最终在答案附近偶然找到正确的答案。