我正在尝试制作如下益智游戏: 1.顶点以一个循环排列,从位置0开始,即顶点(最后)和 顶点(0)是在适当的位置相邻。
For this game, nodeTotal, the total number of vertices, is ranged
between 4 and 12 inclusive.
每个顶点具有对应的号码,numInNode,指定 访问该顶点可以访问哪个顶点。
By visiting a vertex at position p, the vertex with its position = (p +
numInNode)%nodeTotal or (p - numInNode)%nodeTotal could be visited.
For example, in a puzzle with 6 vertices, by visiting a vertex at
position 1 with corresponding number 2, vertex at position 3 and
position 5 could be visited.
numInNode, for this game, is designed to be between 1 and
(nodeTotal/2 + 1) rounded down inclusive.
一次完全访问所有顶点时,即哈密顿路径为 发现,玩家赢得了一场比赛。否则,玩家输掉游戏。
我已经使用回溯为至少具有1条汉密尔顿路径的拼图实现了生成器,但是我想通过以下标准来解决难题,即在该难题中找到汉密尔顿路径有多么困难:
所述第一和第二只是容易,但使用递归我被困在第三个为我尽快接收最大调用堆栈大小超过误差。有什么解决办法吗?还是有其他更简单的方法可以判断一个难题的难度,而不是第三个难题,而这似乎是一个NP-Complete问题?
我对Javascript并不陌生,但是我目前尚无法解决此类问题,对于任何建议,我表示由衷的感谢。