回覆列表
  • 1 # 使用者3597377000316

    先給一個定義:對於一條直線L和一個點集A,L與A中各點距離的最大值我們定義為F(L,A)。然後定義解的優劣:對於一個點集A,若存在兩條直線L和L",使得F(L", A)<F(L, A),則稱L"是較L更優的解。接下來證得以下幾個引理:引理1 所求直線必然穿過凸包。證:反證法:設直線L為所求且引理為假,即L不穿過凸包。不妨設凸包上與直線距離最近的點為a,則a到L的距離為F(L, A),那麼使直線向凸包的重心方向平移距離F(L, A)得到新的直線L"一定比L更優。與L為所求矛盾。引理2 對於點集A的凸包上的頂點所構成的子集所求得的最優的直線L,對於點集A也一定是最優的。證:對於任一穿過點集A的凸包的直線,顯然點集A中與該直線距離最大的點一定在凸包上。因此只需考慮凸包的角點構成的子集。引理3 任意一個三角形都一定可以找到一條直線離三個點的距離相等。證:可直接做出這樣的直線。對於一個三角形(ABC),先任選一邊,不妨設為AB邊,過C做AB的垂線CD,垂足為D。然後過CD的中點做AB的平形線L,則L到這三個點的距離相等。引理4 與所求直線距離最大的點和次大的點到所求直線的距離一定相等。證:反證法,若直線L為所且引理為假。假設p1、p2為到L距離最大的2個點,且有|p1L|<|p2L|。令|p2L|-|p1L|=e,分兩種情況:1) p1、p2在L的同側,那麼若L向p2方向平移得到的新直線L"一定比L更優;2) p1、p2在L的兩側,若L向p2平移e/2得到的新直線L"一定比L更優。與L為所求矛盾。引理5 與所求直線距離最大的三個點到所求直線的距離一定相等。

    證:反證法,若直線L為所且引理為假。根據引理4假設p1、p2、p3為到直線L距離最大的3個點(不共線),且|p1L|=|p2L|,|p3L|<|p1L|。分兩種情況:1) L經過p1p2連線的中點,那麼L可透過繞p1p2中點向“遠離p3的方向”旋轉一個極小角得到的新直線L"一定比L更優;2) L與p1p2平行,那麼L向p1p2平移一個極小量得到的新直線L"一定比L更優。與L為所求矛盾。

    所以正確的演算法是:凸包上每兩個相鄰的點構成凸包的一條邊。分別對於凸包上的每條邊(作為底邊),在凸包上的點集(子集)中找到與這條邊距離最遠的一個點,這個點和邊上的兩點可以構成一個三角形。找到凸包上能使這樣的三角形高最短的一條邊,按引理3在此三角形中做與底邊平行的直線,那麼此直線為所求。

  • 中秋節和大豐收的關聯?
  • 狗狗腿扭傷了怎麼辦?急?