2011-03-31 90 views
0

我有一个问题,我需要指导。我有一个有关不同节点之间边缘信息的数组。所以,查找从A点到B点的路径(n个循环)

a[1][39] = 'p' - >以过渡“P”,而在节点1到节点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等。

谢谢。

+0

不用说,这是实际的,更大的,图的一个子集。此外,我现在可以使用循环,但必须将循环限制到一个特定的数字 - 例如,如果它访问一个节点两次以上,则丢弃一条路径。 – recluze 2011-03-31 11:15:23

回答

1
+0

这应该如何帮助? – rabbitisle 2011-03-31 11:23:48

+0

@rabbitisle你问过伪代码。 – eisberg 2011-03-31 11:28:44

+0

@eisberg我没有问这个问题。如何返回单一(最佳)路径的启发式算法将有助于返回所有可能的路径?我们在这里需要的不是一个最好的答案,而是一个路径的列举。 – rabbitisle 2011-03-31 11:31:52

相关问题