You are on page 1of 6

‫אלגוריתמים מבוזרים לרשתות מחשבים‬

‫ממ"ן ‪14‬‬

‫‪ (1‬נסמן קבוצת ‪ MIS‬כ‪ V-‬ואת ‪ MaxIS‬כ‪W-‬‬


‫נראה כי כל קודקוד ב‪ W-‬הוא או קודקוד ב‪ V-‬או שכן של קודקוד ב‪V-‬‬
‫נניח שטענה זו שגויה – כלומר קיים קודקוד ‪ v‬ב‪ W-‬שאינו ב‪ V-‬ואינו שכן של קודקוד ב‪V-‬‬
‫נקבל שהוא בלתי תלוי מכל כקודקוד ב‪ V-‬ואם הוא אינו ב‪ V-‬אז זה סתירה לכל שהקבוצה היא בלתי תלויה‬
‫מקסימלית‬

‫נסתכל על קודקוד ‪ v‬כלשהו ב‪ V-‬שאינו ב‪( W-‬בהנחה שקיים – אם לא קיים אז ‪ W=V‬ואין מה להוכיח)‬
‫אם קודקוד זה אינו ב‪ W-‬אז בהכרח אחד השכנים שלו נמצא ב‪( W-‬אחרת היינו יכולים להוסיף אותו ל‪W-‬‬
‫בסתירה למקסימליות של הקבוצה)‬
‫בגלל האי תלות החסומה – מספר השכנים הבלתי תלויים של ‪ v‬חסום ע"י קבוע‬
‫קרי מספר השכנים של ‪ v‬שנמצאים ב‪ W-‬חסום ע"י קבוע (כיוון שהקודקודים ב‪ W-‬חייבים להיות בלתי תלויים)‬
‫‪ c‬של האי תלות חסומה‬

‫נקבל בהכרח שמתקיים |𝑉|𝑐 ≤ |𝑊|‬


‫ולכן ‪ V‬הוא קירוב עם פקטור קבוע ‪ c‬ל‪W-‬‬
‫‪ )2‬הרעיון‪:‬‬
‫כיוון שהגרף כבר חולק ל‪-‬‬
‫‪ (O(1),O(1))-Network-Decomposition‬כל קודקוד משוייך ע"י צבע כלשהו בין ‪ 1‬לקבוע ‪c‬‬
‫והמרחק הלא מכוון בין שני קודקודים באותה קבוצה הוא לכל היותר קבוע ‪d‬‬
‫אם נגדיר שקשתות בין קבוצות שונות יכוונו מצבע גדול לקטן יותר בלבד – נקבל שהמסלול הלא מכוון הכי‬
‫ארוך (כאשר מנסים לבצע את המסלול הקצר ביותר בין כל שתי נקודות) הוא לכל היותר ‪ (d+1)*c‬ולכן המרחק‬
‫הלא מכוון בין כל קודקוד על מסלול מכוון לבין תחילת המסלול בהכרח חסום ע"י קבוע‬
‫אלגוריתם‪:‬‬
‫‪ .1‬בצע לכל קודקוד‬
‫‪ .1.1‬שלח את ‪ my_color‬ו‪ id-‬לכל השכנים‬
‫‪ .1.2‬אם הצבע שלי שונה משל השכן שלי‬
‫‪ .1.2.1‬הגדר אוריינטציה בכיוון הצבע הקטן יותר‬
‫‪ .1.3‬אחרת‬
‫‪ .1.3.1‬הגדר אוריינטציה לפי גודל ‪( id‬לכיוון ה‪ id-‬הקטן יותר)‬
‫נכונות‪:‬‬
‫נסתכל על מסלול מכוון כלשהו ‪( P‬בגלל שהגדרתי צלעות בתוך קבוצה עם אותו צבע להיות מכוונות לפי ‪ id‬אין‬
‫מעגלים מכוונים בגרף – אבל כיוון שכיוון צלעות אלה לא ממש מספיע על ההוכחה אני מחשיב כאילו מעגלים‬
‫הינם אפשריים)‬

‫נראה שאם הוא המסלול התחיל מקודקוד בקבוצה עם צבע ‪ i‬אז הוא בהכרח אחרי ‪ d+1‬צעדים לא מכוונים‬
‫ואופטמליים נעבור לקבוצה עם צבע קטן מ‪( i-‬בהנחה שיש קבוצה כזו)‬
‫נניח בשלילה שזה לא נכון‬
‫כיוון שכל הקשתות היוצאות מקבוצה ‪ i‬אינן מכוונות כלפי קבוצות עם צבע גדול מ‪ – i-‬המסלול לא יכול להגיע‬
‫לקבוצות אלו‬
‫כמו כן אין קבוצה שכנה עם צבע ‪ i‬אחרת לא היה מתקבל פירוק רשת תקין‬
‫לכן בהכרח זה אומר שאי אפשר להגיע תוך ‪ d‬צעדים לא מכוונים אל הקודקוד המקשר לקבוצה עם צבע קון‬
‫יותר – וזה בסתירה למרחק המינימאלי בין שני קודקודים בקבוצה‬

