ساختار دیاگرام ورونوی

Download Report

Transcript ساختار دیاگرام ورونوی

‫مرضيه رنجبري‬
‫آذر ‪1392‬‬
‫به نام خدا‬
‫• تعاريف و خواص اوليه‬
‫• ساختن دياگرام ورونوی‬
‫• دياگرام ورونوی پاره خط ها‬
‫• دياگرام ورونوی ‪Farthest-Point‬‬
‫صورت مساله‬
‫فرض کنيد يک فروشگااه ننجيگره ای مگ خواهگد منگان هگاي‬
‫را بگگرای ااگگداو فروشگگااه تعيگگين کنگگد‪ .‬بگگرای بررس گ مناس گب‬
‫بودن مال بايد بررس کرد که فروشااه جديگد هگه انگدانه مگ‬
‫تواند در جلب مشتری موفگ باشگد‪ .‬بگرای ايگن کگار بايگد بتگوان‬
‫ناايه ای کگه تاگپ پوشگر هگر مرکگن خريگد یگرار مگ گيگرد را‬
‫تعيين کرد‪.‬‬
‫فرضیات مسئله‪:‬‬
‫‪ ‬قیمت هرکاال در همه جا یکسان است‪.‬‬
‫‪ ‬هزینه به دست آوردن هر کاال =‬
‫قیمتتتتت کتتتتاال ‪ +‬هزینتتتته حمتتتتال کتتتتاال از‬
‫فروشگاه‬
‫‪ ‬هزینه حمال کاال از فروشگاه به یک محتال بتا فاصتله آنهتا‬
‫متناسب است‪.‬‬
‫‪‬مشتریان ستی مت کننتد هزینته بته دستت آوردن کتاال را‬
‫مینیمم کنند‪.‬‬
‫نندينترين فروشااه‬
‫)‪Dirichlet (1850) & Voronoi (1908‬‬
‫ان مهمترين و پرکاربردترين ساختار بعد‪convex hull‬‬
‫همه اطالعاپ مربوط به فاصله های مجموعه ای ان نقطه ها (يا اشيای کل‬
‫تر)‬
‫تیریف‬
‫‪‬دياگرام ورونوي ))‪: (Vor(p‬‬
‫} ‪ P :={ p1, p2, ...,pn‬مجموعه ‪ n‬سایت مجزا در صفحه داریم‪.‬‬
‫طبق قاعده زیر به ‪ n‬سلوال تقسیم مي شود‪:‬‬
‫‪q V(pi ) iff dist(q, pi ) < dist(q, pj ) for each pj  P with j  i.‬‬
‫دياگرام ورونوي‬
‫سايپ‬
‫ناايه ورونوی‬
‫يال‬
‫رأس‬
‫دياگرام‬
‫ساختار دياگرام ورونوی‪ 1 :‬سايپ‬
‫دیاگرام ورونتو یتک نقطته تنهتا از همتان نقطته تشتکیال شتده‬
‫است‪.‬‬
‫تعداد سايپ = ‪1‬‬
‫تعداد نواا = ‪1‬‬
‫تعداد يال = ‪0‬‬
‫تعداد رئوس = ‪0‬‬
‫ساختار دياگرام ورونوی‪ 2 :‬سايپ‬
‫عمودمنصف پاره خط متصال کننده دو نقطه دیاگرام ورونو آنها‬
‫است‪.‬‬
‫تعداد سايپ = ‪2‬‬
‫تعداد نواا =‪2‬‬
‫‪0‬‬
‫تعداد يال = ‪1‬‬
‫تعگداد رئگوس =‬
‫ساختار دياگرام ورونوی‪ 3 :‬سايپ‬
‫برا سه نقطه غیرهم خط دیاگرام ورونو ازسه نیم خط تشکیال شده است‪ .‬عمودمنصف‬
‫ها ضلع ها مثلث دیاگرام ورونو رأس ها آن را شکیال م دهند‪.‬‬
‫تعداد سايپ = ‪3‬‬
‫تعداد نواا = ‪3‬‬
‫تعداد يال = ‪3‬‬
‫تعداد رئوس = ‪1‬‬
‫‪n‬‬
‫) ‪V ( pi )   h( pi , p j‬‬
‫مشاهده ‪7-1‬‬
‫‪j 1‬‬
‫‪j i‬‬
‫‪h pi , p j ‬‬
‫‪pi‬‬
‫‪pj‬‬
‫نتيجه‬
‫‪ .1‬دیاگرام ورونو زیربخش مسطح است که لبه هایش مستقیم هستند‪.‬‬
‫‪ .2‬سلوال دیاگرام ورونو با حداکثر ‪ n - 1‬یاال و ‪ n – 1‬رأس محدود م‬
‫شود‪.‬‬
‫یضيه ‪7-2‬‬
‫‪ P‬مجموعه ‪ n‬سایت در صفحه داده شدهاست‪ .‬اگر همه سایتها در خط مستقیم واقع‬
‫شدهاند پس )‪ Vor(P‬شامال ‪ n-1‬خط مواز است‪ .‬در غیر این صورت )‪Vor(P‬‬
‫پیوسته است و یاالهایش پارهخط یا نیمخط هستند‪.‬‬
‫اثباپ‬
‫‪ ‬قسمت اوال آسان است‪.‬‬
‫اگر همه سایتها در خط مستقیم واقع نشدهاند پس )‪ Vor(P‬پیوسته است و یاالهایش‬
‫پارهخط یا نیمخط هستند‪.‬‬
‫‪ ‬اثباپ (یسمپ دوم)‪:‬‬
‫‪ ‬يالهای )‪ Vor(P‬پاره خط يا نيم خط هستند‪.‬‬
‫‪ Vor(P) ‬متصل اسپ‪.‬‬
‫یضيه ‪7-3‬‬
‫برا ‪ n≥3‬در دیاگرام ورونو مجموعه ‪ n‬سایت در‬
‫صفحه تیداد رئوس حداکثر‪ 2n-5‬و تیداد یاالها حداکثر‪3n-6‬‬
‫است‪.‬‬
‫اثباپ‪:‬‬
‫‪ ‬سايپ ها هم خط باشند‪:‬‬
‫همه سایت ها درخط مستقیم واقع شده اند‪.‬‬
‫‪ ‬سايپ ها هم خط نباشند‪:‬‬
‫نتيجه‪:‬‬
‫مياناين تعداد رئوس سلول های ورونوی کمتر ان ‪ 6‬اسپ‪.‬‬
‫بنرگترين دايره خال‬
‫بنرگترين دايره خالي ‪ q‬نسبپ به مجموعه نقاط ‪ ،P‬بنرگترين دايره خالي با مركن ‪q‬‬
‫اسپ كه هيچ نقطه ‪ P‬درون آن نيسپ‪.‬‬
‫تشخيص رئوس و يالهاي دياگرام ورونوی‬
‫یضيه ‪7-4‬‬
‫برای دياگرام ورونوی )‪ Vor(P‬ان مجموعه نقاط ‪ P‬روابط نير بریرار اسپ‪:‬‬
‫‪.I‬‬
‫نقطه ‪q‬رأس )‪ Vor(P‬اسپ اگر و تنها اگر بنرگترين دايره خال‬
‫𝒒 𝒑𝑪 آن شامل سه يا‬
‫بيشتر سايپ روی مرنر باشد‪.‬‬
‫‪.II‬‬
‫عمودمنصف بين سايپهای 𝒊𝒑 و𝒋𝒑‪ ،‬يال )‪ Vor(P‬را تعريف م کند اگر وتنها اگر نقطه ‪q‬‬
‫روی عمودمنصف وجود داشته باشد هنانهه 𝒒 𝒑𝑪 شامل هر دوتا سايپ 𝒊𝒑 و𝒋𝒑 باشد و‬
‫سايپ دياری‪ ،‬روی مرنر نباشد‪.‬‬
‫اثباپ (یسمپ اول)‬
‫‪3‬‬
‫اثباپ (یسمپ اول)‬
‫اثباپ (یسمپ دوم)‬
‫دايره های ته انسايپ (يالها)‬
‫دايره های ته انسايپ (يالها)‬
‫دايره های ته انسايپ (يالها)‬
‫دايره های ته انسايپ (يالها)‬
‫دايره های ته انسايپ (يالها)‬
‫• تعاريف و خواص اوليه‬
‫• ساختن دياگرام ورونوی‬
‫• دياگرام ورونوی پاره خط ها‬
‫• دياگرام ورونوی ‪Farthest-Point‬‬
‫رور اول‪ :‬برگرفته ان مشاهده ‪7-1‬‬
‫)‪T(n) = O(n² log n‬‬
‫رور دوم‪ :‬الاوريتم ‪Furtune‬‬
‫بر گرفته ان استراتژی ‪plane sweep‬‬
‫ایده کل‬
‫الگوریتم ‪ : plane sweep‬در اين اجرای ‪ sweep‬اطالعاپ ساختار‬
‫خروج به تدريج بدسپ م آيد‪( .‬برخوردهای ساختار با ‪)sweep line‬‬
‫مشاهده ‪:7-5‬‬
‫خط ساال ‪-x‬مونوتون اسپ‪ ،‬يعن ‪ ،‬هر خط عمودی دیيقا يک نقطه ان آن را یطع م کند‪.‬‬
‫نقطه شنسپ)‪ : (breakpoint‬نقطه برخورد بین دو کمان از دو سهم‬
‫مشاهداپ ديار‪:‬‬
‫‪breakpoint ‬ها‬
‫متفاوت خط ساحل‬
‫بین کمانها‬
‫رو‬
‫یاالها‬
‫سهم وار‬
‫دیاگرام‬
‫ورونو قرار م گیرند‪.‬‬
‫‪ breakpoint ‬ها‬
‫دقیقا یاالها‬
‫ورونو را دنباال م کنند‪.‬‬
‫دیاگرام‬
‫ساختار خط ساال )‪(Beach line‬‬
‫در هه نمان‬
‫خط ساال )‪ (Beach line‬تغيير م کند‪:‬‬
‫‪.1‬‬
‫زمان که یک کمان سهم جدید رو آن ظاهر شود‪.‬‬
‫‪.2‬‬
‫زمان که یک کمان سهم موجود از رو آن محو شود‪.‬‬
‫هه مویع کمان جديد روی خط ساال ظاهر م شود؟‬
‫یک مورد‪ :‬زمان است که ‪sweep line‬به سایت جدید م رسد‪.‬‬
‫‪ ‬سهم با پهنا صفر‬
‫‪ sweep line ‬به سمت پایین حرکت م کند ⟸ سهم جدید پهن وپهن تر م شود‪.‬‬
‫‪ :Site Event‬وقت ‪sweep line‬به یک سایت جدید از ‪ P‬میرسد یک کمان جدید‬
‫ظاهر م شود‪.‬‬
‫برای دياگرام ورونوی در ‪ Site Event‬هه اتفای م افتد؟‬
‫در ابتدا دو ‪ breakpoint‬جدید بر هم منطبق هستند‪.‬‬
‫سپس در مسیر متفاوت برا دنباال کردن یاال یکسان حرکت م کنند‪.‬‬
‫ننته‬
‫در ابتدا این یاال به بقیه دیاگرام‬
‫ورونو‬
‫نیست‪.‬‬
‫باال ‪ sweep line‬متصال‬
‫لم ‪7-6‬‬
‫تنها االت که کمان جديد م تواند روی خط ساال به وجود آيد‪ ،‬ان طري‬
‫‪ Site Event‬اسپ‪.‬‬
‫اثباپ‪:‬‬
‫(برهان خلف) در حاال حاضر سهم 𝑗𝛽 توسط سایت 𝑗𝑝 تیریف شدهاست که وسط خط‬
‫ساحل را م شکند‪.‬دو احتماال وجود دارد که این حالت اتفاق بیفتد‪:‬‬
‫‪ 𝛽𝑗 .1‬میانه کمان سهم 𝑖𝛽 را م شکند‪.‬‬
‫‪ βj .2‬بین دو کمان 𝑖𝛽 و 𝑘𝛽 ظاهر شود‪.‬‬
‫بررس ااتمال‪1‬‬
‫‪ 𝛽𝑗 ‬میانه کمان سهم 𝑖𝛽 را م شکند‪.‬‬
‫‪ :ℓ𝑦 ‬مختصات ‪ y‬از ‪sweep line‬در لحظه مماس را نشان م دهد‪.‬‬
‫‪𝑃𝑗 ≔ (𝑃𝑗,𝑥 ,𝑃𝑗,𝑦 ) ‬‬
‫‪2‬‬
‫‪2‬‬
‫𝑥‪(𝑥 2 − 2𝑃𝑗,𝑥 𝑥 + 𝑃𝑗,‬‬
‫𝑦‪− 𝑃𝑗,‬‬
‫‪− ℓ2𝑦 ) ‬‬
‫‪1‬‬
‫𝑦‪2 𝑃𝑗,𝑦 −ℓ‬‬
‫= ‪𝛽𝑗 :=y‬‬
‫نتيجه‪:‬‬
‫𝑦‪ 𝑃𝑗,‬و 𝑦‪ 𝑃𝑖,‬بزرگتر از 𝑦‪ ℓ‬هستند ⟸ امکان ندارد که 𝑖𝛽 و 𝑗𝛽 یک نقطه تقاطع داشته‬
‫باشند‪.‬‬
‫بررس ااتمال‪2‬‬
‫‪ βj ‬بین دو کمان 𝑖𝛽 و 𝑘𝛽 ظاهر شود‪.‬‬
‫‪ ‬حرکت ب نهایت کوچک ‪sweep line‬به سمت پایین در حالیکه‬
‫دایره ‪ C‬با ‪ ℓ‬مماس باق بماند را درنظر داشته باشید؛ 𝑗𝑝 یا 𝑗𝑝 به‬
‫داخال نفوذ م کنند‪.‬‬
‫نتيجه‪:‬‬
‫وقت ‪sweep line‬به سمت پایین حرکت م کند سهم 𝑗𝛽نم تواند رو خط ساحل دیده‬
‫شود‪.‬‬
‫یک نتیجه مهم از لم ‪:7-6‬‬
‫خط ساال اداکثر شامل ‪2n-1‬سهم اسپ‪.‬‬
‫ياد آوری‪:‬‬
‫اضافه شدن هر سایت جدید یک کمان جدید تولید م کند و هر کمان‬
‫موجود را حداکثر به ‪ 2‬قسمت تقسیم م کند‪.‬‬
‫هه مویع يک کمان موجود روی خط ساال ماو م شود؟‬
‫یک مورد‪ :‬زمان است که ‪sweep line‬به پایینترین نقطه دایره گذرنده از سه سایت‬
‫که سه کمان متوال رو خط ساحل تیریف کرده اند میرسد‪.‬‬
‫‪:Circle Event‬‬
‫وقت‬
‫‪sweep line‬به پایینترین نقطه دایره خال تیریف شده توسط سه سایت که کمان‬
‫سهم متوال رو خط ساحل دارند میرسد یک کمان محو م شود‪.‬‬
‫برای دياگرام ورونوی در ‪ Circle Event‬هه اتفای م افتد؟‬
‫دو ‪ breakpoint‬یکدیگر را مالقات م کنند و یک رأس از دیاگرام ورونو دیده م‬
‫شود‪.‬‬
‫لم ‪:7-7‬‬
‫تنها االت که کمان موجود م تواند ان روی خط ساال ناپديد شود‪ ،‬انطري‬
‫‪ circle event‬اسپ‪.‬‬
‫‪ ‬فرض‪ :α′ :‬کمان در حاال ناپدید شدن‬
‫؛‬
‫𝛼 و "‪ : α‬دو کمان همسایه ‪α′‬‬
‫‪ ‬دو کمان 𝛼 و "‪ α‬نم توانند بخش ان يک سهم باشند‪( .‬طب لم ‪)7-6‬‬
‫‪ ‬نتيجه‪q:‬فاصله مساو از ‪ ℓ‬و هر سه کمان دارد و یک رأس از دیاگرام ورونو است‪( .‬طب‬
‫یضيه‪)7-4‬‬
‫ساختمان داده‬
‫• دياگرام ورونوی‬
‫‪ ‬ساختمان داده‪Doubly-connected edges list (DCEL) :‬‬
‫‪ ‬آیا مشکل برا ذخیره وجود دارد؟‬
‫)‪Cell(pi‬‬
‫‪v‬‬
‫‪e‬‬
‫ساختمان داده‬
‫• خط ساال )‪(Beach line‬‬
‫‪ ‬ساختمان داده‪ :‬درخت جستوجو دودوی‬
‫متوازن ‪T‬؛ این ساختار‬
‫وضییت)‪(status‬است‪.‬‬
‫‪ ‬برگها ‪ :T‬کمانها‬
‫‪ ‬نودها داخل ‪Break point :T‬ها‬
‫‪ ‬در ساختار ‪ status‬همه سه تای ها متوال‬
‫کمانها سهم که م توانند ‪circle event‬را‬
‫تشکیال بدهند را م توانیم ببینیم‪.‬‬
‫ساختمان داده‬
‫• صف رخداد )‪(Event Queue‬‬
‫‪ ‬ساختمان داده‪ :‬صف اولویت (اولویت رویدادها نسبت به مختصات ‪)y‬‬
‫‪ ‬در هر ‪ site event‬خود سایت ذخیره م شود‪.‬‬
‫‪ ‬در هر ‪ circle event‬پایین ترین نقطه دایره ‪ +‬اشاره گر به برگ از درخت(که‬
‫کمان که در این رویداد حذف م شود را نمایش م دهد‪ ).‬ذخیره م شود‪.‬‬
Circle Event ‫شناساي‬
‫هر ‪ Circle event‬بالقوه متناظر با یک ‪Triple‬‬
‫است‪.‬‬
‫آيا همه ‪circle event‬ها صايح هستند؟‬
‫ممکن است ‪ circle event‬را در صف ‪event Q‬ذخیره کنیم ول هیچ وقت رخ‬
‫ندهد‪...‬‬
‫‪:False‬شود‪.‬‬
‫نامیده م‬
‫‪False Alarm‬‬
‫‪Alarm‬‬
‫ایندلیال برا‬
‫دو‬
‫‪.1‬‬
‫‪Site event‬‬
‫‪Circle event .2‬ها دیگر‬
‫الگوریتم در این مواقع چه کار م کند؟‬
‫در هر ‪: EventPoint‬‬
‫‪.1‬‬
‫تمام ‪ Triple‬ها جدید که ظاهر م شوند بررس م شود‪:‬‬
‫‪ ‬در صورت همگرا بودن ‪ breakpoint‬ها ممکن است یک ‪ circle event‬بوجود بیاید‬
‫بنابراین به عنوان یک ‪ circle event‬بالقوه در صف رویدادها ذخیره م شود‪.‬‬
‫‪.2‬‬
‫تمام ‪ Triple‬های که محو م شوند نیز بررس م شود‪:‬‬
‫‪ ‬در صورت داشتن یک ‪ Event‬متناظر در صف رویدادها ‪ Event‬از صف حذف م شود‪.‬‬
‫لم ‪:7-8‬‬
‫هر رأس ورونو توسط یک ‪ circle event‬تشخیص داده م شود‪.‬‬
‫اثباپ‪:‬‬
‫‪ ‬فرض‪ q :‬یک رأس ورونو باشد‪.‬‬
‫‪ ‬دایره ‪ C‬و ‪ 3‬سایت واقیا وجود دارند‪( .‬طبق قضیه‪)7-4‬‬
‫‪ ‬فرض‪ :‬تنها ‪ 3‬سایت رو دایره ‪ C‬باشند و هیچ کدام‬
‫پایین ترین نقطه دایره ‪ C‬نباشند‪.‬‬
‫‪ ‬نتيجه‪ :‬باید نشان دهیم که درست قبال از اینکه ‪sweep‬‬
‫‪ line‬به پایین ترین نقطه ) 𝑘𝑝‪ 𝐶(𝑝𝑖 ,𝑝𝑗 ,‬برسد سه کمان‬
‫متوال 𝛼 و ‪ 𝛼′‬و "𝛼 رو خط ساحل که با سایتها‬
‫𝑖𝑝 و 𝑗𝑝 و 𝑘𝑝 تیریف شدهاست وجود دارد‪.‬‬
‫الاوريتم دياگرام ورونوی‬
‫الاوريتم دياگرام ورونوی‬
‫الاوريتم دياگرام ورونوی‬
‫لم ‪ : 7-9‬الگوریتم فوق در زمان )‪O(n log n‬و حافظه )‪ O(n‬اجرا مي شود‪.‬‬
‫‪ ‬آیا الگوریتم ‪ Furtune‬بهینه است؟؟ بله‬
‫ما م توانیم اعداد را با استفاده از هر الگوریتم محاسبه دیاگرام ورونو مرتب‬
‫‪7‬‬
‫‪6‬‬
‫‪3‬‬
‫‪1‬‬
‫‪-5‬‬
‫یضيه ‪7-10‬‬
‫ورونو دیاگرام مجموعه ‪ n‬نقطه سایت در صفحه م تواند با الگویتم ‪sweep line‬‬
‫در زمان )‪ O(nlogn‬با فضا )‪ O(n‬ساخته شود‪.‬‬
‫مثالهاي ان کاربرد ورونوی‬
‫‪ .1‬نزدیکترین همسایه‪:‬‬
‫مثالهاي ان کاربرد ورونوی‬
‫‪ .2‬مکان یاب رقابت تسهیالت‪:‬‬
‫تشنر ان توجه شما‬