最小生成樹 在含有n個頂點的連通圖中選擇n-1條邊,構(gòu)成一棵極小連通子圖,并使該連通子圖中n-1條邊上權(quán)值之和達到最小,則稱其為連通網(wǎng)的最小生成樹。 例如,對于如上圖G4所示的連通網(wǎng)可以有多棵權(quán)值總和不相同的生成樹。 克魯斯卡爾算法介紹 克魯斯卡爾(Kruskal)算法,是用來求加權(quán)連通圖的最小生成樹的算法。 基本思想:按照權(quán)值從小到大的順序選擇n-1條邊,并保證這n-1條邊不構(gòu)成回路。 具體做法:首先構(gòu)造一個只含n個頂點的森林,然后依權(quán)值從小到大從連通網(wǎng)中選擇邊加入到森林中,并使森林中不產(chǎn)生回路,直至森林變成一棵樹為止。 克魯斯卡爾算法圖解 以上圖G4為例,來對克魯斯卡爾進行演示(假設(shè),用數(shù)組R保存最小生成樹結(jié)果)。 第1步:將邊 邊 第2步:將邊 上一步操作之后,邊 第3步:將邊 上一步操作之后,邊 第4步:將邊加入R中。 上一步操作之后,邊 第5步:將邊 上一步操作之后,邊 第6步:將邊加入R中。 |
|