作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的设计中添加汉密尔顿循环功能,但我不知道该怎么做。我知道有像 nx.is_tournament.hamiltonian_path
这样的算法等等,但我不知道如何准确地实现它们。下面是一个对我来说很好的欧拉循环的例子,我想以类似的方式创建一个汉密尔顿循环。
def isEulerian():
isEulerian = nx.is_eulerian(myGlobalGraph)
if isEulerian == True:
trueInfo = 'this is Eulerian graph'
trueInfo2 = '\n'
Log.insert(INSERT, trueInfo)
Log.insert(INSERT, trueInfo2)
eulerianCircuit = list(nx.eulerian_circuit(myGlobalGraph))
eulerianCircuitInfo = 'Order of action:'
eulerianCircuitInfo2 = '\n'
Log.insert(INSERT, eulerianCircuitInfo)
Log.insert(INSERT, eulerianCircuitInfo2)
for i in range(len(eulerianCircuit)):
x = eulerianCircuit[i][::2]
eulerianCircuitInfo3 = x
eulerianCircuitInfo4 = ' > '
Log.insert(INSERT, eulerianCircuitInfo3)
Log.insert(INSERT, eulerianCircuitInfo4)
eulerianCircuitInfo5 = '\n'
Log.insert(INSERT, eulerianCircuitInfo5)
eulerianCircuitInfo6 = '\n'
Log.insert(INSERT, eulerianCircuitInfo6)
elif isEulerian == False:
falseInfo = 'this is not Eulerian graph'
falseInfo2 = '\n'
falseInfo3 = '\n'
Log.insert(INSERT, falseInfo)
Log.insert(INSERT, falseInfo2)
Log.insert(INSERT, falseInfo3)
最佳答案
implementation您在 networkx 中所指的仅适用于锦标赛图,即每个节点之间只有一个有向边的图。我假设您需要一个通用的图形实现,因此它不适合您。
原因(我相信)这些不是 networkx 中哈密顿路径的实现,是找到一个的问题是 NP-Complete。因此,如果您只是创建一个蛮力算法,那将是您能做的最好的事情。
这是一个 brute force implementation我在github上找到的。
关于python - Networkx 哈密顿循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62091042/
我是一名优秀的程序员,十分优秀!