旅行商問題的解法思路,旅行商問題的問題分析

2021-04-18 09:48:23 字數 2762 閱讀 4924

1樓:苦也不太差°亁

旅行商問題要從圖g的所有周遊路線中求取最小成本的周遊路線,而從初始點出發的周遊路線一共有(n-1)!條,即等於除初始結點外的n-1個結點的排列數,因此旅行商問題是一個排列問題。排列問題比子集合的選擇問題通常要難於求解得多,這是因為n個物體有n!

種排列,只有 個子集合(n!>o( ))。通過列舉(n-1)!

條周遊路線,從中找出一條具有最小成本的周遊路線的演算法,其計算時間顯然為o(n!)。

列舉法思想:程式中採用深度優先策略。(採用隱式和顯式兩種形式)

列舉演算法的特點是演算法簡單,但運算量大,當問題的規模變大,迴圈的階數越大,執行的速度越慢。如果列舉範圍太大(一般以不超過兩百萬次為限),在時間上就難以承受。在解決旅行商問題時,以頂點1為起點和終點,然後求的一個全排列,使路程1→的一個全排列→1上所有邊的權(代價)之和最小。

所有可能解由(2,3,4,…,n)的不同排列決定。

為便於討論,介紹一些關於解空間樹結構的術語。在下面分析回溯法和分支限界法時都直接或間接用到解空間樹。在解空間樹中的每一個結點確定所求問題的一個問題狀態(problem state)。

由根結點到其它結點的所有路徑則確定了這個問題的狀態空間(state space)。解狀態(solution states)表示一些問題狀態s,對於這些問題狀態,由根到s的那條路徑確定了這解空間中的一個元組。答案狀態(answer states)表示一些解狀態s,對於這些解狀態而言,由根到s的這條路徑確定了這問題的一個解(即,它滿足隱式約束條件)。

解空間的樹結構稱為狀態空間樹(state space tree)。

對於旅行商問題,一旦設想出一種狀態空間樹,那麼就可以先系統地生成問題狀態,接著確定這些問題狀態中的哪些狀態是解狀態,最後確定哪些解狀態是答案狀態,從而將問題解出。為了生成問題狀態,採用兩種根本不同的方法。如果已生成一個結點而它的所有兒子結點還沒有全部生成,則這個結點叫做活結點。

當前正在生成其兒子結點的活結點叫e-結點。不再進一步擴充套件或者其兒子結點已全部生成的生成結點就是死結點。在生成問題狀態的兩種方法中,都要用一張活結點表。

在第一種方法中,當前的e-結點r一旦生成一個新的兒子c,這個兒子結點就變成一個新的e-結點,當完全檢測了子樹c之後,r結點就再次成為e-結點。這相當與問題狀態的深度優先生成。在第二種狀態生成方法中,一個e-結點一直保持到死結點為止。

這兩種方法中,將用限界函式去殺死還沒有全部生成其兒子結點的那些活結點。如果旅行商問題要求找出全部解,則要生成所有的答案結點。使用限界函式的深度優先結點生成方法稱為回溯法。

e-結點一直保持到死為止的狀態生成方法稱為分支限界法。

回溯法思想

為了應用回溯法,所要求的解必須能表示成一個n- 元組(x1,…,xn),其中x1是取自某個有窮集si。通常,所求解的問題需要求取一個使某一規範函式p(x1,…,xn)取極大值(或取極小值或滿足該規範函式條件)的向量。

假定集合si的大小是mi,於是就有m=m1m2…mn個n-元組可能滿足函式p。所謂硬性處理是構造這m個n-元組並逐一測試它們是否滿足p,從而找出該問題的所有最優解。而回溯法的基本思想是,不斷地用修改過的函式pi(x1,…xi)(即限界函式)去測試正在構造中的n-元組的部分向量(x1,…,xi),看其是否可能導致最優解。

如果判定(x1,…,xi)不可能導致最優解,那麼就可能要測試的後n-i個元素組成的向量一概略去。因此回溯法作的次數比硬性處理作的測試次數(m次)要少得多。用回溯法求解的旅行商問題,即在列舉法的基礎上多了一個約束條件,約束條件可以分為兩種型別:

