有一张地图,由六边形字段组成。在这张地图上我们有一个棋子。他不能两次访问任何地点。算法的复杂性是什么,它会在没有重复的情况下找到所有可能的路径? (基本上找到所有可能的路径,没有必要通过所有的领域,因为这可能会使自己进入一个角落,只要哈哈可以移动,他就会去。)
答案 0 :(得分:1)
复杂性为O(5 n )。
可能存在下限,具体取决于地图的形状。
答案 1 :(得分:1)
首先是给定 n个字段的地图和给定开始位置(即专为配置和起始位置设计的算法)的答案范围:来自O(n )(O(1)如果可以有孤立的格子)到O(e ^ n)。
我的意思是,如果map是hexes行,如果起始位置在行的末尾只有1个路径,否则只有2个路径,无论n的值是多少。如果map是一个hexes圆,则总有一条路径。另一方面,如果地图的重要部分是连接的十六进制的“正方形”,则路径数量呈指数增长,并且找到所有路径的算法不能比这更快(即使路径有些显而易见,我们仍然需要输出它们。)
如果地图的配置和起始位置也是算法的输入,问题就变得更加困难:理论上,算法可以先尝试“分析”地图,看看它是否“具体” (例如,地图可以有重复模式,只能分析一次)并且比Oswald的算法更好地使用这样的地图。
对于由连接的六角形组成的“平均”地图,路径数似乎是指数式的(我没有严格的证明),因此算法复杂度也是指数式的(可以不会更好,Oswald的算法达到了这个极限。平均随机地图路径的指数的精确值将 hard 进行评估,可能不需要。
答案 2 :(得分:0)
如果我在随机地图上正确理解了问题,此算法的复杂性将为O(x)
,其中x
是此地图的答案。