逻辑游戏的数据结构/演绎规则/线索的充足集合?


11

我一直在忙于开发类似于爱因斯坦的《拼图》的逻辑游戏,该逻辑游戏每次重播都会有不同的线索。

您将使用什么数据结构来处理不同的实体(宠物,房屋的颜色,国籍等),演绎规则等,以确保您提供的线索指向独特的解决方案?

我很难思考如何使演绎规则与可能的线索一起发挥作用。任何见识将不胜感激。


1
我认为打比赛不会很有趣。解决一次之后,使用不同的规则再次进行操作与玩数独游戏没有太大不同。
o0'。

4
另一方面,人们在厌倦之前会做数以百计的数独游戏。而且,如果您将答案与某种实际行动联系在一起,而不只是输入数字或姓名,人们甚至不会抱怨它是数独。

这让我想起了这个游戏:nick.com/games/series.html
CeeJay 2010年

3
我建议考虑看看埃弗雷特卡瑟的游戏-他已经取得了的这种性质的比赛,尤其是夏洛克这是由非常益智的启发,但也有一些的其他游戏,像蜂巢酒店或他最新的游戏,哈德森太太。它可能会帮助您了解这种情况。
Michael Madsen 2010年

@乔:你说的话在技术上是正确的,但是这里重要的是要知道你(他)在做什么。如果您知道自己正在做数独游戏,那很好,而如果您认为自己在做其他事情,那几乎肯定会导致胡扯。
o0'。

Answers:


4

哇。实际上,这似乎是一种情况,其中老式的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),如果能带您走得很远,但我希望能有所帮助。


4

我的建议是查看AIMA项目随附的约束满足问题(CSP)的Python代码。他们使用字典(关联数组/哈希表)来跟踪有效约束。此外,还有用于解决CSP的几种算法的实现,例如最小冲突和AC3。

该代码包含一个示例Zebra问题作为示例,就像您链接到的那样。


1

实际上,这非常深入。维基百科从未提及这一点很奇怪。

您正在寻找的是非常艰难的证明,很可能可以通过Fitch证明来获得。因此,我们正在尝试从给定的数据中扣除事物。有很多Fitch证明生成器可以为您做很多工作。但是,有些练习只是无法证明。

我不知道用户是否应该进行计算。如果是这样,请注意3SAT之类的东西,这对于多项式时间是无法解决的问题。

至于您要使用的数据结构,我想您需要某种Rule类。规则可以是任何东西,具体取决于类型。谓词逻辑中没有很多规则,因此可以通过继承(if,iff和and或not ...)来克服。这些规则仅需评估。规则唯一能做的就是返回true或false。因为那是您对谓词逻辑所做的。在大学里,约翰·凯利John Kelly)建议我读这本书

回到这些类:您应该看到这些问题,就像您看到用数学实现普通计算一样。什么是+运算符?它包含两个参数,它们本身可以是一个新方程,也可以只是一个数字。我认为您对规则也有同样的看法。他们可以将新规则作为参数,也可以仅具有布尔值(所谓的谓词)。

希望对您有所帮助,尤其是参考资料。如果您想了解更多信息,或者我走错了方向,请告诉我。


问题不仅仅是在有限(而且很小!)模型上的谓词逻辑证明,或者我会回答而不是提供悬赏。我们的目标不是要解决的问题-我们的目标是自动使这一问题,并以有趣的方式。

@Joe问题即使是很小的问题,仍然是3SAT问题。如果仅创建“与”和“或”,这可能会导致令人不满意的事情,因此,我认为仅生成随机谜题将非常困难。拼图至少应包含一些限制。有时,向后推理可能是答案(有解决方案,不要
赘述

通用谓词逻辑实际上比3SAT难。但是,现代证明算法实际上非常好。除此之外,只需在线性时间内完成模型,难题和解决方案的检查即可-诀窍是确保提供的约束产生唯一的,可发现的解决方案。

@Joe那么,我们在确定此难题时可以确定的任何约束条件是吗?问题仍然是:使用什么数据结构。所以我仍然认为Rule上课是一个好主意。我认为仍然可以通过谓词逻辑对这些约束进行建模。
Marnix


-1

有解决这个问题的方法。

当然,我认为倒退并不难。就是这样的列表:

  • 弗雷德·红狗

  • 史蒂夫·蓝猫

  • 比尔·紫鲸

  • 埃里克·青海豚

可以很容易地生成它们,然后据此构成一组规则。

至于存储,为什么不分别设置一组单独的内容,例如[Fred,Steve,Bill,Eric]和一组答案[Fred,Red,Dog]。然后输入“ NAME(不是)ACTION OBJECT”。

当您开始研究时,独特的解决方案真的重要吗?只要您的游戏可以将它们拆分到列表中,并选中“设置1不包含鲸鱼”。


2
诀窍是,您希望问题仍然很棘手。如果您生成的规则接受90%的可能组合作为有效答案,那么这将不再是一个有趣的难题。

我想这是有道理的-但是解决方案不只是减少线索的数量吗?
共产党鸭子

1
不能。规格不足会导致许多有效的结论。规格超标可能会导致一个非常明显的结论。一个好的逻辑难题可以避免两者。

啊,是的,我以某种方式错过了。如果可以的话,我将尝试添加一个更好的解决方案。
共产党鸭子

乔:对,您的第一个评论完全正确。一个可以让您随意混合线索的难题,与其说是幼儿园艺术项目,不如说是难题。
taserian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.