CELF優化的貪心算法

用一個例子說明如下:

問題描述如下:從一組節點中,取出一組k個種子節點S,使得產生的增益最大。

對任意的a屬於A,f(a):a加入之後的增益。

有如下一個表:


初始掃描情況,第0輪,各個節點產生的增益情況。(用優先隊列存儲)

1>.,取出第一行a1 ,10,0因爲此時是第0輪,0==0

加入S,因爲第0輪加入a1時候增益最大。

此時表如下:


2>此時再取出首行,爲 a2 ,7,0

因爲行數爲0,而此時是第一輪,0!=1,所以得計算將a2加入s後的增益,

因爲:f(a2)=f(a2+空)-f(空)=7>=f(a2+s)-f(s)

因爲子模性質,所以將a2加入S後的增益肯定小於7,假設是6,則變爲如下:


此時將第一行取出,a2 ,6,1因爲1==1,而且後面的將a3加入s的增益肯定少於5,所以後面的不用計算了。

3>一次這樣下去,直到選出k個種子集合來爲止。

發佈了34 篇原創文章 · 獲贊 18 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章