最小圓覆蓋

最爱丁珰發表於2024-08-03

性質一:最小圓覆蓋是唯一的

證:若存在兩個最小圓,如下

顯然所有點只能存在於兩個圓的交集中,於是以中間那條實心藍線為直徑做一個圓,這個圓顯然更小而且能夠覆蓋所有點

性質二:若我們已經用最小覆蓋圓覆蓋了所有點,設這些點的點集為\(S\),現在我們新加入一個點\(p\),若\(p\)不在\(S\)的最小覆蓋圓的內部,則\(p\)一定在{\(p\)}∪\(S\)的邊上

證明:假設\(p\)在最小覆蓋圓的外部,如下圖:

由於\(C_2\)覆蓋了\(S\),所以\(r_{C_2}≥r_{C_1}\),由性質一,有\(r_{C_2}>r_{C_1}\),於是可以將\(C_2\)不斷縮小,使其同時包含\(S\)\(p\),這與\(C_2\)是最小圓覆蓋矛盾

求最小覆蓋圓思路:首先將點隨機化保證複雜度。然後迴圈,假設迴圈到\(i\),我們已經求出了\(1\) ~ \(i-1\)的最小覆蓋圓,如果\(i\)在這個最小覆蓋圓內部,則圓不變,否則的話由性質二可以知道\(i\)一定在新的最小覆蓋圓的邊上。開一個內層迴圈,假設迴圈到\(j\),我們已經求出了\(1\) ~ \(j-1\)\(i\)在圓邊上的最小覆蓋圓(我們要求的是\(1\) ~ \(j\)\(i\)在圓邊上的最小覆蓋圓),如果\(j\)在這個最小覆蓋圓內部,則圓不變(此時即使多了條件\(i\)在圓邊上,我們仍然可以類似證明性質一),否則的話\(j\)一定在新的最小覆蓋圓的邊上(此時即使多了條件\(i\)在圓邊上,我們仍然可以類似證明性質二)。再開一個內層迴圈,假設迴圈到\(k\),我們已經求出了\(1\) ~ \(k-1\)\(i,j\)在圓邊上的最小覆蓋圓(我們要求的是\(1\) ~ \(k\)\(i,j\)在圓邊上的最小覆蓋圓),如果\(k\)在這個最小覆蓋圓內部,則圓不變(此時即使多了條件\(i,j\)在圓邊上,我們仍然可以類似證明性質一),否則的話\(k\)一定在新的最小覆蓋圓的邊上(此時即使多了條件\(i,j\)在圓邊上,我們仍然可以類似證明性質二),而此時我們已經確定了三個點在圓邊上,於是可以唯一確定圓,從而求出了\(1\) ~ \(j\)\(i\)在圓邊上的最小覆蓋圓,進而可以求出\(1\) ~ \(i\)的最小覆蓋圓

時空複雜度都是\(O(n)\)(具體證明見影片39:30)

如果要求最小覆蓋球,則是“四點確定一個球”,其餘類似

相關文章