中国邮递员网络解算器
chinesepostman的Python项目详细描述
#中国邮递员解决方案
我编写这个程序是为了解决
[中国邮递员问题](http://en.wikipedia.org/wiki/route-inspection-problem)。
无向图。
我需要找到最佳的eularian路径。否则,这将是一个真正的,真正的长跑!
确定图形是否有
[欧拉路径](http://en.wikipedia.org/wiki/eulerian_path)
(非常简单)
2。使非欧拉图欧拉,费用最低
(不太容易)
3。找到伪造的eularian路径
(相当简单)
然而,这是一种代价!然后,我们的目标是找出要重复的边,从而消除所有奇数节点,而
的代价是最小的。
1。找到奇数对节点的所有可能组合
2。使用dijkstra算法,找出
对
3之间最小路径的代价。找到哪一组路径(取决于您有多少奇数节点)
,这将导致最少的总开销
4。用这些新的平行边修改图
现在有一个只有偶数节点的eularian图,可以找到eularian
电路。
在
开始时,我只是随机地沿着边缘走,直到我碰巧找到了一条路径
,要么是死胡同,要么是一条电路。然后我实现了[fleury's
算法(http://en.wikipedia.org/wiki/eulerian挈path挈fleury.27s挈u算法)
,它说总是在桥上选择一个非桥(原因显而易见)。现在解决大多数电路只需要很少的尝试。
稍后我将实现另一种电路查找方法(hierholzer's?)
在“tests”目录中。您可以通过在根项目文件夹中键入
python tests/run戋tests.py
来运行这些测试。
我编写这个程序是为了解决
[中国邮递员问题](http://en.wikipedia.org/wiki/route-inspection-problem)。
无向图。
我需要找到最佳的eularian路径。否则,这将是一个真正的,真正的长跑!
确定图形是否有
[欧拉路径](http://en.wikipedia.org/wiki/eulerian_path)
(非常简单)
2。使非欧拉图欧拉,费用最低
(不太容易)
3。找到伪造的eularian路径
(相当简单)
然而,这是一种代价!然后,我们的目标是找出要重复的边,从而消除所有奇数节点,而
的代价是最小的。
1。找到奇数对节点的所有可能组合
2。使用dijkstra算法,找出
对
3之间最小路径的代价。找到哪一组路径(取决于您有多少奇数节点)
,这将导致最少的总开销
4。用这些新的平行边修改图
现在有一个只有偶数节点的eularian图,可以找到eularian
电路。
在
开始时,我只是随机地沿着边缘走,直到我碰巧找到了一条路径
,要么是死胡同,要么是一条电路。然后我实现了[fleury's
算法(http://en.wikipedia.org/wiki/eulerian挈path挈fleury.27s挈u算法)
,它说总是在桥上选择一个非桥(原因显而易见)。现在解决大多数电路只需要很少的尝试。
稍后我将实现另一种电路查找方法(hierholzer's?)
在“tests”目录中。您可以通过在根项目文件夹中键入
python tests/run戋tests.py
来运行这些测试。