2012-02-18 51 views
-1

我有3辆公共汽车与3条路线让我们的巴士与公交车A,公共汽车B,公共汽车C和他们的路线与r1,r2,r3 ..所以,那些地方是包括在他们的路线是如何找到两个地方的路线

bus-A route is r1 
bus-B route is r2 
bus-C route is r3 

r1:[badoc,pin,curri,bat,san,laoag](vise versa) 
r2:[pag,bang,bur,pas,bac,laoag](vise versa) 
r3:[ban,mar,ding,san,laoag](vise versa) 

,我想找到最近的路线

CURRENT LOCATION:badoc 
TARGET LOCATION:laoag 

请帮我的算法应该怎么弄的路线......非常感谢!

+0

'坏'甚至没有在其中的路线.... – Nick 2012-02-18 12:45:58

+0

噢支持,应该是“badoc” – 2012-02-18 12:59:35

+0

所以编辑你的问题,请 – Nick 2012-02-18 13:18:25

回答

1

您的问题可以使用Dijkstra's Algorithm来解决。将公交车站视为节点,并为每条边使用加权。

+0

谢谢尼克...我可能会尝试...我会在PHP中实现算法...你认为它们是兼容的吗? – 2012-02-18 13:01:12

+0

它看起来类似于统一的搜索算法吧? – 2012-02-18 13:02:54

+0

由于它是一种算法,即一组抽象的指令,它肯定与PHP兼容,与任何其他语言一样 – Nick 2012-02-18 13:20:58

1

由于对这个问题进行建模的图不是加权的,所以这里不需要Dijkstra算法。

BFS也会找到最短路径 - 并且更容易编码并且会更快地找到解决方案。

模块的图形作为G=(V,E)这样V = { all stops }E = {(v,u) | u follows v as a stop in some bus }

创建图表后,只需运行一个BFS - 由BFS找到了解决办法是guaranteed to be optimal

+0

PHP中的任何示例代码与BFS技术? im lil confused.thanks – 2012-02-18 14:33:19

+0

@NjLac:对不起,我对php一无所知[希望我会在明年夏天修复]。但BFS非常简单,最多可以写几十行。 [有些语言甚至少于十几种]。尝试阅读维基百科页面,了解其工作原理。如果你对它不了解 - 你可以随时发布一个关于它的问题! – amit 2012-02-18 14:42:13

相关问题