圖的著色問題涉及到任務排程、時間製表、通訊網路中的頻率分配、暫存器分配、pcb設計中的短路測試以及傳統的地圖著色等問題。
由於圖的著色問題是np難題的,逼近演算法也不是很有前途,因此很多任務作都集中在啟發式演算法的設計上。圖著色問題的啟發式使用各種演算法設計技術,包括構造方法、迭代方法、遺傳演算法、區域性搜尋方法、禁忌技術和螞蟻系統演算法。
圖著色:
設g =(v,e)是頂點集v和邊集e的無向圖,圖著色即相鄰頂點必須具有不同的顏色。 g具有適當的k著色的最小k被稱為g的色數。頂點v處的衝突是與v相鄰的具有與v相同的顏色的頂點。圖g中的總衝突是具有相同顏色的相鄰頂點對的數量。圖著色問題是找到最小k的問題。
costa和hertz 螞蟻可以從乙個頂點移動到圖中的任何其他頂點
comellas和ozon 螞蟻系統演算法,每只螞蟻得到的結果都是基於rlf或dsatur等傳統的序列方法。
① 使用螞蟻的方式不同,演算法中的每個螞蟻只使用區域性資訊給圖的一部分著色。每只螞蟻的著色動作構成了整個圖的著色。通過這種方式,abac更適合分布式實現
優勢:每個測試圖的標準差都非常小
② 在我們的演算法中螞蟻沒有資訊素的鋪設能力。經過試驗發現,在這個演算法中,資訊素對解決方案的質量沒有顯示出明顯或顯著的影響。所以,在有限的實驗中,這有助於減少執行時間。
njoltcycles:陷入區域性最優的連續迴圈數量,我們設定njoltcycles = max。
nbreakcycles:在演算法終止之前,有效值沒有改進的連續迴圈數。
a:是由mxrlf生成的顏色類的百分比,這些顏色類可供螞蟻最初使用。我們準備 a= 80%。
b:mxrlf中的顏色類的百分比,這些類用於在ant開始之前為圖形建立初始顏色。 b= 50%。
y:是mxrlf中顏色類的百分比,用於著色在初始 中沒有著色的頂點。 y= 70%
mxrlf_set_limit:是mxrlf中的顏色類/分割槽大小限制。我們設定mxrlf_set_limit = 0.7n
nmoves:是螞蟻在停止之前可以訪問的頂點數。我們定義nmoves如下。
nchangecycle:允許的連續迴圈的數量,其中在可用顏色(可用顏色)的數量增加之前沒有任何改進。我們設定nchangecycle = 20。
nants:是乙個蟻群中的螞蟻數量,它被設定為圖中頂點數量的20%。為了提高效率,不允許nant超過100
ncycles:是整個著色過程中的迴圈數,設定為min
n = |v|是頂點集的基數
設g = (v,e)為輸入圖。我們首先執行mxrlf,獲得適當圖g的k著色。k是圖g上顏色數的上界。
mxrlf:
將圖g未著色的點分為兩組:
p組頂點:不相鄰於任何已著色的頂點,r組頂點:相鄰於至少乙個已著色的頂點。mxrlf在構建color類時不使用來自r的頂點。按順序選擇p中最大度數的頂點新增到第乙個color類中,更新p,r組,重複上述過程,直到p是空的或者顏色類大小受到限制,整個圖形著色。
k為圖g的顏色種類上界。最初設定可以選擇的給螞蟻上色的顏色記為 ,a=80%。
k個顏色類中隨機選擇 個顏色類保留。其餘頂點清除顏色,用 個顏色隨機分布上色, 。顏色類被重新編號,以便所有顏色都在集合 中。現在我們有了乙個有 個顏色的有色圖g,這個顏色可能不是g的正確顏色。
然後將一群螞蟻隨機分布到圖的頂點。
在每個迴圈中,一次啟用乙個螞蟻,螞蟻只知道區域性情況。當螞蟻在頂點時,判斷該點處是否有衝突,如果有衝突,從顏色集中選擇臨近點未使用的顏色進行重新著色,當滿足要求的幾種可用顏色中有選擇時,螞蟻只是隨機選擇一種顏色。
如果不存在附近點未使用的顏色,則選擇附近點使用數量最少的顏色進行著色,以最小化該頂點處的衝突。
然後更新該頂點處的衝突。
ant不知道整個圖的總衝突。在螞蟻完成對當前頂點的著色後,螞蟻會選擇該點的臨近點中衝突最小的那個點,移動到該點,繼續解決衝突。
此外,每個螞蟻還有乙個禁忌列表,其中包含他們無法重訪的最近訪問過的頂點。 禁忌列表有助於防止螞蟻卡在迴圈中。
如果陷入區域性最優,進行「震動」法。
區域性最優:螞蟻從當前頂點到下一頂點時,選擇臨近點中衝突最小的頂點。但很有可能衝突值一樣,導致螞蟻陷入區域性最優。
振動法:為了幫助螞蟻解決區域性最優,我們通過一種「震動」的方法擾亂圖形的當前著色。選擇圖中在前10%中存在衝突的頂點,並使用當前可用顏色集的80%隨機重新著色它們的相鄰點。「震動」的想法是注入足夠的干擾進入當前的著色,使其移出當前的區域性最佳,但不足以破壞已建立到那一點的著色。
當所有螞蟻都完成乙個迴圈時,如果當前圖g沒有衝突,那麼可用顏色的數量將減少乙個,更新顏色種類最優值和可用顏色集,然後我們開始另乙個迴圈。
如果在允許連續的迴圈中,當前顏色種類的最優值一直沒變,則輸出最優值。
對於每個圖,我們列出了圖的名稱、顏色數上界、演算法在50次試驗中產生的邊界結果的最小值、最大值、平均值和標準差。我們還列出了每個圖的50次執行中的平均執行時間(以秒為單位)。對於一些圖,執行時間太小,無法記錄,並且被記錄為0。需要注意的是,結果的標準差非常小,除三幅圖外,其餘均小於1,並且這三幅圖的標準差小於2。在這119幅圖中,我們的演算法找到了56幅圖的最優k值。有7個圖,我們的演算法得到了較差的結果,但都在允許範圍內。
在本文中,我們提出了一種基於蟻群演算法的圖著色演算法,它在119個dimacs基準圖上執行良好。為解決圖著色問題提供了乙個新思路。
螞蟻問題(演算法)
有一根27厘公尺的細木桿,在第3厘公尺 7厘公尺 11厘公尺 17厘公尺 23厘公尺這五個位置上各有乙隻螞蟻。木桿很細,不能同時通過乙隻螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會後退。當任意兩隻螞蟻碰頭時,兩隻螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘公尺的距...
螞蟻的難題(二)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 下雨了,下雨了,螞蟻搬家了。已知有n種食材需要搬走,這些食材從1到n依次排成了乙個圈。小螞蟻對每種食材都有乙個喜愛程度值vi,當然,如果vi小於0的時候,表示螞蟻討厭這種食材。因為馬上就要下雨了,所以螞蟻只能搬一次,但是能夠搬走...
N 螞蟻花唄(棧應用)
description 眾所周知,螞蟻是一種十分神奇的生物,在演算法設計中,我們往往能從它身上得到啟發,例如在求解tsp問題中,就有一種模仿螞蟻行為方式而設計出的蟻群演算法。z這種演算法是由marco dorigo等人在1991年研究新型演算法的過程中,發現蟻群在尋找食物時,通過螞蟻分泌一種稱為資訊...