‫לכן נקבל שאין מסלול לא מכוון ארוך יותר מ‪ c*(d+1)-‬כי מכל קבוצה כלשהי – נעבור לקבוצה עם צבע נמוך‬
‫יותר אחרי ‪ d+1‬צעדים לא מכוונים לכל היותר ויש לכל היותר ‪ c‬צבעים‬
‫לכן מתקבלת ישיגות חסומה ע"י קבוע‬

‫סיבוכיות זמן‪:‬‬
‫זמן ריצה‪:‬‬
‫הריצה לוקחת )‪ O(1‬סיבובים‬
‫סיבוב של הודעה אחת של צבע ואחר חישוב מקומי של כל קודקוד של אוריינטציה‬
‫‪ )3‬בניתוב הירככי עם ‪ 3‬רמות‬
‫נסמן את‬
‫גודל הרמה הראשונה (קלאסטרים) כ‪x-‬‬
‫גודל הרמה השנייה (תת‪-‬קלאסטרים) כ‪y-‬‬
‫גודל הרמה השלישית (קודקודים בודדים) כ‪z-‬‬
‫(אני מניח שראש קלאסטר לא מחשיב את עצמו כחלק מ‪ z-‬או ‪ y‬וראש תת קלאסטר אינו חלק מ‪)z-‬‬