顯示約束和隱式約束。

分支限界法思想

採用fifo分支限界法。

如前所述,分支限界法是在生成當前e-結點全部兒子之後再生成其它活結點的兒子,且用限界函式幫助避免生成不包含答案結點子樹的狀態空間的檢索方法。在總的原則下,根據對狀態空間樹中結點檢索的次序的不同又將分支限界設計策路分為數種不同的檢索方法。在求解旅行商問題時,程式中採用fifo檢索(first in first out),它的活結點表採用一張先進先出表(即佇列)。

可以看出,分支限界法在兩個方面加速了演算法的搜尋速度,一是選擇要擴充套件的節點時,總是選擇選擇一個最小成本的結點,儘可能早的進入最有可能成為最優解的分支;二是擴充套件節點的過程中,捨棄導致不可行解或導致非最優解的子結點。

貪心法思想

貪心法是一種改進了的分級處理方法。它首先旅行商問題描述,選取一種度量標準。然後按這種度量標準對n個輸入城市排序,並按序一次輸入一個城市。

如果這個輸入和當前已構成在這種量度意義下的部分最優解加在一起不能產生一個可行解,則不把這個城市加入到這部分解中。這種能夠得到某種量度意義下的最優解的分級處理方法成為貪心方法。

獲得最優路徑的貪心法應一條邊一條邊地構造這棵樹。根據某種量度來選擇將要計入的下一條邊。最簡單的量度標準是選擇使得迄今為止計入的那些邊的成本的和有最小增量的那條邊。

旅行商問題的研究歷史

2樓:恰恰飛舞

旅行bai商問題字面上的du理解是:有一個推銷員zhi,要到n個城市推dao銷商品,他要專找出一

個包含所有n個城屬市的具有最短路程的環路。

tsp的歷史很久,最早的描述是2023年尤拉研究的騎士周遊問題,即對於國際象棋棋盤中的64個方格,走訪64個方格一次且僅一次,並且最終返回到起始點。

tsp由美國rand公司於2023年引入,該公司的聲譽以及線性規劃這一新方法的出現使得tsp成為一個知名且流行的問題。

急!!求圖論中旅行商問題概述以及分析

3樓:匿名使用者

用個大型演算法吧,什麼神經網路呀,蟻群演算法呀,這就是亮點,還有問題考慮實際點,三個人好好商量一下,一商量問題就好解決了,加油

關於杭州旅行的小問題

杭州市內遊的話,最好借一輛自行車。我之前去玩,腳都快走斷了。遊西湖不一定非要划船的,沒什麼特別的其實 杭州城內就有很多景點呢,河坊街也要去,很多小吃和好玩的東西可以買河坊街可以傍晚的時候去,白天遊西湖 建議去 外婆家 吃飯,好吃又不貴。珊瑚蝦,綠茶餅,東坡肉必點宋城可以去,裡面的東東很新奇。烏鎮很好...

旅行社與購物店之間的問題,在旅行社購物店買的東西可以退款麼

旅行社低價接團,貪小便宜的傻乎乎的客人報名,導遊無工資接團並按人頭付費給旅行社,行程中導遊推薦有課到購物點買東西,一般會在購物店停車2個小時左右,每個人都必須要進店,只要進店 購物店就會按照沒人30 40元的人頭費給旅行社。遊客買東西最低提成50 由司機 導遊 旅行社三方分成。從頭到位都是遊客在出錢...

旅行結婚的問題,有點煩惱請幫我解答

結婚不只是兩個人的事,是兩個家庭的事!但是,隨著社會的發展,結婚越來越變得 兩個人 了。至於旅行結婚的流程 你們可以跟雙方父母商量一下,事先做一個旅行結婚的計劃 邀請雙方長輩親戚 不宜太多,省得麻煩 在結婚那天一起在飯店吃頓飯,第二天你們就按照計劃旅行去了。至於收禮金的問題,我建議不收!如果客人實在...