Smart-World Surf

יחידה 6: דיאגרמות וורונוי

הבנה וחישוב של דיאגרמות וורונוי ותכונותיהן.
הגדרת דיאגרמת וורונויתכונות גיאומטריותאלגוריתם פורצ'ן (Fortune's Algorithm)יישומים

ברוכים הבאים לשיעור בנושא דיאגרמות וורונוי, יחידה מרכזית בקורס גיאומטריה חישובית. דיאגרמות וורונוי הן מבנה גיאומטרי יסודי בעל חשיבות תיאורטית ומעשית רבה, ומהוות כלי עוצמתי לפתרון מגוון רחב של בעיות בתחומים שונים. שיעור זה יספק לכם הבנה מעמיקה של הגדרתן, תכונותיהן, האלגוריתמים לחישובן ויישומיהן, תוך דגש על נקודות קריטיות לקראת הבחינה.

הגדרת דיאגרמת וורונוי ותכונותיה הבסיסיות

דיאגרמת וורונוי מחלקת מישור למספר אזורים, כאשר כל אזור משויך לנקודה מסוימת (המכונה "אתר"), וכולל את כל הנקודות במישור הקרובות יותר לאתר זה מאשר לכל אתר אחר. זהו כלי בסיסי לניתוח קרבה מרחבית.

דיאגרמת וורונוי (Voronoi Diagram): חלוקה של מישור (או מרחב רב-ממדי) לאזורים, כאשר כל אזור (תא וורונוי) מכיל את כל הנקודות הקרובות ביותר לאתר נתון מתוך קבוצת אתרים.
אתר (Site): נקודה במישור (או במרחב) המהווה את הגרעין של תא וורונוי.
תא וורונוי (Voronoi Cell): האזור במישור המכיל את כל הנקודות הקרובות ביותר לאתר מסוים. תא וורונוי הוא תמיד פוליגון קמור.
קשת וורונוי (Voronoi Edge): קטע ישר או קרן המהווה את הגבול בין שני תאי וורונוי סמוכים. קשת וורונוי היא תמיד חלק מהאנך האמצעי בין שני האתרים המגדירים את התאים.
קודקוד וורונוי (Voronoi Vertex): נקודה במישור המהווה מפגש של שלוש קשתות וורונוי או יותר. קודקוד וורונוי הוא תמיד מרכז המעגל החוסם של שלושה (או יותר) אתרים.

תכונות גיאומטריות מרכזיות:

  • כל תא וורונוי הוא פוליגון קמור.
  • קשתות דיאגרמת וורונוי הן קטעים מהאנכים האמצעיים בין זוגות אתרים.
  • קודקודי דיאגרמת וורונוי הם מרכזי מעגלים החוסמים שלושה אתרים (או יותר) ואינם מכילים אף אתר אחר בתוכם.
  • הגרף הדואלי לדיאגרמת וורונוי הוא טריאנגולציית דלוני.

דיאגרמת וורונוי

מחלקת את המישור לתאים לפי קרבה לאתרים. קשתותיה הן אנכים אמצעיים, וקודקודיה הם מרכזי מעגלים חוסמים.

טריאנגולציית דלוני

הגרף הדואלי לדיאגרמת וורונוי. מחברת אתרים בקווים ישרים כך שאין אף אתר בתוך המעגל החוסם של אף משולש.

אלגוריתם פורצ'ן לחישוב דיאגרמת וורונוי

חישוב דיאגרמת וורונוי באופן יעיל הוא אתגר מרכזי. אלגוריתם פורצ'ן (Fortune's Algorithm) הוא אחד האלגוריתמים הנפוצים והיעילים ביותר לחישוב דיאגרמות וורונוי במישור, והוא מבוסס על שיטת קו-סריקה (sweep-line).

קו-סריקה (Sweep-Line): פרדיגמת אלגוריתמים גיאומטריים המדמה מעבר של קו ישר (קו הסריקה) דרך המישור, ומעבד אירועים כשהוא חוצה אותם.
קו החוף (Beach Line): עקומה מורכבת המורכבת מקשתות פרבוליות, המייצגת את הגבול הנוכחי של תאי וורונוי חלקיים שנוצרו על ידי אתרים שקו הסריקה כבר עבר אותם.
אירוע אתר (Site Event): מתרחש כאשר קו הסריקה פוגש אתר חדש. גורם להוספת קשת פרבולית חדשה לקו החוף.
אירוע מעגל (Circle Event): מתרחש כאשר שלוש קשתות פרבוליות בקו החוף נפגשות בנקודה אחת (קודקוד וורונוי). גורם להסרת קשת פרבולית ממרכז השלוש וליצירת קודקוד וורונוי חדש.
אלגוריתם פורצ'ן: זהו נושא קריטי לבחינה. חשוב להבין לעומק את הרעיון של קו הסריקה, את מבנה קו החוף (Beach Line) כרצף של פרבולות, ואת שני סוגי האירועים המרכזיים – אירועי אתר ואירועי מעגל. שימו לב במיוחד לאופן שבו אירועים אלו מעדכנים את קו החוף ואת מבנה הדיאגרמה. שאלות על מורכבות זמן הריצה (O(N log N)) ועל אופן הטיפול במקרים מיוחדים (כגון אתרים קולינאריים) נפוצות.

