Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 33

‫גישת זיהוי הקודקודים למציאת חתך‬

‫מינימום גלובלי בגרף לא מכוון‬

‫אריק נמצוב‬
‫‪17.6.07‬‬
‫הצגת הבעיה‬

‫מולטיגרף לא מכוון עם ‪ n‬קודקודים ו‪-‬‬ ‫‪‬‬


‫‪ m‬קשתות‪.‬‬
‫לא ממושקל או בעל משקלות אי‪-‬‬ ‫‪‬‬
‫שליליים על הקשתות‪.‬‬
‫כל חלוקה של הקודקודים לשתי‬ ‫‪‬‬
‫קבוצות לא ריקות מגדירה חתך‪.‬‬
‫עלינו למצוא חתך בעל משקל‬ ‫‪‬‬
‫מינימלי מבין כל החתכים בגרף‪.‬‬
‫גישות קודמות לפתרון‬

‫גישות המבוססות על זרימה‪:‬‬ ‫‪‬‬


‫חישוב המינימלי מבין כל חתכי ה‪s-t-‬‬ ‫–‬
‫בניית עץ גומורי‪-‬היו‬ ‫–‬

‫חתכים ללא זרימה‪:‬‬ ‫‪‬‬


‫צמצום קודקודים דטרמיניסטי (‪)Nagamochi & Ibaraki‬‬ ‫–‬
‫צמצום קודקודים אקראי (‪)Karger‬‬ ‫–‬
‫מושגים והגדרות‬

‫סוגים של אלגוריתמים אקראיים‪:‬‬ ‫‪‬‬


‫מונטה קארלו‬ ‫–‬
‫דוגמא‪ :‬אלגוריתם מילר‪-‬רבין לבדיקת ראשוניות של מספרלאס וגאס‬ ‫‪‬‬

‫לאס וגאס‬ ‫–‬


‫דוגמא‪ quicksort :‬עם בחירה רנדומלית של ‪pivot‬‬ ‫‪‬‬
‫פרוצדורת צמצום הקודקודים‬

‫בוחרים קשת‪ ,‬מורידים‬ ‫‪‬‬


‫אותה מן הגרף וממזגים את‬
‫הקודקודים בשני קצותיה‪.‬‬
‫כל הקשתות שחוברו‬ ‫‪‬‬
‫לקודקודים המקוריים‬
‫מחוברות כעת לקודקוד‬
‫החדש‪ .‬לא מורידים קשתות‬
‫כפולות‪.‬‬
‫הגרף החדש מכיל קודקוד‬ ‫‪‬‬
‫אחד פחות‪.‬‬
‫אינטואיציה‬

‫בחר קשתות באופן אקראי וצמצם אותן‪.‬‬ ‫‪‬‬

‫יש מעט מאוד קשתות בחתך הספציפי ‪ C‬שאנו‬ ‫‪‬‬


‫מחפשים‪.‬‬

‫כל הרצה בלתי תלויה באחרות ‪ -‬חזור על האלגוריתם‬ ‫‪‬‬


‫עד לקבלת הסתברות טובה להצלחה‬
‫אלגוריתם הצמצום הבסיסי (גרף ללא משקולות)‬

‫חזור כל עוד נשארו יותר מ‪ 2-‬קודקודים בגרף‪:‬‬ ‫‪‬‬


