當前位置:首頁 » 操作系統 » 破圈演算法

破圈演算法

發布時間: 2023-07-22 20:24:14

❶ 運籌學有哪些演算法

圖像法,單純形法,對偶單純法,兩階段法。圖像法只能解一般的含兩個未知數的不等式。後3種是解多個未知數的不等式。運籌學還有整數規劃,一般有分支定界法,隱枚舉法,匈牙利法。運輸問題——一般為產銷問題,用最小元素法先做,再用位勢法調整目標規劃問題——先建模,再用單純形法解,一般現在用excel解決動態規劃——逆序法,順序法最小支撐樹圖——避圈法,破圈法最短路問題——dijkstra演算法

❷ 為什麼破圈法和避圈法為什麼不能求一點至另一點的最短距離

1.1最小生成樹

最小生成樹:一個有n個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有n個結點,並且有保持圖連通的最少的邊,如圖1.1.1所示。

圖1.1.1 最小生成樹示意圖

設G = (V, E)是無向連通帶權圖,即一個網路。E中的每一條邊(v, w)的權為W(v, w)。如果G的子圖G』是一棵包含G的所有頂點的樹,則稱G』為G的生成樹。生成樹上各邊權的總和稱為生成樹的耗費。在G的所有生成樹中,耗費最小的生成樹稱為G的最小生成樹。

1.1.1避圈法

避圈法的主要思想就是:開始選一條最小權的邊,以後每一步中,總從與已選邊不構成圈的那些未選邊中,選擇一條權最小的(每一步中,如果有兩條或兩條以上的邊都是權值最小的邊,則從中任選一條)。避圈法主要分為兩種:Prim演算法和Kruskal演算法,下面分別進行介紹。

1.1.1.1 Prim演算法

設G = (V, E)是連通帶權圖,V = {1,2,…,n}。構造G的最小生成樹Prim演算法的基本思想是:首先置S = {1},然後,只要S是V的真子集,就進行如下的貪心選擇:選取滿足條件i∈S, j∈V – S,且c[i][j]最小的邊,將頂點j添加到S中。這個過程一直進行到S = V時為止。在這個過程中選取到的所有邊恰好構成G的一棵最小生成樹。圖1.1.2顯示了某一帶權圖。最小生成樹的生成過程如下:

→=

c

13;1

→=

c

36;4

32;5

→=

c

c

→=

25;3

最終得到的最小生成樹如圖1.1.3所示。

圖1.1.2 帶權圖G

圖1.1.3 帶權圖G的最小生成樹示意圖

1.1.1.2 Kruskal演算法

給定無向連通帶權圖G = (V, E), V = {1,2,...,n}。Kruskal演算法構造G的最小生成樹的基本思想是:

(1) 將G的n個頂點看成n個孤立的連通分支,並將所有的邊按權從小到大排序;

(2) 從第一條邊開始,依據每條邊的權值遞增的順序檢查每一條邊,並按照下述方法連接兩個不同的連通分支:當查看到第k條邊(v, w)時,如果端點v和w分別是當前兩個不同的連通分支T1和T2的端點時,就用邊(v, w)將T1和T2連接成一個連通分支,然後繼續查看第k+1條邊;如果端點v和w在當前的同一個連通分支中,就直接查看第k+1條邊,這個過程一個進行到只剩下一個連通分支時為止。此時,已構成G的一棵最小生成樹。

仍以圖1.1.2所示的帶權圖G為例說明其最小生成樹的生成過程,生成過程如下所示:

→=

c

13;1

25;3c →=

36;4c →=

23;5c →=

最終得到的最小生成樹和圖1.1.3所示是一樣的。

1.1.2 破圈法

破圈法可以描述如下:

(1) 如果我們給的連通圖G 中沒有迴路,那麼G 本身就是一棵生成樹;

(2) 若G 中只有一個迴路,則刪去G 的迴路上的一條邊(不刪除結點),則產生的圖仍是連通的且沒有迴路,則得到的子圖就是圖G 的一棵生成樹;

(3) 若G 的迴路不止一個,只要刪去每一個迴路上的一條邊,直到G 的子圖是連通沒有迴路且與圖G 有一樣的結點集,那麼這個子圖就是一棵生成樹。

