2.4 演算法討論2.4.1 如何判斷長方形與圓相交
V-detector演算法[49, 50]中自我個體的覆蓋範圍是按超球體進行運算的。為與V-detector演算法相比較,在實驗中PT-RNSA採用與V-detector演算法相同的自我自我個體形狀。在二維空間內,本文所使用的自我個體也同樣是圓形。從而,如何判斷長方形是否與圓相交成為一個在PT-RNSA編程實現時要解決的問題。
因為長方形與長方形比較容易判斷是否相交,因此可以通過判斷長方形與圓的外切正方形是否相交來間接判斷長方形與圓是否相交。
當長方形與圓的外切正方形不相交時,則長方形與圓也肯定不相交,2.9(a)。
當長方形與圓的外切正方形相交時,長方形與圓不一定相交,2.9(b)所展示的情況。對此情況,還需做進一步的判斷。
判斷方法如下:記錄下與圓的外切正方形相交的長方形的那個邊角方向的頂點,然後計算此頂點與圓中心點的距離。根據此距離與圓半徑的大小關係來判斷二者是否相交。如果此距離大於圓的半徑,則說明不相交,否則,則說明二者相交。
圖2.10給出了判斷長方形與圓是否相交的虛擬碼。
IF(長方形與圓的外切正方形不相交) THEN 長方形與圓不相交; ELSE{ 記錄下與圓的外切正方形相交的那個邊界方向的長方形的頂點位置; 計算此頂點與圓中心點的距離; IF(此距離大於圓的半徑)THEN 長方形與圓不相交; ELSE 長方形與圓相交; } |
圖2.10 判斷長方形與圓是否相交的虛擬碼
需要說明的是,自我個體也完全可以看作是一個超正方體或其它形狀。
2.4.2 PT-RNSA與傳統檢測器產生演算法的比較
與傳統的實值檢測器產生演算法相比,PT-RNSA為一確定性演算法,其檢測器不是隨機產生的。PT-RNSA的一個主要優勢體現在,它可以確保除了自我邊界地區的非我空間外,其它全部的非我空間均被成熟檢測器所平鋪覆蓋。
由圖2.11可以觀察到,對於V-detector,因為其檢測器都是隨機產生的,因此有可能會使很多檢測器聚集在某一非我地區,而其它某些非我地區卻又可能缺少足夠的檢測器來覆蓋,2.11(a)。與之相反,PT-RNSA所產生的成熟檢測器將平鋪覆蓋非我空間,未被成熟檢測器所覆蓋的非我地區僅存在於自我地區的邊界處。另外,PT-RNSA產生的成熟檢測器之間沒有交叉覆蓋情況,2.11(b)。
為了儘可能大的覆蓋整個非我地區,PT-RNSA可能需要產生相對多的成熟檢測器。有時,為了獲得更好的檢測率,其所需要的成熟檢測器數目可能會非常多,但是這個問題可以通過合并成熟檢測器的方式解決。
圖2.12(a)、圖2.12(b)是對圖2.11(b)中的成熟檢測器集的兩種不同的合并方式。可以觀察到,通過圖2.12(a)的合并相鄰成熟檢測器的方式,成熟檢測器數目已由圖2.11(b)的20個降低至圖2.12(a)的9個,而通過圖2.12(b)合并相鄰檢測器的方式,成熟檢測器數目已由圖2.11(b)的20個降低至圖2.12(b)的7個。雖然成熟檢測器的數目少了,但是成熟檢測器所覆蓋的非我空間範圍並沒有發生變化,並且成熟檢測器之間依然沒有交叉覆蓋情況。
2.5 本章小結
本章詳細介紹了基於劃分-測試的實值檢測器產生演算法(PT-RNSA),並用相關測試資料集進行效能測試。實驗結果顯示,該演算法具有成熟檢測器產生代價低,成熟檢測器無交叉,非我空間被均勻覆蓋等優點。但是該演算法也有其明顯的不足之處,主要在於,要達到一定的檢測率,其所需要產生的成熟檢測器數目往往很多。因此,在本文的第三章中,將在PT-RNSA的基礎上進一步改進,提出了基於劃分-測試-擴充的實值檢測器產生演算法。