1 / 57

CONVEX HULLS קְמוֹר

CONVEX HULLS קְמוֹר. חלק א'. עדי אונגר 28.11.2011. נושאי השיעור. הגדרות בסיסיות THE INCREMENTAL ALGORITHM GIFT WRAPPING GRAHAM SCAN. הערות חשובות. בפרק זה נעסוק בקבוצות סופיות של נקודות. קבוצת נקודות אינה בהכרח סדורה. אזור קמוּר – convex region.

mateja
Download Presentation

CONVEX HULLS קְמוֹר

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CONVEX HULLSקְמוֹר חלק א' עדי אונגר 28.11.2011

  2. נושאי השיעור • הגדרות בסיסיות • THE INCREMENTAL ALGORITHM • GIFT WRAPPING • GRAHAM SCAN

  3. הערות חשובות • בפרק זה נעסוק בקבוצות סופיות של נקודות. • קבוצת נקודות אינה בהכרח סדורה.

  4. אזור קמוּר – convex region אזור ייקרא קמור אם כל שתי נקודות בו "רואות" אחת את השנייה בתוך האזור. דוגמאות: אזור לא קמוּר אזור קמוּר

  5. קְמוֹר – convex hull בהינתן קבוצה של נקודות S, נרצה למצוא את הקְמוֹר שלה. אינטואיציה: נחשוב על כל נקודה מהקבוצה S כעל מסמר שנעוץ במישור. אם ניקח גומייה, נמתח אותה כך שתכיל את כל נקודות S ונשחרר, הצורה שתתקבל היא הקְמוֹר של S.

  6. קְמוֹר - הגדרה הקְמוֹר הוא האזור הקמוּר הקטן ביותר המכיל את נקודות S. למעשה, זהו החיתוך בין כל האזורים הקמורים המכילים את S. נסמן את הקמור של קבוצת נקודות S כך: conv(S)

  7. דוגמה הקמור של S אזור קמור המכיל את S

  8. תרגיל האם הקְמוֹר הוא אכן אזור קמוּר? במילים אחרות אנו שואלים האם חיתוך של אזורים קמורים יוצר אזור קמור.

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

  10. תכונה של הקְמוֹר קְמוֹר של קבוצת נקודות S הוא מצולע. בפרט, הקְמוֹר של קבוצת נקודות S הוא מצולע קמוּר.

  11. האם ההגדרה שהצענו לקְמוֹר "טובה"? נשים לב שההגדרה שנתונה לנו מקשה עלינו לבנות אלגוריתם למציאת קמור כיוון שעלינו לעבור על מספר אינסופי של אזורים קמורים המכילים את S. נציע הגדרה נוספת.

  12. אבחנה נשים לב שלכל שתי נקודות a,b באזור קמור R מתקיים שגם הקטע הישר (a,b) נמצא כולו ב-R. לכן, כל נקודה על הקטע (a,b) גם היא ב-R. נכתוב את הקטע (a,b) כך: * m,n אינם בהכרח שלמים.

  13. צירוף קמוּר – convex combination בהכללה על מספר כלשהו של נקודות נקבל: צירוף קמור של נקודות הוא מהצורה

  14. צירוף קמוּר - אינטואיציה עבור שלוש נקודות , הצירוף הקמור הוא לדוגמה:

  15. משפט עבור קבוצת נקודות הקְמוֹר של S הוא קבוצת כל הצירופים הקמורים של S.

  16. הוכחה תהי M קבוצת כל הצירופים הקמורים של S: נרצה להראות M=conv(S). כלומר נראה וגם .

  17. כיוון ראשון - קל לראות שמתקיים . לכן, מספיק לנו להוכיח ש-M הוא אזור קמוּר. יהיו ונראה שהקטע (a,b) גם הוא ב-M. ולכן ניתן לכתוב אותו ולכן ניתן לכתוב אותו נראה שכל נקודה על הקטע (a,b) ניתן לכתוב כך:

  18. כיוון ראשון - נראה שכל נקודה על הקטע (a,b) ניתן לכתוב כך: כאשר: ואכן, נשים לב שמתקיים:

  19. כיוון שני - נראה שכל נקודה ב-M נמצאת ב-conv(S) באינדוקציה על n. מקרה הבסיס, n=1: נניח נכונות לקבוצת נקודות S’ עם n-1 נקודות. נתבונן בקבוצה עם n נקודות לפי הנחת האינדוקציה כל נקודה ניתן לכתוב כך: וכל נקודה כזו מקיימת

  20. כיוון שני - כעת, אנו יכולים לבחור ואז נקבל הבחירה הזו עדיין מקיימת את כל התנאים שהצבנו. ומתקיים: מכיוון ששתי הנקודות בקמור אז גם כל הנקודות על הקטע ניתנת לכתיבה כך: ולכן כל נקודה על הקטע היא ב-conv(S) כדרוש.

  21. תרגיל תהי S קבוצת נקודות עם לפחות ארבעה איברים. הוכח שקיימת חלוקה של S ל-A,B כך ש-.

  22. תשובה

  23. THE INCREMENTAL ALGORITHM

  24. כיצד נייצג את הקְמוֹר? לצורך מימוש בעזרת אלגוריתמים נבחר לייצג את הקמור כך: הקמור הוא גבול המצולע conv(S). לכן, חישוב הקמור משמעותו חישוב צלעות המצולע conv(S).

  25. אינטואיציה אם היו נותנים לנו פיסת נייר שעליה מסומנות נקודות, אז קל לעין האנושית להבחין מהו הקמור של קבוצת הנקודות. לעומת זאת, אם היו נותנים לנו פיסת דף שעליה רשימת נקודות לפי (x,y) היה לנו קשה יותר לזהות את הקמור של הקבוצה.

  26. אינטואיציה - המשך קבוצת נקודות הנתונה כרשימה זהו האופן שבו המחשב מתמודד עם הקלט. באופן טבעי ניתן מיד להחליט שהנקודות הקיצוניות לפי x (הימנית ביותר והשמאלית ביותר) והנקודות הקיצוניות לפי y (הגבוהה ביותר והנמוכה ביותר) הן קודקודים של הקְמוֹר. מציאת יתר נקודות הקְמוֹר זו משימה לא קלה.

  27. דוגמה

  28. רעיון האלגוריתם האלגוריתם עובד באופן "אינדוקטיבי" – נניח שהצלחנו למצוא את הקמור של k נקודות, ונשתמש בו כדי למצוא את הקמור של k+1 נקודות. האלגוריתם מתבסס על מיון קבוצת הנקודות הנתונה לפי קואורדינטת ה-x שלהן.

  29. הנחות על S • נניח שבקבוצה S אין שתי נקודות עם אותו ערך x. אם בקבוצת הנקודות הנתונה יש שתי נקודות או יותר עם אותו x, אז בעזרת סיבוב קל של המישור אנו יכולים לקבל קבוצת נקודות שבה אין שתי נקודות עם אותו ערך x. • נניח שבקבוצה S אין שלוש נקודות על אותו ישר.

  30. ישר משיק – tangent line יהי P מצולע קמור ותהי x נקודה על גבול P. ישר L יקרא תומך ב-P בנקודה x אם מתקיים: • L עובר דרך x • כל המצולע P נמצא באותו צד של הישר L ישר כזה יקרא משיק ל-P בנקודה x.

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

  32. כיצד בונים את הקמור החדש? המטרה שלנו היא למצוא שתי נקודותa,b ב- שמקיימות: הישר העובר דרך והישר העובר דרך הם משיקים ל-. בדרך זו אנו קובעים אלו נקודות צריכות להפוך להיות פנימיות ואלו נקודות נשארות כקודקודים של הקמור.

  33. פונקציות LEFT-OF וְ-RIGHT-OF LEFT-OF(a,b,c) בודקת האם c משמאל ל- RIGHT-OF(a,b,c) בודקת האם cמימין ל-

  34. האלגוריתם • נמיין את נקודות S לפי שיעור קואורדינטת ה-x שלהם. • 3 הנקודות הראשונות יוצרות משולש – הקְמוֹר ההתחלתי. • נתבונן בנקודה הבאה לפי הסדר ב-S, נוסיף אותה לקְמוֹר ונסיר את הנקודות שהופכות לפנימיות. • נמשיך בתהליך של הוספת נקודה בכל שלב, עד שנסיים לעבור על כל נקודות S.

  35. דוגמת הרצה

  36. ניתוח סיבוכיות מיון נקודות S מתבצע ב- לכל נקודה ב-S אנו בודקים את גבולות הקְמוֹר הנוכחי. במקרה הגרוע נצטרך לעבור על כל k-1 גבולות הקְמוֹר. לכן נקבל: לכן סה"כ סיבוכיות האלגוריתם היא

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

  38. שאלה נגדיר את הקוטר של S להיות המרחק הגדול ביותר בין שתי נקודות ב-S. הראו שנקודות אלו הן קודקודים של הקְמוֹר.

  39. תשובה תהי S קבוצת נקודות במישור, ונניח ש-a,b הן הנקודות עם המרחק הגדול ביותר ביניהן.

  40. נשים לב שניתן לסובב את קבוצת הנקודות שלנו כך: הנקודות הקיצוניות על ציר x הן קודקודים של הקְמוֹר

  41. GIFT WRAPPING

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

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

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

  45. דוגמת הרצה

  46. ניתוח סיבוכיות בכל שלב עלינו לחשב זווית עם n-1 נקודות, כלומר כל שלב עולה לנו O(n). כמה שלבים כאלו אנו מבצעים? כמספר הנקודות שיש לנו בקמור, נסמן מספר זה ב-h. סה"כ סיבוכיות האלגוריתם היא O(hn)

  47. שאלה הראה שהנקודות שיוצרות את הזווית הקטנה ביותר עם הצלע הקודמת הן בהכרח קודקודים בקְמוֹר

  48. שאלה הראה שניתן להחליף את השוואת הזוויות בפונקציות LEFT-OF, RIGHT-OF שראינו קודם

  49. שאלה הראו דוגמה לקבוצת נקודות שהרצת האלגוריתם עליה היא בסיבוכיות הזמן הגרועה ביותר הראו דוגמה לקבוצת נקודות שהרצת האלגוריתם עליה היא בסיבוכיות הזמן הטובה ביותר. מהי הסיבוכיות במקרה הזה?

  50. GRAHAM SCAN

More Related