首先,我要说我对理论等知之甚少。但我想知道这是NP还是NP完全问题。它特别听起来像子集和问题的一个特例。
无论如何,我最近一直在玩这个叫Alchemy的游戏,这促使了这个想法。基本上你从4个基本元素开始,并将它们组合起来制作其他元素。
因此,例如,如果您要制作元素
,这是一个简短的“食谱”fire=basic element water=basic element air=basic element earth=basic element sand=earth+earth glass=sand+fire energy=fire+air lightbulb=energy+glass
因此,假设一台计算机只能创建4个基本元素,但它可以创建多组元素。所以你编写一个程序,通过组合其他元素来制作任何元素。这个程序如何处理列表创建一个灯泡?
显然火+空气=能量,土+土=沙,沙+火=玻璃,能量+玻璃=灯泡。
但我想不出任何方法来编写一个程序来处理一个列表,并在没有使用暴力类型方法并查看每个元素并检查其配方的情况下计算出来。
这是NP问题吗?或者我只是无法解决这个问题?
答案 0 :(得分:4)
这个程序如何处理创建灯泡的列表?
当然你只是向后运行定义;例如
等等。这实际上是一个简单的树步行。
OTOH,如果你想让计算机弄清楚能量+玻璃意味着灯泡(而不是“熔岩玻璃”),你就没有机会解决这个问题。你可能无法让2名玩家同意能量+玻璃=灯泡!答案 1 :(得分:3)
您可以轻松地将问题建模为图形,并使用任何完整的搜索算法查找解决方案。如果您没有任何经验,也可能有助于调查automated planning。我正在链接到该文本,因为它还介绍了复杂性和搜索算法。