יישומים של דיאגרמות וורונוי

היכולת לחלק את המרחב לפי קרבה לאתרים הופכת את דיאגרמות וורונוי לכלי רב-גוני עם יישומים רבים בתחומים שונים:

חיפוש שכן קרוב ביותר (Nearest Neighbor Search)

מציאת הנקודה הקרובה ביותר לנקודת שאילתה. דיאגרמת וורונוי מאפשרת לעשות זאת ביעילות: פשוט מוצאים באיזה תא וורונוי נמצאת נקודת השאילתה.

מיקום מתקנים (Facility Location)

קביעת המיקום האופטימלי של שירותים (כמו בתי חולים, תחנות כיבוי אש) כדי למזער את מרחק השירות לאוכלוסייה. תאי וורונוי מגדירים את אזורי השירות.

מערכות מידע גיאוגרפיות (GIS)

ניתוח נתונים מרחביים, כמו חלוקת שטח לאזורי השפעה של תחנות מזג אוויר, חנויות או מוקדי שירות.

גרפיקה ממוחשבת וראייה ממוחשבת

יצירת רשתות (meshes) עבור סימולציות, זיהוי תבניות, עיבוד תמונה ודחיסת נתונים.

שאלות לדיון

  • הסבר את הקשר בין דיאגרמת וורונוי לטריאנגולציית דלוני, והדגם כיצד ניתן לבנות אחת מהשנייה.
  • תאר בקצרה את העקרונות המרכזיים של אלגוריתם פורצ'ן לחישוב דיאגרמת וורונוי, תוך התייחסות למבנה הנתונים העיקריים וסוגי האירועים.
  • תן שתי דוגמאות ליישומים מעשיים של דיאגרמות וורונוי והסבר מדוע הן מתאימות לפתרון בעיות אלו.
  • כיצד משפיעה הוספת נקודה חדשה על מבנה דיאגרמת וורונוי קיימת? האם ניתן לעדכן את הדיאגרמה ביעילות?

נקודות לתשובת מודל

  • קשר וורונוי-דלוני:
    • הסבר שדיאגרמת וורונוי וטריאנגולציית דלוני הן דואליות זו לזו.
    • קודקוד וורונוי מתאים למשולש דלוני (מרכז מעגל חוסם).
    • קשת וורונוי מתאימה לקשת דלוני (אנך אמצעי).
    • ניתן לבנות דלוני מוורונוי ע"י חיבור אתרים שאת תאיהם מפרידה קשת וורונוי משותפת.
  • עקרונות אלגוריתם פורצ'ן:
    • אלגוריתם קו-סריקה (sweep-line) העובר מלמעלה למטה.
    • מבנה נתונים עיקרי: קו החוף (beach line) המיוצג ע"י עץ חיפוש בינארי, וערימת אירועים (event queue).
    • אירועי אתר: קו הסריקה פוגש אתר חדש, מוסיף פרבולה לקו החוף.
    • אירועי מעגל: שלוש פרבולות נפגשות, יוצרות קודקוד וורונוי, מסירות פרבולה ממרכז השלוש.
    • מורכבות זמן ריצה: O(N log N).
  • יישומים מעשיים:
    • חיפוש שכן קרוב ביותר: תא וורונוי של נקודת שאילתה מכיל את האתר הקרוב ביותר. יעיל במיוחד לקבוצות גדולות של נקודות.
    • מיקום מתקנים: עוזר לקבוע מיקום אופטימלי למתקנים על ידי חלוקת אזורי השפעה ומזעור מרחקים.
  • הוספת נקודה חדשה:
    • הוספת נקודה חדשה משנה רק את תא וורונוי של הנקודה החדשה ואת התאים הסמוכים לה.
    • ניתן לעדכן דיאגרמת וורונוי ביעילות (ב-O(k log N) או O(k) בממוצע, כאשר k הוא מספר הקשתות המשתנות) על ידי איתור התא הרלוונטי והוספת קשתות חדשות.
מצאתם טעות או שחסר משהו?
→ הקודמת
בעיות מיקום וחיפוש גיאומטרי
הבאה ←
טריאנגולציות דלוני