我一直在忙于开发类似于爱因斯坦的《拼图》的逻辑游戏,该逻辑游戏每次重播都会有不同的线索。
您将使用什么数据结构来处理不同的实体(宠物,房屋的颜色,国籍等),演绎规则等,以确保您提供的线索指向独特的解决方案?
我很难思考如何使演绎规则与可能的线索一起发挥作用。任何见识将不胜感激。
我一直在忙于开发类似于爱因斯坦的《拼图》的逻辑游戏,该逻辑游戏每次重播都会有不同的线索。
您将使用什么数据结构来处理不同的实体(宠物,房屋的颜色,国籍等),演绎规则等,以确保您提供的线索指向独特的解决方案?
我很难思考如何使演绎规则与可能的线索一起发挥作用。任何见识将不胜感激。
Answers:
哇。实际上,这似乎是一种情况,其中老式的AI语义网(如Richard Bartle认为当他撰写《人工智能和计算机游戏》时对游戏的未来将至关重要)会很有用。基本上,您有几个数据列表(数据库表等),其中第一个指定有关事物之间如何关联的规则,例如:
a PERSON must LIVE IN a DOMICILE
a PERSON must OWN an ANIMAL
a PERSON must DRINK a BEVERAGE
a PERSON must SMOKE a CIGARETTE BRAND
a PERSON must BE OF a NATIONALITY
a DOMICILE must BE IN a POSITION
a DOMICILE must BE OF a COLOR
然后,您具有以下类别的实例:
ANIMAL: dog snail zebra fox horse
BEVERAGE: milk tea OJ coffee water
CIGARETTE BRAND: Kools Parliaments Luckies OldGold Chesterfields
NATIONALITY: Englishman Spaniard Ukrainian Japanese Norwegian
POSITION: first second third fourth fifth
COLOR: red green yellow ivory blue
这些数据结构不能完全封装情况-您需要唯一性约束,并且某些类别需要元规则,例如POSITION
需要处理“右侧”,“左侧”和“下一个”例如,“问题”到“概念”,但问题的结构似乎强烈暗示了它们。
邓诺(Dunno),如果能带您走得很远,但我希望能有所帮助。
实际上,这非常深入。维基百科从未提及这一点很奇怪。
您正在寻找的是非常艰难的证明,很可能可以通过Fitch证明来获得。因此,我们正在尝试从给定的数据中扣除事物。有很多Fitch证明生成器可以为您做很多工作。但是,有些练习只是无法证明。
我不知道用户是否应该进行计算。如果是这样,请注意3SAT之类的东西,这对于多项式时间是无法解决的问题。
至于您要使用的数据结构,我想您需要某种Rule
类。规则可以是任何东西,具体取决于类型。谓词逻辑中没有很多规则,因此可以通过继承(if,iff和and或not ...)来克服。这些规则仅需评估。规则唯一能做的就是返回true或false。因为那是您对谓词逻辑所做的。在大学里,约翰·凯利(John Kelly)建议我读这本书。
回到这些类:您应该看到这些问题,就像您看到用数学实现普通计算一样。什么是+
运算符?它包含两个参数,它们本身可以是一个新方程,也可以只是一个数字。我认为您对规则也有同样的看法。他们可以将新规则作为参数,也可以仅具有布尔值(所谓的谓词)。
希望对您有所帮助,尤其是参考资料。如果您想了解更多信息,或者我走错了方向,请告诉我。
Rule
上课是一个好主意。我认为仍然可以通过谓词逻辑对这些约束进行建模。
我没有很好的答案,但是在寻找关于同类问题的提示时,我在github上找到了这个存储库:
https://github.com/nateinaction/Zebra-Puzzle
它包含一些逻辑,用于选择线索并确定使难题可解决所需的线索数。
当然,我认为倒退并不难。就是这样的列表:
弗雷德·红狗
史蒂夫·蓝猫
比尔·紫鲸
埃里克·青海豚
可以很容易地生成它们,然后据此构成一组规则。
至于存储,为什么不分别设置一组单独的内容,例如[Fred,Steve,Bill,Eric]和一组答案[Fred,Red,Dog]。然后输入“ NAME(不是)ACTION OBJECT”。
当您开始研究时,独特的解决方案真的重要吗?只要您的游戏可以将它们拆分到列表中,并选中“设置1不包含鲸鱼”。