欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python基于回溯法子集樹模板解決旅行商問題(TSP)實例

 更新時間:2017年09月05日 12:01:44   作者:羅兵  
這篇文章主要介紹了Python基于回溯法子集樹模板解決旅行商問題(TSP),簡單描述了旅行商問題并結(jié)合實例形式分析了Python使用回溯法子集樹模板解決旅行商問題的相關(guān)實現(xiàn)步驟與操作技巧,需要的朋友可以參考下

本文實例講述了Python基于回溯法子集樹模板解決旅行商問題(TSP)。分享給大家供大家參考,具體如下:

問題

旅行商問題(Traveling Salesman Problem,TSP)是旅行商要到若干個城市旅行,各城市之間的費用是已知的,為了節(jié)省費用,旅行商決定從所在城市出發(fā),到每個城市旅行一次后返回初始城市,問他應(yīng)選擇什么樣的路線才能使所走的總費用最短?

分析

此問題可描述如下:G=(V,E)是帶權(quán)的有向圖,找到包含V中每個結(jié)點一個有向環(huán),亦即一條周游路線,使得這個有向環(huán)上所有邊成本之和最小。

這個問題與前一篇文章http://www.dbjr.com.cn/article/122933.htm的區(qū)別就是,本題是帶權(quán)的圖。只要一點小小的修改即可。

解的長度是固定的n+1。

對圖中的每一個節(jié)點,都有自己的鄰接節(jié)點。對某個節(jié)點而言,其所有的鄰接節(jié)點構(gòu)成這個節(jié)點的狀態(tài)空間。當(dāng)路徑到達(dá)這個節(jié)點時,遍歷其狀態(tài)空間。

最終,一定可以找到最優(yōu)解!

顯然,繼續(xù)套用回溯法子集樹模板?。。?/p>

代碼

'''旅行商問題(Traveling Salesman Problem,TSP)'''
# 用鄰接表表示帶權(quán)圖
n = 5 # 節(jié)點數(shù)
a,b,c,d,e = range(n) # 節(jié)點名稱
graph = [
  {b:7, c:6, d:1, e:3},
  {a:7, c:3, d:7, e:8},
  {a:6, b:3, d:12, e:11},
  {a:1, b:7, c:12, e:2},
  {a:3, b:8, c:11, d:2}
]
x = [0]*(n+1) # 一個解(n+1元數(shù)組,長度固定)
X = []     # 一組解
best_x = [0]*(n+1) # 已找到的最佳解(路徑)
min_cost = 0    # 最小旅費
# 沖突檢測
def conflict(k):
  global n,graph,x,best_x,min_cost
  # 第k個節(jié)點,是否前面已經(jīng)走過
  if k < n and x[k] in x[:k]:
    return True
  # 回到出發(fā)節(jié)點
  if k == n and x[k] != x[0]:
    return True
  # 前面部分解的旅費之和超出已經(jīng)找到的最小總旅費
  cost = sum([graph[node1][node2] for node1,node2 in zip(x[:k], x[1:k+1])])
  if 0 < min_cost < cost:
    return True
  return False # 無沖突
# 旅行商問題(TSP)
def tsp(k): # 到達(dá)(解x的)第k個節(jié)點
  global n,a,b,c,d,e,graph,x,X,min_cost,best_x
  if k > n: # 解的長度超出,已走遍n+1個節(jié)點 (若不回到出發(fā)節(jié)點,則 k==n)
    cost = sum([graph[node1][node2] for node1,node2 in zip(x[:-1], x[1:])]) # 計算總旅費
    if min_cost == 0 or cost < min_cost:
      best_x = x[:]
      min_cost = cost
      #print(x)
  else:
    for node in graph[x[k-1]]: # 遍歷節(jié)點x[k-1]的鄰接節(jié)點(狀態(tài)空間)
      x[k] = node
      if not conflict(k): # 剪枝
        tsp(k+1)
# 測試
x[0] = c # 出發(fā)節(jié)點:路徑x的第一個節(jié)點(隨便哪個)
tsp(1)  # 開始處理解x中的第2個節(jié)點
print(best_x)
print(min_cost)

效果圖

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • 運用PyTorch動手搭建一個共享單車預(yù)測器

    運用PyTorch動手搭建一個共享單車預(yù)測器

    這篇文章主要介紹了運用PyTorch動手搭建一個共享單車預(yù)測器,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Python使用正則表達(dá)式分割字符串的實現(xiàn)方法

    Python使用正則表達(dá)式分割字符串的實現(xiàn)方法

    今天小編就為大家分享一篇Python使用正則表達(dá)式分割字符串的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 全面解析Python中的self技巧

    全面解析Python中的self技巧

    在Python中,類的方法定義時通常會包含一個名為?self?的參數(shù),它表示對象實例本身,下面我們就來了解一下self的相關(guān)應(yīng)用技巧,需要的可以參考下
    2024-01-01
  • python markdown轉(zhuǎn)html自定義實現(xiàn)工具解析

    python markdown轉(zhuǎn)html自定義實現(xiàn)工具解析

    Python-Markdown2 是一個 Python 庫,用于將 Markdown 文本轉(zhuǎn)換為 HTML,它是對標(biāo)準(zhǔn) Markdown 語法的擴展,提供了一些額外的功能和選項,同時還兼容標(biāo)準(zhǔn) Markdown,用它可以方便地生成漂亮的文檔、博客文章、項目文檔等
    2024-01-01
  • pip和pygal的安裝實例教程

    pip和pygal的安裝實例教程

    這篇文章主要介紹了pip和pygal的安裝實例教程,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 超實用的 10 段 Python 案例

    超實用的 10 段 Python 案例

    Python是目前最流行的語言之一,它在數(shù)據(jù)科學(xué)、機器學(xué)習(xí)、web開發(fā)、腳本編寫、自動化方面被許多人廣泛使用。它的簡單和易用性造就了它如此流行的原因。今天這篇文章就給大家分享 10 段超級有用的 Python 案例,需要的朋友可以參考一下
    2021-09-09
  • Numpy數(shù)組的切片索引操作

    Numpy數(shù)組的切片索引操作

    本文主要介紹了Numpy數(shù)組的切片索引操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 在Pytorch中計算自己模型的FLOPs方式

    在Pytorch中計算自己模型的FLOPs方式

    今天小編就為大家分享一篇在Pytorch中計算自己模型的FLOPs方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python 自動化偷懶的四個實用操作

    python 自動化偷懶的四個實用操作

    這篇文章主要介紹了python 自動化偷懶的四個實用操作,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • 使用python實現(xiàn)飛機大戰(zhàn)游戲

    使用python實現(xiàn)飛機大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了使用python實現(xiàn)飛機大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論