最小圓覆蓋 隨機(jī)增量算法
最小圓覆蓋。神奇的隨機(jī)算法。當(dāng)點(diǎn)以隨機(jī)的順序加入時(shí)期望復(fù)雜度是線性的。
------------------------------------------------------------------------------------
algorithm:
A、令Ci表示為前i個(gè)點(diǎn)的最小覆蓋圓。當(dāng)加入新點(diǎn)pi時(shí)如果pi不在Ci-1里那么pi必定在Ci的邊界上。
B、再?gòu)男驴紤]這樣一個(gè)問(wèn)題,Ci為前i個(gè)點(diǎn)最小覆蓋圓且p在Ci的的邊界上!同理加入新點(diǎn)pi時(shí)如果p
i不在Ci-1里那么pi必定在Ci的邊界上。這時(shí)我們就包含了兩個(gè)點(diǎn)在這個(gè)最小圓的邊界上。
C、再?gòu)男驴紤]這樣一個(gè)問(wèn)題,Ci為前i個(gè)點(diǎn)最小覆蓋圓且有兩個(gè)確定點(diǎn)再邊界上!此時(shí)先讓
O(N)的方法能夠判定出最小圓。
------------------------------------------------------------------------------------
analysis:
現(xiàn)在來(lái)分析為什么是線性的。
C是線性的這是顯然的。
B<-C的過(guò)程中?紤]pi 他在園內(nèi)的概率為 (i-1)/i 。在圓外的概率為 1/i 所以加入pi的期望復(fù)雜度為:(1-i)/i*O(1) +(1/i)*O(i) {前者在園內(nèi)那么不進(jìn)入C,只用了O(1)。后者進(jìn)入C用了O(i)的時(shí)間}這樣分析出來(lái),復(fù)雜度實(shí)際上仍舊
是線性的。
A<-B的過(guò)程中。考慮方法相同,這樣A<-B仍舊是線性。于是難以置信的最小圓覆蓋的復(fù)雜度變成了線性的。
-------------------------------------------------------------------------------------
下面的程序沒(méi)有先將點(diǎn)隨機(jī)化,因?yàn)閿?shù)據(jù)通常也是隨機(jī)的= =!
1
2 #include
3 #include
4 #include
5 using namespace std;
6 struct node{
7 double x,y;
8 };
9 int n;
相關(guān)推薦:2011計(jì)算機(jī)等級(jí)考試二級(jí)C輔導(dǎo)實(shí)例編程匯總
計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言歷年真題匯總(2005-2010)
2011年計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言常見(jiàn)問(wèn)題匯總
計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言常見(jiàn)知識(shí)點(diǎn)總結(jié)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |