Python, 圆形最短路径

Python, Circular Shortest Path

我正在尝试制作奇怪的最短路径查找器方法。但是我不知道怎么办。

我需要一个算法。我做了一些研究,找到了一些寻找最短路径的算法,比如 Dijkstra 算法、Floyd–Warshall 算法、Johnson 算法。但是我觉得不符合我的预期。

我想要:应该从红点开始,应该遍历所有蓝点并在红点结束。

有算法吗?

(真的对不起我的英语,希望你能理解我。)

您的问题是 Hamiltonian Cycle Problem, which is NP-Complete 的一个变体,因此没有已知的有效解决方案(大多数人认为解决方案不存在,但尚未得到证实)

Hamiltonian Cycle Problem说:给定一个图G=(V,E),求是否存在一个简单的循环(每个顶点最多遍历一次)遍历所有顶点,是一个经典的NP完全问题.

归约非常简单,给定一个哈密顿循环问题,将一个随机点涂成红色,其余点涂成蓝色。当且仅当您的问题的解决方案是新图上 "modified" 问题的简单路径时,哈密顿循环问题才有解决方案。


由于问题是 NP-Complete,这意味着没有已知的最优有效解决方案。您可以尝试使用一些可能适用于小图的蛮力技术,或者尝试 approximation/heuristic 解决方案。