mysql和php

时间:2015-11-06 16:37:00

标签: php mysql graph dijkstra breadth-first-search

我需要一些帮助来实现Mysql和Php中的最短路径问题。据我所知,BFS算法是在无向和未加权图形中找到这些路径的最佳方法。不过,我必须得到从顶点到另一个顶点的所有最短路径,这会变得更复杂。我已经为此找到了一个Java实现,但是对于我来说它很难将它转录为Sql。

所以,第一个问题是:我应该在哪里进行计算? Mysql还是Php?哪个会更快?

另外,BFS是最好的选择吗?有没有更容易实施的解决方案?如果没有,是否有人可以使用我可以作为参考的易于遵循和改编的代码?

谢谢!

1 个答案:

答案 0 :(得分:0)

将复杂的分层数据存储在像MySQL这样的平面关系数据库中并非易事,更不用说通过算法进行搜索了。我当然不建议尝试实现在SQL中搜索图形的算法。

至于在PHP中实现广度优先搜索,github上有一些好的Tree implementations in PHP可能会有所帮助。 A good article for reference on dealing with btrees in PHP - 特定于PHP 。对加权的无向图不够具体,但足够一般,它可能提供一些方向。广度首先搜索基本上只是一个队列/堆栈,您可以在其中弹出叶子节点离开分支,因此迭代或递归实现并不困难。

在我看来,进行最短路径搜索的最简单方法是A* search,即使不能保证找到所有最短路径,例如BFS,因为它通常会停止一旦找到了终端节点,就可以更容易实现,而不是不可能调整搜索所有路径。

还有Dijkstra的算法,它和A *在查找最短路径时都非常流行。这是一个很好的cs.stackexchange answer I found on contrast between Dijktra and BFS for shortest path

希望有所帮助。