【发布时间】:2015-01-18 11:52:46
【问题描述】:
我需要在 Prover9 中为以下谜题建模
一个港口有5艘船:
- 希腊船六点出发,载着咖啡。
- 中间的船有一个黑色的烟囱。
- 英国船九点出发。
- 蓝色烟囱的法国船位于运送咖啡的船的左侧。
- 载可可的船的右侧是一艘前往马赛的船。
- 巴西船正驶向马尼拉。
- 载米的船旁边是一艘带绿色烟囱的船。
- 去热那亚的船五点出发。
- 西班牙船七点出发,在前往马赛的船的右侧。
- 带红色烟囱的船驶往汉堡。
- 七点出发的船旁边是一艘带白色烟囱的船。
- 边境的船载着玉米。
- 黑色烟囱的船八点出发。
- 运送玉米的船锚定在运送大米的船旁边。
- 去汉堡的船六点出发。
哪艘船开往塞得港?哪艘船运茶?
据我所知,prover9 接受一阶逻辑子句。但我真的不擅长将自然语言转换为 fol。有人可以告诉我如何以一阶逻辑对此进行建模,或许可以告诉我如何转换第一条语句?
【问题讨论】:
-
Port Said 是一个端口吗? 15 个陈述中的任何一个都暗示了塞得港的存在在哪里?我们知道有船载茶吗?我的意思是……这里有更多信息吗……比如“有 5 艘船,一艘载茶、一艘玉米、一份大米、一份咖啡和一份可可”?我们是否有 5 艘船在 5 个不同的时间离开,5 艘船有 5 种不同的烟囱颜色,前往 5 个不同的港口?我们知道所有 5 个端口的名称吗?
-
这就是此类任务的本质......对于三个实体(旗帜、烟囱颜色、出发时间),15 个语句给出了五个值,但只有四个用于目的地和货运。这些缺失值在最后一个问题中给出……(您可以将最后一个问题写为 16。一艘船运茶,一艘船前往塞得港)……但这些陈述足以在矩阵中留下两个洞船只。
标签: theorem-proving first-order-logic zebra-puzzle