找到所有路径的复杂性是多少

时间:2013-10-25 00:29:21

标签: algorithm complexity-theory pseudocode

有一张地图,由六边形字段组成。在这张地图上我们有一个棋子。他不能两次访问任何地点。算法的复杂性是什么,它会在没有重复的情况下找到所有可能的路径? (基本上找到所有可能的路径,没有必要通过所有的领域,因为这可能会使自己进入一个角落,只要哈哈可以移动,他就会去。)

3 个答案:

答案 0 :(得分:1)

复杂性为O(5 n )。

  • 除了第一个以外的每个领域,最多可以进行5次移动。
  • 如果将pawn移动到某个字段,它会创建一个唯一的路径(无需检查是否已访问该路径)。
  • 跟踪可以从任何给定字段访问的字段可以在O(1)中完成。

可能存在下限,具体取决于地图的形状。

答案 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是此地图的答案。