‫קודקוד שאינו ראש קלאסטר או תת‪-‬קלאסטר צריך לשמור בטבלה שלו את כל הקודקודים שאיתו בתת‪-‬‬
‫קלאסטר (‪ )z-1‬את כל ראשי תתי הקלאסטרים בקלאסטר בו הוא נמצא (‪ (y‬וכמו כן את ראשי כל הקלאסטרים‬
‫(‪)x‬‬
‫סה"כ ‪ x+y+z-1‬שורות‬
‫(אפשר גם לבצע בנייה כך שמספר השורות לא מכיל ניתוב לקודקודים באותו תת‪-‬קלאסטר אלא ינותבו דרך‬
‫ראש תת‪-‬הקלאסטר אבל זה לא משפיע על גודל הגרף הסופי בגלל מספר השורות הנדרשות אצל ראשי תת‬
‫קלאסטרים)‬
‫קודקוד שהוא ראש תת‪-‬קלאסטר צריך לשמור בטבלה שלו את כל הקודקודים בתת‪-‬קלאסטר שלו (‪ )z‬את כל‬
‫שאר ראשי תתי‪-‬הקלאסטרים (‪ (y-1‬ואת כל ראשי הקלאסטרים (‪)x‬‬
‫סה"כ ‪ x+y+z-1‬שורות‬
‫קודקוד שהוא ראש קלאסטר צריך לשמור בטבלה שלו את כל ראשי תתי הקלאסטרים שלו (‪ )y‬ואת כל שאר‬
‫ראשי הקלאסטרים (‪)x-1‬‬
‫סה"כ ‪ x+y-1‬שורות‬

‫סה"כ מספר הקודקודים הבודדים הוא ‪ xyz‬מספר הקודקודים שהם ראשי תת‪-‬קלאסטרים הוא ‪ xy‬ומספר‬
‫הקודקודים שהם ראשי קלאסטרים הוא ‪x‬‬
‫סה"כ ‪ x+xy+xyz‬קודקודים‬
‫המגבלה שלנו היא ‪ 256‬שורות בטבלת ניתוב לכן האילוץ היחיד שלנו הוא ‪( 𝑥 + 𝑦 + 𝑧 − 1 ≤ 256‬אני‬
‫מתעלם מאפשרות של ‪ z=0,1‬כיוון שאפשר לקבל גרפים יותר גדולים די בבירור עם ‪ z‬גדול יותר)‬
‫כלומר ‪𝑥 + 𝑦 + 𝑧 = 257‬‬

‫גודל הגרף המקסימלי תחת תנאים אלו מתקבל עם‬


‫‪x=86,y=86,z=85‬‬
‫נציב ונקבל שגודל הגרף הוא ‪ 636142=x+xy+xyz‬קודקודים‬

‫אם אפשר לבנות את הגרף כך שראש הקלאסטר הוא גם ראש תת קלאסטר בעצמו (אבל לא נכנס לספירה‬
‫של ‪ y‬לטובת נוחות החישוב)‬
‫זה אומר שהוא צריך לשמור את כל הקודקודים בתת הקלאסטר שלו (‪ )z‬את כל ראשי תתי הקלאסטרים שלו‬
‫(‪ )y‬ואת כל שאר ראשי הקלאסטרים (‪)x-1‬‬
‫סה"כ ‪ x+y+z-1‬שורות‬
‫נקבל אילוצים זהים בכל סוגי הקודקודים‬

‫וגודל הגרף הוא ‪x+xy+xz+xyz‬‬


‫‪ x=86,y=86,z=85‬עדיין נותן גרף מקסימלי (אבל הפעם אפשר גם להציב ‪)x=86,y=85,z=86‬‬
‫ונקבל סה"כ ‪ 643452‬קודקודים בגרף‬
‫‪ )4‬נבדוק עבור כל קודקוד בנפרד מה עוצמת השידור המתקבלת אצלו ועקב כך איזה שידור התקבל‬
‫נשים לב שהשידור של קודקוד ‪ A‬לא יתקבל ב‪ B-‬וכנ"ל בכיוון השני‬
‫נסתכל על שלושת הקודקודים הנותרים‪:‬‬
‫קודקוד ‪:C‬‬
‫𝑃‬ ‫‪10‬‬ ‫‪10‬‬
‫= )𝐶 ‪𝑠(𝐴,‬‬ ‫=‬ ‫‪2‬‬ ‫=‬ ‫‪=5‬‬
‫‪𝑑(𝐴, 𝐶)𝑥 √1 + 1‬‬ ‫‪2‬‬
‫𝑃‬ ‫‪10‬‬ ‫‪10‬‬
‫= )𝐶 ‪𝑠(𝐵,‬‬ ‫𝑥‬
‫=‬ ‫‪2‬‬ ‫=‬ ‫‪=2‬‬
‫)𝐶 ‪𝑑(𝐵,‬‬ ‫‪√4 + 1‬‬ ‫‪5‬‬
‫נחשב את נוסחת ‪ SINR‬עבור הצלחת השידור מכל משדר‬
‫‪5‬‬ ‫‪5‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪𝑆𝐼𝑁𝑅(𝐴):‬‬ ‫‪= ≥ 1, 𝑆𝐼𝑁𝑅(𝐵):‬‬ ‫‪= <1‬‬
‫‪1+2 3‬‬ ‫‪1+5 3‬‬
‫לכן השידור של ‪ A‬יתקבל ב‪ C-‬והשידור מ‪ B-‬לא יתקבל‬
‫קודקוד ‪:D‬‬
‫𝑃‬ ‫‪10‬‬ ‫‪10‬‬
‫= )𝐷 ‪𝑠(𝐴,‬‬ ‫𝑥‬
‫=‬ ‫‪2‬‬ ‫=‬ ‫‪=1‬‬
‫)𝐷 ‪𝑑(𝐴,‬‬ ‫‪√9 + 1‬‬ ‫‪10‬‬
‫𝑃‬ ‫‪10‬‬ ‫‪10‬‬
‫= )𝐷 ‪𝑠(𝐵,‬‬ ‫=‬ ‫‪2‬‬ ‫=‬ ‫‪= 10‬‬
‫‪𝑑(𝐵, 𝐷)𝑥 √0 + 1‬‬ ‫‪1‬‬
‫נחשב את נוסחת ‪ SINR‬עבור הצלחת השידור מכל משדר‬
‫‪1‬‬ ‫‪1‬‬ ‫‪10‬‬
‫‪𝑆𝐼𝑁𝑅(𝐴):‬‬ ‫=‬ ‫‪< 1, 𝑆𝐼𝑁𝑅(𝐵):‬‬ ‫‪=5≥1‬‬
‫‪1 + 10 11‬‬ ‫‪1+1‬‬
‫לכן השידור של ‪ B‬יתקבל ב‪ D-‬והשידור מ‪ A-‬לא יתקבל‬
‫קודקוד ‪:E‬‬
‫𝑃‬ ‫‪10‬‬ ‫‪10‬‬
‫= )𝐸 ‪𝑠(𝐴,‬‬ ‫𝑥‬
‫=‬ ‫‪2‬‬ ‫=‬
‫)𝐸 ‪𝑑(𝐴,‬‬ ‫‪√16 + 1‬‬ ‫‪17‬‬
‫כיוון שסף ההצלחה הוא ‪ 1‬וגודל המכנה בנוסחת ‪ SINR‬גדול מ‪( 1-‬כי ‪ )N>1‬ניתן כבר לקבוע כי השידור של ‪A‬‬
‫לא יתקבל ב‪E-‬‬
‫𝑃‬ ‫‪10‬‬ ‫‪10‬‬
‫= )𝐸 ‪𝑠(𝐵,‬‬ ‫=‬ ‫=‬ ‫‪=5‬‬
‫‪𝑑(𝐵, 𝐸)𝑥 √1 + 12‬‬ ‫‪2‬‬
‫נחשב את נוסחת ‪ SINR‬עבור הצלחת השידור מ‪B-‬‬
‫‪5‬‬ ‫‪85‬‬
‫‪𝑆𝐼𝑁𝑅(𝐵):‬‬ ‫=‬ ‫‪≥1‬‬
‫‪10‬‬ ‫‪27‬‬
‫‪1+‬‬
‫‪17‬‬
‫לכן השידור של ‪ B‬יתקבל ב‪E-‬‬
‫‪ )5‬הרעיון‪:‬‬
‫נבצע שידור מקומי כך שקודקוד שמצליח לשדר לכל שכניו ייכנס לקבוצה הבלתי תלויה ובסיבוב הבא יעדכן את‬
‫שכניו ואז גם הוא וגם שכניו יפסיקו לשדר‬
‫בהסתברות גבוהה כל הקודקודים יסיימו לאחר מספיק סיבובים‬

‫אם כל הקודקודים סיימו זה אומר שנוצרה קבוצה של ‪MIS‬‬


‫כיוון שמדובר במודל ‪ SINR‬כמו בספר הוא גרף עם אי תלות חסומה ולכן (ע"פ שאלה ‪ 1‬בממ"ן זה) הוא קירוב‬
‫של הגודל המקסימלי של קבוצה בלתי תלויה בגרף עד כדי קבוע (שהוא הקבוע ‪ c‬שנבחר לצרכי השאלה)‬
‫האלגוריתם‪:‬‬
‫‪ .1‬כל הקודקודים פעילים וקבוצת ה‪ MIS-‬ריקה‬
‫‪ .2‬נחשב את השכנות במרחק ‪Δ′ = 𝑂(Δ) 2‬‬
‫‪ .3‬כל עוד ‪Δ ≥ 1‬‬
‫‪ .3.1‬כל קודקוד פעיל מבצע במשך )‪ O(logn‬איטרציות את שני הסיבובים הבאים‪:‬‬
‫‪𝜖′‬‬ ‫‪𝜖′‬‬
‫‪ .3.1.1‬כל קודקוד מנסה לשדר בהסתברות ‪ Δ‬ולא משדר בהסתברות ‪1 − Δ‬‬
‫‪ .3.1.2‬אם הקודקוד מגלה שהשידור הצליח‬
‫הוא מצטרף ל‪ MIS-‬ומסמן עצמו כלא פעיל ושולח הודעה לכלל השכנים שהוא‬ ‫‪.3.1.2.1‬‬
‫הצטרף ל‪MIS-‬‬
‫‪ .3.1.3‬אם קודקוד מקבל הודעה ששכן הצטרף ל‪ MIS-‬הקודקוד הופך ללא פעיל‬
‫‪Δ‬‬
‫=‪Δ‬‬ ‫‪.3.2‬‬
‫‪2‬‬

‫נכונות‪:‬‬
‫‪Δ‬‬
‫שכנים‪ ,‬הקודקוד יפסיק להיות פעיל אם הוא או אחד שכניו ייכנסו‬ ‫‪2‬‬
‫נסתכל על קודקוד כלשהו שיש לו לפחות‬
‫ל‪MIS-‬‬
‫‪𝜖′‬‬
‫‪1−‬‬ ‫ההסתברות שקודקוד בודד יחליט לא לשדר היא‬
‫‪Δ‬‬
‫וההסתברות שאף אחד מהשכנים לא ישדר בסיבוב בודד היא לכל היותר‬
‫‪Δ‬‬
‫‪𝜖′ 2‬‬
‫) ‪(1 −‬‬
‫‪Δ‬‬
‫לכן ההסברות שלפחות קודקוד אחד ינסה לשדר בסיבוב אחד היא‬
‫‪Δ‬‬
‫‪𝜖′ 2‬‬
‫) ‪1 − (1 −‬‬
‫‪Δ‬‬

‫סיכוי זה הוא קבוע 𝜇 בין ‪ 0‬ל‪1-‬‬


‫ומהגדרת מודל ‪ SINR‬אם קודקוד החליט לשדר הסיכוי שהוא יצליח הוא ½‬
‫𝜇‬
‫לכן נקבל סיכוי של בכל סיבוב שהקודקוד יסיים לרוץ‬
‫‪2‬‬
‫ואחרי )‪ O(logn‬סיבובים נקבל (בהנחה שהקבוע ב‪ O-‬גדול מספיק ובגלל שכל סיבוב בלתי תלוי בתוצאות‬
‫סיבובים קודמים) שהסתברות שהקודקוד לא סיים לרוץ היא‬
‫𝜇‬ ‫)𝑛𝑔𝑜𝑙(𝑂‬ ‫𝑛𝑔𝑜𝑙𝑎 ‪1‬‬ ‫‪1‬‬
‫) ‪(1 −‬‬ ‫) (=‬ ‫𝑎 =‬
‫‪2‬‬ ‫‪2‬‬ ‫𝑛‬
‫ואם נשתמש ב‪ union bound-‬הסיכוי שקודקוד כלשהו לא יסיים לרוץ הוא לכל היותר‬
‫𝑛‬ ‫‪1‬‬
‫𝑎𝑛‬
‫‪= 𝑛𝑎−1‬‬

‫כלומר עבור ‪ a=2‬לפחות הסיכוי שכל הקודקודים לא יסיימו הוא שואף לאפס‬
‫חישוב זה נכון לכל הקודקודים עם לפחות חצי דלתא שכנים‬
‫כיוון שבכל איטרציה של האלגוריתם מקטינים את דלתא פי חצי – יוצא שאנו מבצעים מספיק ריצות לכל‬
‫הקודקודים עם כל כמות שכנים אפשרית (גם אם במות השכנים קטנה תוך כדי ריצה – בגלל ששכנים שלהם‬
‫נכנסו ל‪ MIS-‬בהמשך הריצה נגיע לאיטרציה עם ‪ Δ‬קטן מספיק למספר השכנים ה'עדכני')‬
‫כמו שהסברתי ברעיון של האלגוריתם‬
‫אם כל הקודקודים סיימו זה אומר שנוצרה קבוצה של ‪ – MIS‬אם קודקוד סיים בהכרח או הוא או שכן שלו‬
‫הצטרפו ל‪MIS-‬‬
‫אם הוא לא סיים אז לא הוא ולא אחד השכנים שלו הצטרפו ל‪ – MIS-‬ולכן עדיין יש לו פוטנציאל להיכנס ל‪-‬‬
‫‪MIS‬‬
‫ואין אפשרות ששני קודקודים שכנים ייכנסו לקבוצה – אם אחד נכנס ל‪ MIS-‬השני יהפוך באותו סיבוב לבלתי‬
‫פעיל בתור שכן ולא ינסה להיכנס ל‪ ,MIS‬ואם שניהם שידרו באותו סיבוב – השידור של שניהם לא יצליח‬
‫ושניהם לא ייכנסו ל‪ MIS-‬בסיבוב זה‬

‫כיוון שמדובר במודל ‪ SINR‬כמו בספר הוא גרף עם אי תלות חסומה ולכן (ע"פ שאלה ‪ 1‬בממ"ן זה) הוא קירוב‬
‫של הגודל המקסימלי של קבוצה בלתי תלויה בגרף עד כדי קבוע (שהוא הקבוע ‪ c‬שנבחר לצרכי השאלה)‬
‫סיבוכיות‬
‫זמן ריצה‪:‬‬
‫מספר האיטרציות הוא )‪ log(Δ‬ובכל איטרציה רצים )‪ O(logn‬סיבובים‬
‫סה"כ נקבל‪:‬‬
‫))𝑛(𝑔𝑜𝑙 )‪ 𝑂(log(Δ‬סיבובים‬

‫סיבוכיות ביטים‪:‬‬
‫ההודעות אינן נדרשות להכיל מידע (חוץ מביט של נכנסתי ל‪ MIS-‬ומה שנדרש להודעה גנרית של שידור‬
‫מקומי) לכן סיבוכיות זו היא )‪O(1‬‬

‫סיבוכיות הודעות‪:‬‬
‫כל קודקוד שולח הודעות לכל שכניו בכל סיבוב (לכל היותר ‪)Δ‬‬
‫נקבל סה"כ מספר הודעות החסום ע"י‬
‫))𝑛(𝑔𝑜𝑙 )‪𝑂(Δ𝑛 log(Δ‬‬

You might also like