




已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
關(guān)于多段圖最短路徑問題的探討摘要:本文主要描述的是分別用動(dòng)態(tài)規(guī)劃法、貪心法和分支限界法來(lái)解決多段圖最短路徑問題時(shí)的情況,并在附錄中附有實(shí)際問題的程序來(lái)輔助闡述觀點(diǎn)。文章首先闡述了各個(gè)方法的原理,主要的思路是通過輸入一組數(shù)據(jù),比較三者的輸出結(jié)果的準(zhǔn)確性以及運(yùn)行時(shí)間,以之為基礎(chǔ)來(lái)分析、討論三者的性能區(qū)別。另外,眾所周知,多段圖是有向圖的一個(gè)簡(jiǎn)單的模型,它在有向圖的基礎(chǔ)上忽略了兩點(diǎn)之間的線的雙向性的問題,并且對(duì)點(diǎn)與點(diǎn)之間的線有很多的要求,從而把圖簡(jiǎn)化為可分為幾段的模式,文章最后講述了若這幾種方法運(yùn)行到有向圖中的情況,幾種方法的對(duì)比和它們比較適應(yīng)的使用情況的討論,并給出了自己的建議。關(guān)鍵字:多段圖最短路徑問題 動(dòng)態(tài)規(guī)劃法 分支限界法 多段圖與有向圖的關(guān)系 有向圖最短路徑算法引言:當(dāng)前社會(huì),關(guān)于最短路徑的問題屢屢出現(xiàn)。例如在開車自駕游的一個(gè)過程中,排除其他影響因素,從一個(gè)地點(diǎn)到另一點(diǎn),這個(gè)時(shí)候必然是希望有一條距離最短的路程來(lái)盡量減少消耗的時(shí)間以及花費(fèi)的(它們?cè)谀P椭斜环Q為代價(jià)),市場(chǎng)上對(duì)該問題的解決有很大的需求,因此,這里我將討論多段圖的最短路徑的問題。在早些時(shí)間的課程中,我們學(xué)習(xí)過數(shù)據(jù)結(jié)構(gòu)這門課程,其中就包括最短路徑這方面的討論。當(dāng)時(shí)老師給我們介紹了分別面向單源(Dijkstra算法)與非單源(Floyd算法)兩種問題的算法法-,這是我們最早的對(duì)最短路徑方面的理解,也是我們接觸的比較早的關(guān)于圖的問題。在這學(xué)期的算法課程中,我們學(xué)習(xí)了許多了方法,包括貪心法、動(dòng)態(tài)規(guī)劃法等算法,它們把以前學(xué)習(xí)的許多方法都命名并歸納分類起來(lái),其中有許多算法都是可以用來(lái)解決這個(gè)最短路徑的問題的,并且該問題作為一個(gè)圖的問題,對(duì)該問題的繼續(xù)探討優(yōu)化的需求很大,本文將就不同算法在解決該最短路徑問題時(shí)的不同方法進(jìn)行對(duì)比并給出該問題在不同基礎(chǔ)上不同的最終解決方案。由于時(shí)間的限制,本文將重點(diǎn)分析動(dòng)態(tài)規(guī)劃法下的情況,并會(huì)對(duì)圖的情況加以簡(jiǎn)化、限制,最后會(huì)對(duì)其他的圖做一些拓展。首先,對(duì)多段圖最短路徑問題進(jìn)行介紹,設(shè)圖G=(V, E)是一個(gè)帶權(quán)有向連通圖,如果把頂點(diǎn)集合V劃分成k個(gè)互不相交的子集Vi(2kn, 1ik),使得E中的任何一條邊(u, v),必有uVi,vVi+m(1ik, 1i+mk),則稱圖G為多段圖,稱sV1為源點(diǎn),tVk為終點(diǎn)。多段圖的最短路徑問題是求從源點(diǎn)到終點(diǎn)的最小代價(jià)路徑。由于多段圖將頂點(diǎn)劃分為k個(gè)互不相交的子集,所以,多段圖劃分為k段,每一段包含頂點(diǎn)的一個(gè)子集。不失一般性,將多段圖的頂點(diǎn)按照段的順序進(jìn)行編號(hào),同一段內(nèi)頂點(diǎn)的相互順序無(wú)關(guān)緊要。假設(shè)圖中的頂點(diǎn)個(gè)數(shù)為n,則源點(diǎn)s的編號(hào)為0,終點(diǎn)t的編號(hào)為n-1,并且,對(duì)圖中的任何一條邊(u, v),頂點(diǎn)u的編號(hào)小于頂點(diǎn)v的編號(hào)。這里我們討論的多段圖是可以分段的,各段之間的關(guān)系最好是單向的,即對(duì)該有向圖來(lái)說,圖中是沒有環(huán)的存在的。1.貪心法貪心法在解決問題的策略上目光短淺,只根據(jù)當(dāng)前已有的信息就做出選擇,而且一旦做出了選擇,不管將來(lái)有什么結(jié)果,這個(gè)選擇都不會(huì)改變。換言之,貪心法并不是從整體最優(yōu)考慮,它所做出的選擇只是在某種意義上的局部最優(yōu)。這種局部最優(yōu)選擇并不總能獲得整體最優(yōu)解,但通常能獲得近似最優(yōu)解。本例中利用的貪心算法,是每當(dāng)要選擇下一個(gè)結(jié)點(diǎn)時(shí),總是選擇與當(dāng)前結(jié)點(diǎn)間代價(jià)最小的點(diǎn),這就叫做總是優(yōu)先局部最優(yōu)解。以此得到最終的解序列。這里舉一個(gè)貪心法的拓展例子Dijkstra算法。Dijkstra算法是一種最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其它所有節(jié)點(diǎn)的最短路徑,動(dòng)態(tài)路由協(xié)議OSPF中就用到了Dijkstra算法來(lái)為路由計(jì)算最短路徑。算法本身并不是按照我們的正常思維習(xí)慣,我們一般會(huì),從原點(diǎn)遍歷所有與之相連的節(jié)點(diǎn),找到最短路徑,再?gòu)淖疃搪窂缴系哪莻€(gè)點(diǎn)遍歷與之相連的所有其它點(diǎn)(原點(diǎn)除外),然后依次類推。這樣做雖然可以算出一個(gè)樹形,但是在大多數(shù)情況下,這種算法會(huì)產(chǎn)生很多次優(yōu)路徑,也就是說非最短路徑。Dijkstra算法的大概過程:假設(shè)有兩個(gè)集合或者說兩個(gè)表,表A和表B表A表示生成路徑,表B表示最后確定的路徑1.從原點(diǎn)出發(fā),遍歷檢查所有與之相連的節(jié)點(diǎn),將原點(diǎn)和這些節(jié)點(diǎn)存放到表A中,并記錄下兩節(jié)點(diǎn)之間的代價(jià)。2.將代價(jià)最小的代價(jià)值和這兩節(jié)點(diǎn)移動(dòng)到表B中(其中一個(gè)是原點(diǎn))。3.把這個(gè)節(jié)點(diǎn)所連接的子節(jié)點(diǎn)找出,放入到表A中,算出子節(jié)點(diǎn)到原點(diǎn)的代價(jià)4.重復(fù)第二步和第三步直到表A為空。然后根據(jù)表B中的數(shù)據(jù)算出最優(yōu)樹。維基百科中還有另一種說法,Dijkstra算法的輸入包含了一個(gè)有權(quán)重的有向圖G,以及G中的一個(gè)來(lái)源頂點(diǎn)S。我們以V表示G中所有頂點(diǎn)的集合。每一個(gè)圖中的邊,都是兩個(gè)頂點(diǎn)所形成的有序元素對(duì)。(u,v)表示從頂點(diǎn)u到v有路徑相連。我們以E所有邊的集合,而邊的權(quán)重則由權(quán)重函數(shù)w:E0,定義。因此,w(u,v)就是從頂點(diǎn)u到頂點(diǎn)v的非負(fù)花費(fèi)值(cost)。邊的花費(fèi)可以想像成兩個(gè)頂點(diǎn)之間的距離。任兩點(diǎn)間路徑的花費(fèi)值,就是該路徑上所有邊的花費(fèi)值總和。已知有V中有頂點(diǎn)s及t,Dijkstra算法可以找到s到t的最低花費(fèi)路徑(i.e.最短路徑)。這個(gè)算法也可以在一個(gè)圖中,找到從一個(gè)頂點(diǎn)s到任何其他頂點(diǎn)的最短路徑。具體算法見附錄。2.動(dòng)態(tài)規(guī)劃法這里先討論用動(dòng)態(tài)規(guī)劃法的解法。考慮多段圖的最短路徑問題的填表形式。用一個(gè)數(shù)組costn作為存儲(chǔ)子問題解的表格,costi表示從頂點(diǎn)i到終點(diǎn)n-1的最短路徑,數(shù)組pathn存儲(chǔ)狀態(tài),pathi表示從頂點(diǎn)i到終點(diǎn)n-1的路徑上頂點(diǎn)i的下一個(gè)頂點(diǎn)。則: costi=mincij+costj (ijn且頂點(diǎn)j是頂點(diǎn)i的鄰接點(diǎn)) (式6.7)pathi=j (使cij+costj最小的j) (式6.8)對(duì)多段圖的邊(u, v),用cuv表示邊上的權(quán)值,將從源點(diǎn)s到終點(diǎn)t的最短路徑記為d(s, t),則從源點(diǎn)0到終點(diǎn)9的最短路徑d(0, 9)由下式確定:d(0, 9)=minc01+d(1, 9), c02+d(2, 9), c03+d(3, 9),這是最后一個(gè)階段的決策,它依賴于d(1, 9)、d(2, 9)和d(3, 9)的計(jì)算結(jié)果,而由此模式推知,d(1, 9)=minc14+d(4, 9), c15+d(5, 9),d(2, 9)=minc24+d(4, 9), c25+d(5, 9), c26+d(6, 9),d(3, 9)=minc35+d(5, 9), c36+d(6, 9),每一個(gè)d(i,n-1)都是通過mincik+d(k,n-1)得到的ki&kn-1;再往后推的過程和以上的過程類似,將這些產(chǎn)生式得到以后,會(huì)發(fā)現(xiàn)他們的求解除了兩點(diǎn)之間的代價(jià)外,在例子中,他們都依賴于d(7, 9)=c79和d(8, 9)=c89,而他們都是可以從圖上直接得到的。這樣再?gòu)哪┪惨粚右粚油贤凭涂梢缘玫阶罱K的答案了。算法主要由三部分組成:第一部分是初始化部分,其時(shí)間性能為O(n);第二部分是依次計(jì)算各個(gè)頂點(diǎn)到終點(diǎn)的最短路徑,由兩層嵌套的循環(huán)組成,外層循環(huán)執(zhí)行n-1次,內(nèi)層循環(huán)對(duì)所有出邊進(jìn)行計(jì)算,并且在所有循環(huán)中,每條出邊只計(jì)算一次。假定圖的邊數(shù)為m,則這部分的時(shí)間性能是O(m);第三部分是輸出最短路徑經(jīng)過的頂點(diǎn),其時(shí)間性能是O(n)。所以,算法的時(shí)間復(fù)雜性為O(n+m)。為了實(shí)現(xiàn)時(shí)間的分析,在程序后添加了輸出運(yùn)行時(shí)間的函數(shù),以便于對(duì)比分析。具體算法、具體代碼及實(shí)驗(yàn)結(jié)果見附錄1。3.分支限界法再討論當(dāng)用分支限界法用來(lái)解決多段圖路徑問題的過程:首先對(duì)該多段圖應(yīng)用貪心法求得近似解,并算出其代價(jià)路徑。將其作為多段圖最短路徑問題的上界。而把每一段最小的代價(jià)相加,可以得到一個(gè)非常簡(jiǎn)單的下界。于是,就可以得到了目標(biāo)函數(shù)的一個(gè)大致的范圍。由于多段圖將頂點(diǎn)劃分為k個(gè)互不相交的子集,所以,多段圖劃分為k段,一旦某條路徑的一些段被確定后,就可以并入這些信息并計(jì)算部分解的目標(biāo)函數(shù)值的下界。一般情況下,對(duì)于一個(gè)正在生成的路徑,假設(shè)已經(jīng)確定了i段(1ik),其路徑為(r1, r2, , ri, ri+1),此時(shí),該部分解的目標(biāo)函數(shù)值的計(jì)算方法即限界函數(shù)如下:應(yīng)用分支限界法同樣求解附錄中圖所示多段圖的最短路徑問題,具體的搜索過程是這樣進(jìn)行的,首先考慮根節(jié)點(diǎn),根據(jù)限界函數(shù)算出目標(biāo)函數(shù)的值,然后下一個(gè)結(jié)點(diǎn)的選擇在本例中有三種情況, 這里每種情況下的目標(biāo)函數(shù)值下界都要算出來(lái)并且加以比較,下界的計(jì)算方法為除了加上選定點(diǎn)與初始點(diǎn)之間的距離外,以后的第一個(gè)點(diǎn)選擇一選定點(diǎn)為初始點(diǎn)到下段最小代價(jià)的路徑,以后的段與段之間的代價(jià)都按他們之間最小的代價(jià)來(lái)計(jì)算。這樣再加上根節(jié)點(diǎn)與初始階段之間的最小代價(jià),就得到這種情況下的解了。在得到的代價(jià)中,找出最小的代價(jià),并以之為初始結(jié)點(diǎn)循環(huán)往下做,直到到達(dá)目標(biāo)結(jié)點(diǎn)。結(jié)論: 程序的運(yùn)行截圖如附錄所示。分析各個(gè)方法的整個(gè)過程得到以下思考:1.貪心法、動(dòng)態(tài)規(guī)劃法和分支限界法都可以用來(lái)解決多段最短路徑問題,然而在這種情況相比之下,貪心法的運(yùn)算效率比較高,因?yàn)樗幌窳硗鈨煞N方法一樣,需要涉及到許多的點(diǎn)。由于這里并沒有找到函數(shù)有效地給程序計(jì)時(shí)(time函數(shù)很不精確,而對(duì)于小程序來(lái)說,就沒有什么參考性)。因此這里我們就以本題的數(shù)據(jù)為例,用一個(gè)笨方法,看各個(gè)方法訪問了多少數(shù)據(jù),可以看到,動(dòng)態(tài)規(guī)劃法由于需要填表,并有一個(gè)相關(guān)的迭代問題,它幾乎涉及了所有的點(diǎn);而分支限界法,它通過貪心法設(shè)置的上下限,并以他們?yōu)橐罁?jù)進(jìn)行剪枝,減少了許多的運(yùn)算量。而貪心法,訪問了最少的點(diǎn)。2.就結(jié)果準(zhǔn)確性來(lái)看,就本題例子來(lái)看,貪心法結(jié)果為0 2 4 7 9,路徑的代價(jià)為20;動(dòng)態(tài)分配法采取的路徑為:0 3 5 8 9,路徑的代價(jià)為16;而分支限界法,結(jié)果為0 3 5 8 9,路徑的代價(jià)為16??梢钥闯觯谶@個(gè)方面,動(dòng)態(tài)分配法和分支限界法都達(dá)到了預(yù)期的結(jié)果,相比直線,貪心法的誤差就比較大了。由以上的討論,我們可以看出分支限界法的綜合性能比較好,他和動(dòng)態(tài)規(guī)劃法在解決多段最短路徑問題時(shí)都可以得到正確解,而貪心法雖然可以省時(shí)間與空間,但結(jié)果不準(zhǔn)確是它的缺點(diǎn)。各方法都是有利有弊的。因此在選擇方法時(shí),還應(yīng)當(dāng)根據(jù)實(shí)際情況。當(dāng)只需要大概的一個(gè)解時(shí),當(dāng)然是要用省時(shí)省力的貪心法;如果對(duì)結(jié)果又比較高的要求的話,那么就要采取動(dòng)態(tài)規(guī)劃法或分支限界法。那么dijkstra算法呢,他的明顯優(yōu)點(diǎn)就是它的多用性,他可以求任意一點(diǎn)到其他某一點(diǎn)的距離,但是他訪問的數(shù)據(jù)量很大,幾乎要訪問所有的邊(相對(duì)于貪心法而言),因此這里來(lái)說,在單純的解決多段最短路徑問題時(shí),他們的功能都差不多,而在解決其他較復(fù)雜的圖時(shí),Dijkstra算法有明顯的優(yōu)越性,但當(dāng)然,作為貪心法的一種,他的結(jié)果的準(zhǔn)確性不是那么的高。Dijkstra算法在本質(zhì)上為貪心算法,每一步的選擇為當(dāng)前步的最優(yōu),復(fù)雜度為O(n*n)。動(dòng)態(tài)規(guī)劃法是可以看作是對(duì)分支限界法的改進(jìn)。分支限界算法,每一步的擴(kuò)散為當(dāng)前耗散度的最優(yōu),復(fù)雜度為(沒算)其實(shí),他們各有各的優(yōu)缺點(diǎn),可以嘗試將他們混合起來(lái)用,揚(yáng)長(zhǎng)避短,像動(dòng)態(tài)規(guī)劃法和分支限界法,我們是不是可以試著在動(dòng)態(tài)規(guī)劃法的過程中像分支限界法里一樣,設(shè)置范圍,并且過程中對(duì)肯定不會(huì)是最后結(jié)果的數(shù)據(jù)“剪枝”。這樣就可以提高運(yùn)行速率了。結(jié)論(必須精確、有條理、清晰與簡(jiǎn)要):建議(直接從結(jié)論中得出):附錄Dijstra算法(邊的拓展)While(!(每一個(gè)dv=最短路徑))If(存在一條從u到v的邊) If(du+w(u,v)=0; i-)2.1 對(duì)頂點(diǎn)i的每一個(gè)鄰接點(diǎn)j,根據(jù)式6.7計(jì)算costi;2.2 根據(jù)式6.8計(jì)算pathi;3輸出最短路徑長(zhǎng)度cost0;4. 輸出最短路徑經(jīng)過的頂點(diǎn):4.1 i=04.2 循環(huán)直到pathi=n-1 4.2.1 輸出pathi;4.2.2 i=pathi;用分支限界法求解多段圖的最短路徑問題的算法:1根據(jù)限界函數(shù)計(jì)算目標(biāo)函數(shù)的下界down;采用貪心法得到上界up; 2將待處理結(jié)點(diǎn)表PT初始化為空; 3for (i=1; i=1) 5.1 對(duì)頂點(diǎn)u的所有鄰接點(diǎn)v 5.1.1 根據(jù)式9.3計(jì)算目標(biāo)函數(shù)值lb; 5.1.2 若lb=up,則將i,lb存儲(chǔ)在表PT中; 5.2 如果i= =k-1且葉子結(jié)點(diǎn)的lb值在表PT中最小, 則輸出該葉子結(jié)點(diǎn)對(duì)應(yīng)的最優(yōu)解; 5.3 否則,如果i= =k-1且表PT中的葉子結(jié)點(diǎn)的lb值不是最小,則 5.3.1 up=表PT中的葉子結(jié)點(diǎn)最小的lb值; 5.3.2 將表PT中目標(biāo)函數(shù)值超出up的結(jié)點(diǎn)刪除; 5.4 u=表PT中l(wèi)b最小的結(jié)點(diǎn)的v值; 5.5 i=表PT中l(wèi)b最小的結(jié)點(diǎn)的i值;i+;動(dòng)態(tài)規(guī)劃法解決多段圖最短路徑問題:/*多段圖最短路徑問題總結(jié):costi表示從頂點(diǎn)i到終點(diǎn)n-1的最短路徑,pathi表示從頂點(diǎn)i到終點(diǎn)n-1的路徑上頂點(diǎn)i的下一個(gè)頂點(diǎn);下面的公式重點(diǎn):costi=minc(ij)+costjpathi=使c(ij)+costj最小的j; c(ij)表示i和j頂點(diǎn)之間的距離*/具體代碼如下:#include#include#define INFINITY 32767#define MAX 20_int64 start,end;int min6,Part;typedef structchar vexsMAX; /頂點(diǎn)信息int vexnum,arcnum; int arcsMAXMAX; /保存兩個(gè)頂點(diǎn)之間的邊長(zhǎng)Graph; /圖的結(jié)構(gòu)體struct nodeint part,node1,node2,lb,previous;struct node *next;void CreateGraph(Graph &G)/初始化多段圖int i,j;start=clock();printf(請(qǐng)輸入頂點(diǎn)數(shù)和邊數(shù):);/scanf(%d %d,&G.vexnum,&G.arcnum);G.vexnum=10; /頂點(diǎn)數(shù)G.arcnum=18; /邊的數(shù) for(i=0;iG.vexnum;i+)G.vexsi=i;for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.arcsij=INFINITY;printf(請(qǐng)按以下格式輸入邊的代價(jià)(頂點(diǎn)1 頂點(diǎn)2 兩點(diǎn)之間邊的代價(jià),頂點(diǎn)標(biāo)號(hào)從0開始):n);for(k=0;kG.arcnum;k+)scanf(%d %d %d,i,j,G.arcsij);int getDown(Graph G)/分支限界法求下界int j,k,i,n,n0,down=0,initial620;/initial數(shù)組用來(lái)存儲(chǔ)第i段有哪些結(jié)點(diǎn)min0=INFINITY;for(i=0;i6;i+)for(j=0;j20;j+)initialij=0;j=0;for(i=0;iG.vexnum;i+)if(G.arcs0iINFINITY)initial0j+=i;if(G.arcs0imin0)min0=G.arcs0i;Part=1;down+=mini;i=0;while(initiali+0!=G.vexnum-1)n=0;j=0;mini=INFINITY;while(initiali-1j+!=0)k=0;n0=n;while(k+)G.vexnum)if(G.arcsinitiali-1j-1k-1INFINITY)initialin+=k-1;if(G.arcsinitiali-1j-1k-1mini)mini=G.arcsinitiali-1j-1k-1;if(miniINFINITY)down+=mini;Part+;return down;int Greedy(Graph G,int flag,int up)/貪心法int min=INFINITY,m=flag;printf(%d,flag);for(int i=0;iG.vexnum;i+)if(G.arcsmimin)min=G.arcsmi;flag=i;if(flag);up=Greedy(G,flag,up);else printf(-%dn,flag);return up+min;void path(Graph G,int up)/分支限界法int down,i,j,k,u,lb,flag=1,previous=0;struct node *p,*end,*PT,*q,*ST,*End,*mins;down=getDown(G);printf(n若用分支限界法,該題的結(jié)果取值范圍為%d,%d。n,down,up);PT=NULL;end=NULL;ST=NULL,End=NULL;/PT用來(lái)存儲(chǔ)合格的點(diǎn),ST表用來(lái)存儲(chǔ)由于拓展被刪除的點(diǎn)i=1;u=0; /求解第i段,u表示頂點(diǎn),u是那個(gè)已確定的頂點(diǎn)while(flag)/ 5.1對(duì)頂點(diǎn)u的所有鄰接點(diǎn)v/5.1.1 根據(jù)式9.3計(jì)算目標(biāo)函數(shù)值lb;/5.1.2 若lb=up,則將i,lb存儲(chǔ)在表PT中;for(j=0;jG.arcsuj)for(k=0;kG.vexnum;k+)/確定了結(jié)點(diǎn)以后找到由他出發(fā)最小的代價(jià)if(G.arcsjkmini)mini=G.arcsjk;lb=G.arcsuj+mini;for(int l=i+1;l0)/計(jì)算lblb+=G.arcsPreviousU;while(Previous!=0)p=PT;while(p!=NULL)if(p-node1=Previous&p-node2=U)lb+=G.arcsPreviousU;U=Previous;Previous=p-previous;break;if(lbpart=i+1;p-node1=u;p-node2=j;p-lb=lb;p-next=NULL;p-previous=previous;printf(%d-%d,代價(jià)%d,上一個(gè)結(jié)點(diǎn)為%dn,p-node1,p-node2,p-lb,p-previous);if(PT=NULL) PT=p;else end-next=p;end=p;end-next=NULL;q=PT;lb=INFINITY;while(q!=NULL)if(q-lblb;q=q-next;printf(%d %d lb=%d,mins-node1,mins-node2,lb);if(p=q & G.arcsend-node2G.vexnum-1node2;arrayPart-2=p-node1;i=Part-3;while(i=0)arrayi=p-previous;i-;q=PT;while(q-node2!=arrayp-previous)q+;if(i0)arrayi-1=q-node1;p=q;printf(最短路徑為:);for(i=0;i,arrayi);if(inode1=mins-node1&p-node2=mins-node2)/刪除PT鏈表中已被拓展的結(jié)點(diǎn)并把他添加到ST鏈表中if(ST=NULL)ST=p-next;elseEnd-next=p-next;End=p-next;End-next=NULL;PT=PT-next;/printf(刪除的結(jié)點(diǎn)是:%d %dn,p-next-node1,p-next-node2);/*elseprintf(刪除的結(jié)點(diǎn)是:%d %dn,p-next-node1,p-next-node2);while(p-next!=NULL)if(p-next-node1=mins-node1&p-next-node2=mins-node2)if(ST=NULL)ST=p-next;elseEnd-next=p-next;End=p-next;End-next=NULL;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑工程監(jiān)理委托合同
- 2025股權(quán)轉(zhuǎn)讓合同
- 初三學(xué)生國(guó)旗下演講稿《輕裝上陣迎中考 志存高遠(yuǎn)勇拼搏》
- 運(yùn)維服務(wù)管理優(yōu)化匯報(bào)
- 模擬有限責(zé)任公司設(shè)立登記流程
- 膿胸的護(hù)理常規(guī)
- 2025年環(huán)境監(jiān)測(cè)測(cè)驗(yàn)試題
- 公司財(cái)務(wù)報(bào)銷費(fèi)用培訓(xùn)
- 2025年中醫(yī)執(zhí)業(yè)醫(yī)師考試中藥學(xué)知識(shí)點(diǎn)總結(jié)模版
- 新質(zhì)生產(chǎn)力日?qǐng)?bào)
- 優(yōu)化城市公交線路的規(guī)劃
- 粉末涂料的MSDS介紹
- 福建省2025屆高考仿真模擬英語(yǔ)試卷含解析
- 鄭州航空工業(yè)管理學(xué)院《物流信息管理》2022-2023學(xué)年第一學(xué)期期末試卷
- (完整版)CAD考試試題庫(kù)及參考答案
- 2024年廣西中考化學(xué)真題【附答案】
- 進(jìn)行性肌營(yíng)養(yǎng)不良癥
- 期末(試題)-2023-2024學(xué)年英語(yǔ)六年級(jí)下冊(cè)
- 健康科技就在我們身邊【教案】
- DB11T 3034-2023 建筑消防設(shè)施檢測(cè)服務(wù)規(guī)范
- 2022年遼寧省高考數(shù)學(xué)試卷(新高考II)附答案解析
評(píng)論
0/150
提交評(píng)論