【问题标题】:Find path from Point A to B with n number of Loops使用 n 个循环查找从 A 点到 B 点的路径
【发布时间】:2011-03-31 11:14:04
【问题描述】:

我有一个需要指导的问题。我有一个数组,其中包含有关不同节点之间边缘的信息。所以,

a[1][39] = 'p' --> 在节点 1 中使用转换 'p' 到达节点 39。完整的图表是这样的:

i[1][51] = 'p' 
i[1][39] = 't' 
i[39][40] = 'd' 
i[40][66] = 'p' 
i[66][51] = 'd' 
i[40][41] = 'm' 
i[41][64] = 'd' 
i[64][40] = 'd' 

如您所见,它是一个有向循环图。 我需要做的是拥有从点 X 到 Y 的所有路径。因此,给定 X=1 和 Y=51。我需要这样的输出:

o[0][0] = 'p'

o[1][0] = 't'
o[1][1] = 'd'
o[1][2] = 'p'
o[1][3] = 'd'

o[2][0] = 't'
o[2][1] = 'd'
o[2][2] = 'm'
o[2][3] = 'd'
o[2][4] = 'd'
o[2][5] = 'p'
o[2][6] = 'd'

第一个索引显示路径号。所以,我在这里有三个路径。第二个索引显示步骤。所以,第一条路走一步,第二路走四步。

我在 PHP 中这样做,但即使是伪代码也可以。此外,如果这可能有帮助,我还可以将输入数组反转为i[1]['p'] = 51 等。

谢谢。

【问题讨论】:

  • 不用说,这是实际更大的图表的一个子集。另外,我现在可以忍受循环,但必须将循环限制在一个特定的数字 - 例如,如果路径访问一个节点超过两次,则丢弃它。

标签: php algorithm graph logic


【解决方案1】:

【讨论】:

  • 这应该有什么帮助?
  • @eisberg 我没有问这个问题。返回单个(最佳)路径的启发式算法如何有助于返回所有可能的路径?我们这里需要的不是最佳答案,而是路径的枚举。
  • @rabbitisle 所以你只需要更改 A-Star 中的终止符,并为自己提供所有解决方案的数组。
  • @rabbitisle 很抱歉,我目前无法重写伪代码。但是,当你收集所有可能的路径时,你应该非常小心,比如说 20 个点,你最终可能会得到数百万个可能性并循环数小时。
  • 感谢您的提示。问:如果 A* 找到最短路径,它就不会经过循环,对吗?我需要循环次数为“n”的路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多