‫‪.‬‬ ‫‪1‬‬
‫| ) ‪| E (G‬‬
‫בחר קשת )‪ (u,v‬בהסתברות של‬ ‫–‬
‫צמצם את הקודקודים ‪ u‬ו‪.v-‬‬ ‫–‬

‫כאשר מצמצמים קשת שלא בחתך‪ ,‬החתך לא נפגע‪.‬‬ ‫‪‬‬


‫בכל צמצום ההסתברות לפגוע בקשת מן החתך היא‬ ‫‪‬‬
‫לכל היותר ‪( 2r‬בהנחה שעד כה ‪ C‬לא נפגע)‪.‬‬
‫דרגת כל קודקוד לפחות ‪ =( k‬גודל החתך ‪.)C‬‬ ‫–‬
‫מספר הקשתות בגרף הוא לפחות ‪.kr/2‬‬ ‫–‬
‫הסיכוי לפגוע בחתך הוא בדיוק )‪.k/E(G‬‬ ‫–‬
‫אלגוריתם הצמצום הבסיסי (המשך)‬

‫למה ‪ :1‬החתך שלנו שורד‬ ‫‪‬‬


‫‪1‬‬
‫צמצום ל‪ 2-‬קודקודים‬
‫‪n‬‬
‫בהסתברות גדולה שווה ל‪-‬‬
‫‪2‬‬
‫‪ ‬‬
‫‪n(n  1)  2 ‬‬
‫בכל שלב יש הסתברות של לכל‬ ‫–‬
‫היותר ‪ 1-2/r‬להיכשל‪.‬‬
‫המכפלה נותנת את המספר‬ ‫–‬
‫המבוקש‪.‬‬
‫גבול זה הדוק‬ ‫‪‬‬
‫לפי דוגמת המעגל‬ ‫–‬
‫אלגוריתם הצמצום הבסיסי (המשך)‬

‫כאשר מריצים את האלגוריתם )‪ cn log(n‬פעמים‪,‬‬


‫‪2‬‬
‫‪‬‬
‫‪1  nc‬‬ ‫ההסתברות שנקבל את החתך שלנו היא לפחות‬
‫נסמן ב‪ E-‬את האירוע שבו אנו לא מקבלים את החתך ‪C‬‬ ‫–‬
‫לאחר )‪ cn log(n‬הרצות מתקיים‪:‬‬
‫‪2‬‬
‫–‬
‫ונציב במקום ‪.x‬‬ ‫נשתמש ב‪-‬‬ ‫–‬
‫מונוטונית‬ ‫ונשתמש בכך ש‪-‬‬ ‫נעלה בחזקת‬ ‫–‬
‫עולה לקבלת‪:‬‬
‫הרחבה לגרפים ממושקלים‬

‫האינטואיציה‪:‬‬ ‫‪‬‬
‫כל קשת בגרף מורכבת ממספר קשתות לא ממושקלות‪.‬‬ ‫–‬
‫פועלים בדיוק לפי האלגוריתם המקורי‪.‬‬ ‫–‬

‫חזור כל עוד נשארו יותר מ‪ 2-‬קודקודים בגרף‪:‬‬ ‫‪‬‬


‫)‪W (u, v‬‬
‫‪.‬‬ ‫)‪ W ( x, y‬‬ ‫בחר את הקשת )‪ (u,v‬בהסתברות‬ ‫–‬
‫‪x , yV‬‬

‫צמצם את הקודקודים ‪ u‬ו‪.v-‬‬ ‫–‬

‫ניתוח הסתברותי זהה לזה של גרפים ללא משקלות‪.‬‬ ‫‪‬‬


‫שיקולי מימוש‬

‫מבנה נתונים‪:‬‬ ‫‪‬‬


‫מטריצה שמחזיקה בתא )‪ (u,v‬את המשקל הכולל של כל הקשתות בין‬ ‫–‬
‫‪ u‬ו‪ .v-‬מסומן ב‪.W(u,v)-‬‬
‫לכל קודקוד מחזיקים את המשקל הכולל של קשתות ממנו – )‪.D(v‬‬ ‫–‬
‫יעילות מקום )‪O(n2‬‬ ‫–‬

‫פרוצדורת עזר ‪ – Random-Select‬זמן ריצה ))‪:O(log(n‬‬ ‫‪‬‬


‫מקבלת כקלט סדרה מצטברת של מספרים ‪. W0 ,...,Wm‬‬ ‫–‬
‫‪Wk 1 ,Wk‬‬ ‫נבחר מספר אקראי בתחום ונמצא בין אילו שני מספרים בסדרה‬ ‫–‬
‫הוא נופל‪.‬‬
‫ערך החזרה הוא האינדקס ‪i‬‬ ‫–‬

‫‪W1‬‬ ‫‪W2‬‬ ‫‪W3‬‬


‫שיקולי מימוש – בחירת קשת‬

‫בחירת קשת לצמצם‪:‬‬ ‫‪‬‬


‫בונים סדרה מצטברת מהמספרים ) ‪ D(v ),..., D(v‬ובוחרים‬
‫‪1‬‬ ‫‪n‬‬ ‫–‬
‫קודקוד ‪ vi‬בעזרת ‪.Random-Select‬‬
‫כעת נבנה סדרה מצטברת מן המספרים ) ‪W (v , u ),W (v , u ),...,W (v , u‬‬
‫‪i‬‬ ‫‪1‬‬ ‫‪i‬‬ ‫‪2‬‬ ‫‪i‬‬ ‫‪s‬‬ ‫–‬
‫ונבחר קשת )‪.(vi,uj‬‬
‫זמן ריצה כולל של בחירת קשת – )‪O(n‬‬ ‫‪‬‬
‫הערה‪ :‬כאשר ‪ Random-Select‬רץ בזמן סביר‬ ‫–‬
‫‪ Random-Select‬בזמן פולינומיאלי‬

‫זמן הריצה לא פולינומיאלי במובן החזק‬ ‫‪‬‬


‫במימוש נאיבי סיבוכיות היא )‪log(W‬‬ ‫–‬
‫‪W1‬‬ ‫‪W2‬‬ ‫‪W3‬‬ ‫פתרון פשוט‪:‬‬ ‫‪‬‬
‫‪W1‬‬ ‫‪W2‬‬ ‫התחל עם טווח של ]‪[0,Max‬‬ ‫–‬
‫שלב חלוקה‪ :‬חלק את הטווח ל‪ 2n-‬קטעים‬ ‫–‬
‫‪W2‬‬
‫שלב הגרלה‪:‬‬ ‫–‬
‫הגרל קטע – )‪ O(log n‬ביטים‬ ‫‪‬‬
‫חפש בזמן )‪ O(log n‬אם יש קו מפריד בקטע שנבחר‪.‬‬ ‫‪‬‬
‫– אם כן חזור לשלב החלוקה‪ ,‬כאשר הטווח החדש הוא הקטע‬
‫הנבחר‪.‬‬
‫– אחרת‪ ,‬הוצא לפלט את האינדקס המקושר לקטע הנבחר‬
‫‪ Random-Select‬בזמן פולינומיאלי‬

‫אלגוריתם מונטה קארלו (הצלחה לא מובטחת)‬ ‫‪‬‬


‫הסתברות להצלחה בכל שלב – לפחות ½‬ ‫‪‬‬
‫ההסתברות לכישלון‪:‬‬ ‫‪‬‬
‫לאחר ‪ t‬שלבים שלוקחים )‪ O(t log n‬זמן יש הסתברות של‬ ‫–‬
‫)‪ O(2-t‬לכשלון‬
‫תוחלת להצלחה – ‪ 2‬נסיונות‬ ‫–‬
‫כאשר יש ‪ n‬קריאות ל‪ Random-Select-‬זמן הריצה‬ ‫–‬
‫הממוצע הוא )‪ O(log n‬בהסתברות )‪1-exp(t‬‬
‫שיקולי מימוש – בחירת קשת (המשך)‬

‫קשת )‪ (u,v‬תיבחר בהסתברות )‪:W (u, v) /  W ( x, y‬‬


‫‪x , yV‬‬ ‫‪‬‬
‫שיקולי מימוש – ביצוע צמצום‬

‫צמצום קודקודים (‪ u‬מחליף את ‪:)u,v‬‬ ‫‪‬‬


‫)‪W (u, x)  W ( x, u )  W (u, x)  W (v, x‬‬ ‫–‬
‫‪D (v )  0‬‬ ‫–‬
‫)‪D(u )  D(u )  D(v)  2W (u, v‬‬ ‫–‬
‫לכל קודקוד ‪ x‬חוץ מ‪:u,v-‬‬ ‫–‬
‫‪W ( v, x )  W ( x, v )  0 ‬‬

‫זמן ריצה של ביצוע צמצום ‪ 2‬קודקודים – )‪O(n‬‬ ‫‪‬‬


‫שיקולי מימוש ‪ -‬מסקנות‬

‫צמצום של קודקודים – בחירת קשת ולאחריה מימוש‬ ‫‪‬‬


‫הצמצום‪ .‬זמן ריצה – )‪.O(n‬‬
‫צמצום מלא של גרף – ‪ n-2‬צמצומים‪.‬‬ ‫‪‬‬
‫זמן ריצה כולל של צמצום מלא – )‪. O(n2‬‬ ‫‪‬‬

‫))‪O(n4 log(n‬‬ ‫זמן ריצה כולל של האלגוריתם הבסיסי‬ ‫‪‬‬


‫פעמים‬ ‫))‪O(n2 log(n‬‬ ‫מריצים‬ ‫–‬
‫שיפורים אפשריים‬

‫אינטואיציה‪:‬‬ ‫‪‬‬
‫‪2‬‬
‫בכל צמצום יש סיכוי של לפגוע בקשת בחתך שלנו‪.‬‬
‫‪r‬‬ ‫–‬
‫כאשר יש מעט קודקודים הסיכוי לפגוע בקשת שלנו גדול‬ ‫–‬

‫פתרונות אפשריים‪:‬‬ ‫‪‬‬


‫לצמצם עד גבול מסוים ולאחר מכן להפעיל אלגוריתם‬ ‫–‬
‫דטרמיניסטי‪.‬‬
‫לבצע צמצומים חלקיים באופן רקורסיבי‬ ‫–‬
‫אנו מבצעים יותר מסלולי צמצום ככל שמתקדמים עמוק יותר בעץ‬ ‫‪‬‬
‫הרקורסיה‪.‬‬
‫לבחור בכל רמה בעץ את המינימלי מבין החתכים‪.‬‬ ‫‪‬‬
‫אלגוריתם הצמצום הרקורסיבי‬

‫צמצום‪-‬רקורסיבי(‪:)G,n‬‬
‫‪ ‬מתחילים עם גרף ‪ G‬בעל ‪ n‬קודקודים‪.‬‬
‫‪ ‬אם ‪ n=2‬החזר את ערך החתך המוגדר‪.‬‬
‫‪ ‬אחרת בצע פעמיים‪:‬‬
‫צמצם את ‪ G‬עד שיהיו בו ‪ n / 2‬קודקודים לקבלת ’‪.G‬‬ ‫–‬
‫קרא לצמצום‪-‬רקורסיבי( ‪.)G’, n / 2‬‬ ‫–‬

‫החזר את המינימלי מבין שני החתכים המתקבלים‪.‬‬ ‫‪‬‬


‫ניתוח הסתברות הצלחה‬

‫ההסתברות שלא נפגע‬ ‫‪‬‬


‫בקשת מהחתך שלנו‬
‫בצמצום בסיסי ל‪k-‬‬
‫קודקודים היא לפחות‬
‫)‪k (k  1‬‬
‫)‪n(n  1‬‬
‫)‪k (k  1‬‬
‫נקבל‬ ‫כאשר‬
‫‪n‬‬
‫‪ 1/ 2‬‬ ‫‪k‬‬
‫)‪n(n  1‬‬ ‫‪2‬‬ ‫‪‬‬
‫ניתוח הסתברות הצלחה‬

‫ההסתברות להצלחה בהרצה יחידה של האלגוריתם‬ ‫‪‬‬


‫היא ))‪(1/ log(n‬‬

‫פותרים בעזרת נוסחת נסיגה שחוסמת הסתברות להצלחה‬ ‫–‬

‫למה ‪ :2‬אם נריץ את האלגוריתם המשופר‬


‫)‪c log 2 (n‬‬ ‫‪‬‬
‫פעמים‪ ,‬נקבל את החתך שלנו בהסתברות של לפחות‬
‫‪1  nc‬‬

‫מחשבים לפי נוסחה דומה לאלגוריתם הקודם‪:‬‬ ‫–‬


‫ניתוח זמן ריצה‬

‫)‪T (2)  O(1‬‬


‫‪‬‬ ‫‪n‬‬ ‫‪‬‬
‫נוסחת נסיגה‪:‬‬ ‫‪‬‬
‫‪T ( n )  2  T ( )  ( n 2 ) ‬‬
‫‪‬‬ ‫‪2‬‬ ‫‪‬‬

‫))‪(n2 log(n‬‬‫זמן ריצה של הרצה יחידה‪:‬‬ ‫‪‬‬


‫זמן ריצה כולל‪( O(cn log (n)) :‬לעומת זמן קודם של‬ ‫‪2‬‬ ‫‪3‬‬
‫‪‬‬
‫‪) O(mn n log(n)) :Nagamochi & Ibaraki‬‬
‫‪2‬‬

‫בכל הרצה אנו מקריבים זמן ריצה תמורת שיפור‬ ‫‪‬‬


‫ההסתברות להצלחה‪.‬‬
‫סיבוכיות מקום‪n  n / 2, O( n )  O(n ) :‬‬
‫‪k 1‬‬ ‫‪k‬‬ ‫‪k‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪‬‬
‫‪k‬‬
‫מציאת כל החתכים המינימליים‬

‫מספר החתכים המינימליים הגלובליים בגרף לא עולה‬ ‫‪‬‬


‫על ‪.  n2 ‬‬
‫לפי למה ‪ ,1‬לחתך ספציפי יש הסתברות של לפחות‬ ‫–‬
‫לשרוד צמצום‬
‫אירועי בחירת חתכים א'‪ ,‬ב' הם אירועים זרים – הסתברות‬ ‫–‬
‫לבחירת חתך מינימום א' או ב' היא סכום ההסתברויות‬
‫הסתברות לבחירת חתך מינימום כלשהו קטנה שווה ל‪1-‬‬ ‫–‬
‫נסמן את מספר החתכים ב‪:x-‬‬ ‫–‬

‫גבול זה הדוק (דוגמת המעגל)‬ ‫‪‬‬


‫מציאת כל החתכים המינימליים‬

‫הרצות של‬ ‫ההסתברות לפספס חתך ב‪-‬‬


‫)‪c log 2 (n‬‬ ‫‪‬‬
‫‪ n  c‬‬ ‫‪2c‬‬
‫) ‪   n  O( n‬‬
‫‪ 2‬‬
‫אלגוריתם הצמצום הרקורסיבי היא‬
‫לפי למה ‪ 2‬לאלגוריתם המשופר הסתברות כישלון של לכל‬ ‫–‬
‫היותר במציאת חתך ספציפי‬
‫נתייחס לכל מאורעות הכישלון כזרים‪ ,‬ונכפיל במספר‬ ‫–‬
‫החתכים המקסימלי‬
‫מציאת כל החתכים המינימליים ‪ -‬מימוש‬

‫בעיות מימוש‪:‬‬ ‫‪‬‬


‫עץ הרקורסיה מכיל )‪ O(n2‬עלים‬ ‫–‬
‫בכל הרציה של האלגוריתם נמצאים )‪ O(n2‬חתכים‬ ‫–‬
‫מינימאליים (עם חזרות)‬
‫פליטת חתך מתבצעת ב‪ O(n)-‬זמן ‪ O(n3) -‬זמן להוציא את‬ ‫–‬
‫כל החתכים לפלט‬
‫מציאת כל החתכים המינימליים ‪ -‬מימוש‬

‫שינויים באלגוריתם ‪:Recursive-Contract‬‬ ‫‪‬‬


‫הצמדת ערך ‪ Hash‬לכל קודקוד‬ ‫–‬
‫עדכון ה‪ Hash-‬כאשר מצמצמים קודקודים ע"י ‪xor‬‬ ‫–‬
‫חתך מתוייג ע"י ‪ Hash‬של שני הקודקודים שנשארו‬ ‫–‬

‫מבנה נתונים מיוחד לייצוג כל חתכי המינימום‪:‬‬ ‫‪‬‬


‫שימוש במבנה גרף דליל ()‪ O(n‬קשתות) המכונה "קקטוס"‬ ‫–‬
‫נבנה בזמן אמת תוך כדי הריצה הרקורסיבית בזמן ריצה‬ ‫–‬
‫כולל של ))‪O(n2log(n‬‬
‫חתכים מינימליים מקורבים‬

‫הגדרה‪ :‬חתך ‪-k‬מינימלי‬ ‫‪‬‬


‫חתך שערכו גדול עד פי ‪ k‬מערך החתך המינימלי הגלובלי‬ ‫–‬
‫(כאשר ‪ k‬שלם)‬
‫חתך ‪-k‬מינימלי מסויים ישרוד צמצום ל‪ 2k-‬קודקודים‬ ‫‪‬‬
‫בהסתברות של‬
‫בכל צמצום ההסתברות לפגוע בחתך שלנו היא‬ ‫–‬
‫לכל היותר‬
‫כל הצמצומים זרים‪ ,‬לכן צריך לא לפגוע בחתך בכל אחד‬ ‫–‬
‫מהם‪:‬‬
‫חתכים מינימליים מקורבים (המשך)‬

‫לאחר צמצום עד ‪ 2k‬קודקודים בוחרים חתך באופן רנדומלי‬ ‫‪‬‬


‫חלוקות שונות של הגרף‬ ‫בשלב זה ישנן פחות מ‪-‬‬ ‫–‬
‫הסתברות האלגוריתם למצוא את החתך שלנו לאחר צמצום מלא‪:‬‬ ‫–‬

‫חתכים ‪-k‬מינימליים בגרף‬ ‫) ‪O((2n)2 k‬‬ ‫ישנם‬ ‫‪‬‬


‫שוב לפי טיעונים הסתברותיים‬ ‫–‬
‫במאמר מאוחר יותר‬ ‫ערך זה שופר ל‬ ‫–‬

‫הצמצום המשופר‪ ,‬אך‪:‬‬


‫‪n‬‬
‫נקוט באלגוריתם‬ ‫‪‬‬
‫צמצם בכל שלב עד ‪ 2 k 2‬קודקודים‬ ‫–‬
‫הפסק כאשר יש ‪ 2k‬קודקודים בגרף ובחר חלוקה של הגרף באקראי‬ ‫–‬
‫חתכים מינימליים מקורבים (המשך)‬

‫ניתוח ההסתברות להצלחה זהה לזה של צמצום‬ ‫‪‬‬


‫רקורסיבי‬
‫זמן הריצה ‪-‬‬
‫))‪O(cn2 k log 2 (n‬‬ ‫–‬
‫‪1  nc‬‬ ‫הסתברות להצלחה ‪-‬‬ ‫–‬

‫אפשר להרחיב למציאת כל החתכים המקורבים בגרף‬ ‫‪‬‬


‫(בדומה לסכמה הקודמת)‬
‫רב‪-‬חתכים (‪)Multiway cuts‬‬

‫הגדרה‪ :‬רב‪-‬חתך בגודל ‪ – r‬חלוקה של קודקודי הגרף ל‪r-‬‬ ‫‪‬‬


‫קבוצות לא ריקות‪.‬‬
‫רב‪-‬חתך בגודל ‪ r‬ישרוד צמצום ל‪ r-‬קודקודים בהסתברות של‬ ‫‪‬‬
‫) )‪ ((r / n)2(r 1‬וישנו מקסימום של )‪ (n / r )2( r 1‬חתכים כאלה בגרף‪.‬‬
‫נקוט באלגוריתם הצמצום המשופר‪ ,‬אך‪:‬‬ ‫‪‬‬
‫צמצם בכל שלב עד ‪ n / 2(r 1) 2‬קודקודים‪.‬‬ ‫–‬
‫הפסק כאשר יש ‪ r‬קודקודים בגרף‬ ‫–‬

‫ניתוח ההסתברות להצלחה זהה לזה של צמצום רקורסיבי‪ .‬זמן‬ ‫‪‬‬


‫‪. O(n‬‬ ‫‪ . O(cn‬זמן ריצה קודם )‬
‫‪r 2 r 11/ 2‬‬ ‫הריצה ‪log (n)) -‬‬
‫)‪2( r 1‬‬ ‫‪2‬‬
‫תוצאות נוספות‬

‫מציאת כל הרב‪-‬חתכים בגרף‬ ‫‪‬‬


‫מציאת רב‪-‬חתכים מקורבים בגרף‬ ‫‪‬‬
‫מיקבול (‪ )Parallelization‬של האלגוריתמים‬ ‫‪‬‬
‫הראשיים שמוצגים כך שירוצו ב‪RNC-‬‬
‫זמן ריצה פולי‪-‬לוגריתמי‬ ‫–‬
‫מספר פולינומיאלי של מעבדים‬ ‫–‬

‫וריאנט יעיל במקום לאלגוריתם הבסיסי‬ ‫‪‬‬


‫שימוש במבנה נתונים של ‪ Union-Find‬לביצוע צמצומים‬ ‫–‬
‫)‪ O(n‬מקום וזמן ריצה )‪( O(m log m‬זמן ריצה גדול יותר)‬ ‫–‬
‫סיכום‬

‫גישה לא קונבנציונאלית למציאת חתך מינימום‪.‬‬ ‫‪‬‬


‫האלגוריתם פשוט ואינטואיטיבי (יחסית)‪.‬‬ ‫‪‬‬
‫שימוש עשיר באלגוריתמים ראנדומאליים וטיעונים‬ ‫‪‬‬
‫הסתברותיים (‪)Random Select, Hash, Contract‬‬
‫זמן ריצה חסר תקדים (בזמנו)‪.‬‬ ‫‪‬‬
‫שאלות‪ ,‬הערות?‬

You might also like