نسخهی متحرک: یک سری نقطهی متحرک روی یک خط داریم که سرعت آنها ثابت است (در نتیجه معادلهی زمان مکان آنها خطی است) میخواهیم ببینیم نفر k-ام چند بار عوض میشود.
x=vt+x0
متناظر با در نظر گرفتن نمودارهای آنها و بررسی جا به جا شدنها است. (k-level) یعنی قسمتی از نمودار که k خط زیر آن هستند. پس تعداد نقاط k-level تعداد تغییرهای نفر k-ام است.
حالتهای خاص:
یک مجموعه خط داریم، lower envelope آنها چند یال دارد؟ 1-level را میتوان در زمان O(n) حساب کرد. (با linear programming)
به طور مشابه برای n-level یا upper envelope.
دوگان مسأله:
دوگان خطها را میگیریم یک مجموعه نقطه به دست میآید. هر نقطه جواب هم تبدیل به یک خط میشود که باید k نقطه یک طرف آن باشند. تعداد تغییرهای نفر k-ام برابر است با تعداد خطهایی که این خاصیت را دارند، به شرطی که دقیقاً خط گذرنده از دو نقطه را در نظر بگیریم.
جواب:
بین هر دو رأس k-level که زاویه محدب دارند، حداکثر میتوانند همهی خطوط زیر آن بیایند که یک زنجیره محدب با O(k) ضلع میسازد.
هر نقطه را به صورت یک رأس و هر خطی که k نقطه را از بقیه جدا میکند یک یال در نظر میگیریم. (طبق تعریف دقیقاً از دو نقطه میگذرد.)
نتیجه: هر خط عمودی O(k) یال گراف را قطع میکند.
هدف ما پیدا کردن همهی یالهای گراف است. n/m خط عمودی رسم میکنیم که بین هر کدام m نقطه باشد. هر خط حداکثر O(k) یال را قطع میکند. درون هر ناحیه حداکثر m^2 یال داریم (گراف کامل). پس در کل داریم:
|E| = O(n/m * m^2 + n/m*k)
m = sqrt(k) ==> |E| = O(n sqrt(k))
که m بالا حالتی که دو جمله مساوی میشوند و |E| ماکسیمم میشود.
بهبود:
تعداد کل تقاطعهای یالهای گراف O(n^2) است. تعداد نقاط n است پس تعداد خطهای گذرنده از آنها n^2 است پس تعداد تقاطعهای ممکن n^4 است که اتفاق نمیافتد.
*** اینجا به قسمتی میرسیم که کلاً در کلاس بحث نشد و آن این است که چطور زنجیرههای محدب ساخته میشوند؟
از منفی بینهایت شروع میکنیم و خط با i-امین بزرگترین شیب را طی میکنیم. تنها تقاطع k-level با k-chain در رأسهای محدب است، چون دو یال مجاور یک رأس مشترک بین k-level و k-chain حتماً در k-level نیستند.
ویژگیهای زنجیرههای محدب:
۱- همهی رأسهای k-level با یک رأس محدب پوشانده میشوند و برعکس. (رأس جدید نداریم)
۲- زنجیرههای محدب رأسهای مجزا و غیرتکراری دارند.
۳- همهی arrangement (چیدمان) خطوط زیر k-level را میپوشانند. در نتیجه همهی رأسهای چیدمان که زیر k-level هستند نقاط تقاطع دو زنجیره محدب هستند.
۴- همهی خطوطی که در ساخت زنجیرهی i-ام نقش دارند lower envelopeشان همان رأسهای زنجیره را دارد.
***
حالا از اینجا نتیجه میشود که اگر دو یال تقاطع داشته باشند، نقطهی تقاطع آنها در دوگان خطی است که مماس بر زنجیرههای گذرنده از آن نقطهها است که نتیجه میدهد که هر دوی آنها در یک زنجیره محدب هستند اما این در فضای اولیه به معنی داشتن رأس مشترک است (تقاطع در رأس) که میدانستیم وجود ندارد. (تناقض)
پس حداکثر تعداد تقاطعهای هر دو یال به اندازهی تعداد مماسهای مشترک این زنجیرهها است که اگر بین همهی حالتها جمع کنیم همان تعداد رأسهای چیدمان خطوط است که O(n^2) است. (به صورت دقیقتر O(nk) است)
اثبات: حالا با استفاده از لم تقاطع داریم:
O(n+n^2/3 x^1/3) = O(n+n^2/3*(nk)^1/3) = O(nk^1/3) = O(n^4/3)
چون تعداد رأسهای گراف n تا است که تعداد نقاط است و تعداد تقاطعهای آن هم O(nk) است که از روی دوگان آن که چیدمان خطوط بود به دست آوردیم.
-----------------------------------------------------------------
مسائل مرتبط:
*تعداد یالهای level های کمتر مساوی k چندتا است؟ (در جزوه اشتباهی گفته شده رأسها)
با جمع کردن آنها بر خلاف چیزی که توی جزوه هست حتی به همان کران بد هم نمیرسیم.
جواب واقعی O(nk) است که (برای چیدمان) میگوید هر رأس حداکثر j^2 تا تقاطع دارد (j تعداد levelها) که کلاً O(nk) رأس دارد (چون هر level حداکثر n تا خط دارد و کلاً k تا level داریم) پس در کل O(nkj^2) است که O(n k^1/3 j^2/3) را میدهد. (برای اثبات آن از یک قضیه دیگر خارج از مقاله کمک گرفته بود.)
پس جواب درست این سوال که برای k=j خواسته است O(nk) است.
--------------------------------------------------------------
روش کلارکسون:
از probabilistic method استفاده میکنیم که اثبات قضیه با استفاده از احتمال است و اندازهی k-level را حساب میکنیم. در زیرگراف تصادفی به دست آمده اندازهی k-level برابر O(nk) به دست میآید که با جایگذاری در crossing lemma (لم تقاطع) به O(nk^1/3) میرسیم.
(کلاً چیزی از مقالهاش سر در نیاوردم)
عمق نقطه: مینیمم تعداد نقاطی که میتوان در یک طرف هر نیم صفحه شامل آن قرار داد. (تعریف در صفحه)
Tukey median: نقطه با بیشترین عمق
قضیه Helly: یک مجموعه از شکلهای محدب اشتراک دارند، اگر و تنها اگر دو به دو اشتراک داشته باشند.
قضیه: depth(Tukey median) >= n/(d+1)
اثبات:
میدانیم میشود صفحهای ساخت که دقیقاً k نقطه یک طرف آن باشند اما میخواهیم هر نیمصفحهای این خاصیت را داشته باشد. Ham Sandwich cut
برای این کار صفحههای با nd/(d+1) نقطه را برمیداریم چون تعداد نقاطی که درون آنها نیستند حداکثر n/(d+1) است، پس اشتراک هر d+1 تای آنها ناتهی است.
قضیه رادون: هر مجموعه از d+2 نقطه در فضای d بعدی را میتوان به صورت دو مجموعه مجزا نوشت که پوستهی محدب متقاطع داشته باشند. به نقاط درون اشتراک، نقطه رادون میگویند.
یک الگوریتم این است که به صورت متوالی convex hull نقاط را حساب کنیم. با این کار عمق همهی نقطهها به دست میآید. بدترین حالت این است که هر بار یک مثلث حساب کنیم که O(n*n log n) = O(n^2 log n) میشه.
الگوریتم با استفاده از دوگان: اگر دوگان نقطهها را بگیریم، یک مجموعه خط به دست میآید و نقاط یک طرف خط (نیم صفحه) تبدیل میشود به خط های یک طرف یک نقطه. پس عمق تبدیل میشود به مینیمم تعداد خط های اطراف نقطه. اگر level ها را حساب کنیم، برای به دست آوردن نقطه با عمق k میتوانیم هر خطی که بین k-level و (n-i( level را برگردانیم. فقط باید min(n-i,k)=k باشد و طبیعتاً باید n-i > k باشد که نتیجه میدهد i<n-k باشد.
میشود k-level را در زمان n^2 حساب کرد و زمانهای بهتر هم دارد.
http://en.wikipedia.org/wiki/Centerpoint_(geometry)
A simple proof of the existence of a centerpoint may be obtained using Helly's theorem. Suppose there are n points, and consider the family of closed half-spaces that contain more than dn/(d + 1) of the points. Fewer than n/(d + 1) points are excluded from any one of these halfspaces, so the intersection of any subset of d + 1 of these halfspaces must be nonempty. By Helly's theorem, it follows that the intersection of all of these halfspaces must also be nonempty. Any point in this intersection is necessarily a centerpoint.
epsilon sample: اگر O(1/eps^2 lg 1/eps) نقطه را به صورت تصادفی یکنواخت برداریم با احتمال زیادی در هر نیم فضا نسبت نقاط حفظ میشود.
epsilon net: میتوان مجموعهای از O(1/epsilon lg 1/epsilon) نقطه برداشت که در هر نیمفضا حداقل epsilon*n نقطه باشد.
epsilon net: اگر یک فضای بازه با بعد VC برابر d داشته باشیم، یک epsilon net با اندازهی O(d/eps lg d/eps) دارند و یک epsilon sample با اندازهی O(d/eps^2 lg d/eps) دارند. برای به دست آوردن مجموعههای متناظر به همین تعداد نقطه را تصادفی یکنواخت انتخاب میکنیم.
مثال: جستجوی بازهای
اگر بازهی مورد جستجو مستطیلهای با اضلاع موازی محورهای مختصات باشند، با epsilon sample به خطای جمعی epsilon*n میرسیم.
مثال: تقریب نقطه مرکزی
نقطهای را از مجموعه نقاط برگردانید که هر نیمفضای گذرنده از آن نقطه شامل حداقل
(1/(d+1) - epsilon) n
نقطه باشد.
یک epsilon sample میگیریم و نقطهی مرکزی آن را حساب میکنیم و به عنوان تقریب نقطه مرکزی مجموعه نقاط اصلی برمیگردانیم.
| (r/(d+1)) / r - |P intersection h| / n | <= epsilon
++