相关疑难解决方法(0)

网球比赛安排

球员数量有限,网球场数量有限.在每轮比赛中,最多可以有比赛更多的比赛.没有休息,没有人打2轮.每个人都与其他人比赛.制定尽可能少轮次的计划.(由于每个人的轮次之间必须休息的规则,可以有一轮没有比赛.)5名球员和2个球场的输出可以是:

 |  1   2   3   4   5
-|------------------- 
2|  1   - 
3|  5   3   - 
4|  7   9   1   - 
5|  3   7   9   5   -
Run Code Online (Sandbox Code Playgroud)

在此输出中,列和行是播放器编号,矩阵内的数字是这两个玩家竞争的圆形数字.

问题是找到一种算法,可以在可行的时间内为更大的实例执行此操作.我们被要求在Prolog中这样做,但任何语言的(伪)代码都是有用的.

我的第一次尝试是一种贪婪的算法,但这会产生太多轮次的结果.然后我建议迭代加深深度优先搜索,我的一个朋友实现了,但是仍然花了太多时间在小到7个玩家的实例上.

(这是一个旧的考试问题.我接触过的任何人都没有任何解决方案.)

algorithm scheduling prolog clpfd

42
推荐指数
3
解决办法
8354
查看次数

Prolog在技术上如何运作?引擎盖下有什么?

我想了解更多有关Prolog内部的知识,并了解其工作原理.

我知道如何使用它.但不是内部如何运作.Prolog中使用的算法和概念的名称是什么?

可能它构建了某种树结构或有向对象图,然后在查询时,它使用复杂的算法遍历该图.可能是深度优先搜索.可能有一些源代码,但首先从高层次的角度来看它会很棒.

我真的很喜欢人工智能,理解Prolog似乎是一个很好的开始,imho.我的想法是尝试重建类似的东西并完全跳过解析器部分.我需要知道我必须做的研究工作的方向.

artificial-intelligence prolog

32
推荐指数
3
解决办法
5236
查看次数

WAM的替代品

我记得有一次读到至少有两个与WAM同时发明的其他替代品.有什么指针吗?

prolog warren-abstract-machine

26
推荐指数
3
解决办法
2360
查看次数