تعیین نزدیکترین زوج نقاط در فضای دو بعدی(چرا ۶ نقطه؟)) - نسخهی قابل چاپ |
تعیین نزدیکترین زوج نقاط در فضای دو بعدی(چرا ۶ نقطه؟)) - fa_karoon - 25 مهر ۱۳۹۱ ۱۱:۳۷ ق.ظ
الگوریتم: .۱ در ابتدا نودها را در این فضا بر اساس مختصه x شان مرتب می کنیم -۲ سپس با نظر گرفتن یک خط فرضی مجموعه نقاط را به دو قسمت چپ و راست که هر کدام دارای. n/2 عنصر هستند تقسیم می کنیم -۳ دو زیر مسئله چپ و راست را حل کرده تا کمترین فاصله در هر دو زیر مسئله تولید شود و سپس جواب حل دو زیر مسئله را s 1 و s2 می نمامیم. S=min(s1,s2) -1 -۱ حال اگر شبیه روش یک بعدی فاصله نزدیکترین نقطه از نقاط چپ و راست خط را نیز در محاسبات داخل کنیم ممکن است به جواب صحیح نرسیم . لذا در این مسئله با اضافه کردن یکسری شرایط سعی می کنیم تعداد مقایسه ها را کم کنیم می توان به اندازه S از خط وسط از هر دو طرف یک محدوده در نظر گرفت و تعداد نقاط داخل این باریکه را با هم مقایسه کرد که در نتیجه باز در بدترین شرایط تمام n/2 نقطه سمت چپ و n/2 نقطه سمت راست خط وسط در این باریکه ها قرار دارند و لذا مرتبه زمانی O(n^2) خواهد شد ولی می توان برای هر نقطه واقع در باریکه سمت چپ مانند p فقط نقاط واقع در مستطیل به طول ۲s و عرضs حاصل شود. بدیهی است که که حداکثر تعداد نقاط واقع در این ناحیه مستطیلی شکل برابر با ۶ نقطه است! و لذا برای هر نقطه در باریکه سمت چپ فقط باید با فاصله آن با ۶ نقطه در باریکه سمت راست محاسبه کرد و این فواصل را نیز در محاسبه کمترین فاصله دخیل کرد. حال سوال اینجاست چرا برابر با ۶ نقطه است؟ |
تعیین نزدیکترین زوج نقاط در فضای دو بعدی(چرا ۶ نقطه؟)) - Bache Mosbat - 25 مهر ۱۳۹۱ ۰۱:۲۸ ب.ظ
چون s طبق تعریف بالا برابر کمترین فاصله بین زوج نقاط در زیر بازه ی چپ و راسته. حالا وقتی این مستطیل ۲S طول داره یعنی حداکثر سه نقطه می تونن از طول روی مستطیل باشن. و چون عرض s هست . معادل این سه نقطه رو هم بالا در نظر بگیرین می شه ۶ نقطه. |