由於我們破壞迴路的方法可以不一樣,所以可得到不同的生成樹,但是在求最小生成樹的時候,為了保證求得的生成樹的樹權最小,那麼在刪去迴路上的邊的時候,總是在保證帶權圖仍連通的前提下刪掉權值較大的邊,保留權值較小的邊。破圈法就是在帶權圖的迴路中找出權值最大的邊,將該邊去掉,重復這個過程,直到圖連通且沒有圈為止,保留下來的邊所組成的圖即為最小生成樹。下面仍利用圖1.1.2對破圈法進行說明。

首先是去除權值大的邊,並且檢測去除該邊後整個圖是否連通,對於圖1.1.2來說,即第一步去掉權值為6的邊,如圖1.1.4所示。

圖1.1.4 去掉權值為6的G 的示意圖

從圖中可以看出,去掉權值為6的邊後整個圖仍是連通的。所以接下來去除權值為5的邊,並且檢測去除該邊後圖是否連通,結果如圖1.1.5所示。由圖可知,去掉所有權值為5的邊會造成圖G 不連通,因此23;5c →=這條邊是必須保留的。然後再去除權值為4的

邊。由於權值為1、2、3、4的邊分別連接著獨立的節點,故都必須保留,得到的最小生成

圖1.1.5 去掉權值為5的G的示意圖

樹結果與圖1.1.3也是一樣的。

1.1.3避圈法與破圈法比較

Prim演算法是從空圖出發,將點進行二分化,從而逐步加邊得到最小生成樹。它是近似求解演算法,雖然對於大多數最小生成樹問題都能求得最優解,但相當一部分求得的是近似最優解,具體應用時不一定很方便。但是它可以看作是很多種最小樹演算法的概括,在理論上有一定的意義。

Kruskal演算法也是從空圖出發。它是精確演算法,即每次都能求得最優解,但對於規模較大的最小生成樹問題,求解速度較慢。

破圈法是從圖G出發,逐步去邊破圈得到最小生成樹。它最適合在圖上工作,當圖較大時,可以幾個人同時在各個子圖上工作,因此破圈法在實用上是很方便的。


5.9
網路文庫VIP限時優惠現在開通,立享6億+VIP內容
立即獲取
破圈法vs避圈法
1.1最小生成樹

最小生成樹:一個有n個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有n個結點,並且有保持圖連通的最少的邊,如圖1.1.1所示。

圖1.1.1 最小生成樹示意圖

設G = (V, E)是無向連通帶權圖,即一個網路。E中的每一條邊(v, w)的權為W(v, w)。如果G的子圖G』是一棵包含G的所有頂點的樹,則稱G』為G的生成樹。生成樹上各邊權的總和稱為生成樹的耗費。在G的所有生成樹中,耗費最小的生成樹稱為G的最小生成樹。

第 1 頁
1.1.1避圈法

避圈法的主要思想就是:開始選一條最小權的邊,以後每一步中,總從與已選邊不構成圈的那些未選邊中,選擇一條權最小的(每一步中,如果有兩條或兩條以上的邊都是權值最小的邊,則從中任選一條)。避圈法主要分為兩種:Prim演算法和Kruskal演算法,下面分別進行介紹。

1.1.1.1 Prim演算法

設G = (V, E)是連通帶權圖,V = {1,2,…,n}。構造G的最小生成樹Prim演算法的基本思想是:首先置S = {1},然後,只要S是V的真子集,就進行如下的貪心選擇:選取滿足條件i∈S, j∈V – S,且c[i][j]最小的邊,將頂點j添加到S中。這個過程一直進行到S = V時為止。在這個過程中選取到的所有邊恰好構成G的一棵最小生成樹。圖1.1.2顯示了某一帶權圖。最小生成樹的生成過程如下:

熱點內容
cs狙擊腳本 發布:2025-03-15 15:25:15 瀏覽:342
平板搭建ftp伺服器 發布:2025-03-15 15:24:32 瀏覽:831
中樞源碼指標 發布:2025-03-15 15:17:15 瀏覽:117
手柄壓縮 發布:2025-03-15 15:15:41 瀏覽:995
威綸通觸摸屏編程軟體 發布:2025-03-15 15:10:22 瀏覽:501
光遇安卓聖島季是什麼 發布:2025-03-15 15:10:06 瀏覽:714
socket緩存大小 發布:2025-03-15 15:10:05 瀏覽:967
創建資料庫db2 發布:2025-03-15 15:07:52 瀏覽:55
python和java哪個好 發布:2025-03-15 15:07:36 瀏覽:135
返回鍵編程 發布:2025-03-15 15:07:01 瀏覽:592