亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Networkx 漢密爾頓循環

Networkx 漢密爾頓循環

HUWWW 2022-12-14 20:29:57
我想將漢密爾頓循環功能添加到我的設計中,但我不確定該怎么做。我知道有諸如此類的算法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)
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

您在 networkx 中提到的實現僅適用于錦標賽圖,這些圖是每個節點之間只有一個有向邊的圖。我假設您需要一個通用的圖形實現,因此它不適合您。

原因(我相信)這些不是 networkx 中哈密爾頓路徑的實現,是因為找到一個的問題是 NP-Complete。因此,如果您只想創建一個蠻力算法,那將是您能做的最好的。

這是我在 github 上找到的一個蠻力實現。


查看完整回答
反對 回復 2022-12-14
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號