首先,我要说我对理论之类的东西知之甚少。但我想知道这是一个 NP 还是 NP 完全问题。这听起来像是子集和问题的一个特例。
无论如何,我最近一直在玩这款名为 Alchemy 的游戏,它引发了这个想法。基本上,您从 4 个基本元素开始,然后将它们组合成其他元素。
因此,例如,如果您愿意制作元素,这是一个简短的“食谱”
火=基本元素 水=基本元素 空气=基本元素 地球=基本元素 沙子=土+土 玻璃=沙子+火 能量=火+空气 灯泡=能量+玻璃
因此,假设一台计算机只能创建 4 个基本元素,但它可以创建多组元素。因此,您编写一个程序来通过组合其他元素来制作任何元素。该程序将如何处理创建灯泡的列表?
很明显,火+空气=能量,土+土=沙,沙+火=玻璃,能量+玻璃=灯泡。
但是我想不出任何方法来编写程序来处理列表并在不使用蛮力类型方法并检查每个元素并检查其配方的情况下弄清楚这一点。
这是一个NP问题吗?或者我只是无法弄清楚这一点?