1 / 92

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

אלגוריתמים רנדומיים. עבודה בקורס ניתוח אלגוריתמים עבור המרצה: ד"ר אלי פורת מוגש ע"י: רוני שטרן ורונית אנקורי (לוריא) אוגוסט 2001. מה פירוש המונח "אלגוריתם רנדומי"?. אלגוריתם רנדומי הינו אלגוריתם המבצע בחירות אקראיות במהלך ביצועו.

yul
Download Presentation

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

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. אלגוריתמים רנדומיים עבודה בקורס ניתוח אלגוריתמים עבור המרצה: ד"ר אלי פורת מוגש ע"י: רוני שטרן ורונית אנקורי (לוריא) אוגוסט 2001

  2. מה פירוש המונח "אלגוריתם רנדומי"? אלגוריתם רנדומי הינו אלגוריתם המבצע בחירות אקראיות במהלך ביצועו. ניקח לדוגמא הטלת מטבע. במטבע תקין, קיים סיכוי של 50% שהמטבע יפול על "עץ", וסיכוי דומה שהמטבע יפול על "פלי". האלגוריתם שלנו יבצע הטלת מטבע, ועל סמך ההטלה יבצע משהו מסויים. אם קבלנו "עץ" יבצע משהו אחד, ואם קבלנו "פלי" יבצע משהו אחר. סה"כ נקבל בחירה אקראית כלשהיא שעל פיה נמשיך בבצוע.

  3. איך נראה אלגוריתם רנדומי? אלגוריתם רנדומי יכיל בדרך כלל פקודה מהסוג: x := outcome of a fair coin toss

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

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

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

  7. דוגמא לאלגוריתם לאס וגאס לשם המחשת אלגוריתם רנדומי מסוג "לאס וגאס" ננתח את האלגוריתם למציאת חציון.

  8. האלגוריתם למציאת חציון חציון הינו האיבר האמצעי בגודלו, כלומר האיבר שנמצא במקום ה- במערך. n/2 כלשהוא.Kנרחיב את האלגוריתם שלנו עבור איבר הנמצא במקום ,O(nlogn) את המערך בזמן Quick-Sort ניתן למיין על ידי אולם זה יכול להיות מכפלה,O(n) ואז נקבל שסה"כ הזמן הוא של קבוע כלשהוא, גם גדול מאד. נרצה לצמצם אותו עד כמה שאפשר.

  9. (1) Kהאלגוריתם למציאת האיבר ה- Sנתון המערך אנחנו רוצים למצא את האיבר ה-K בגודלו נסמן איבר זה SK ניקח איברים באקראי לתוך מערך R שגודלו n3/4. מיון המערך R לוקח האיבר שבמערך R הממוין נמצא בערך באמצע, הוא בערך החציון. האיבר ה-K בגודלו ב-S הוא בערך האיבר ה - ב- R הממוין. למשל, האיבר ה- ב-S יהיה האיבר ה- ב-R הממוין.

  10. (2) Kהאלגוריתם למציאת האיבר ה- האיבר די קרוב לאיבר ה- K בגודלו. ניקח שני איברים מ- R הממוין: האיבר ה- (נסמנו Rn) והאיבר ה- ) נסמנו Rl) בגודלם. בהסתברות טובה, האיבר ה- K בגודלו יהיה בין האיברים הנ"ל Rl Sk  Rn נסתכל על k כך ש- n1/4 < k < n-n1/4 , כלומר k לא בקצה. ידועים לנו Rl ו- Rn. נסתכל על:

  11. (3) Kהאלגוריתם למציאת האיבר ה- אם מניחים שהאיבר נמצא ביניהם, הוא נמצא ב- P => לוקח 2n פעולות. בעוד n פעולות ניתן למצוא איזה Si הוא המינימום ב- P. Si = min(P) למצוא כמה איברים יש מתחת ל-P זה פשוט (ע"י קידום מונה בעת בניית P). בהנתן מספר האיברים שמתחת, נשאר למצוא ב-P את האיבר ה- k-i ב- P (Sk = Pk-i) . אם |P|  4n3/4,אזי ניתן למיין אותו ב- 3n3/4logn = o(n) => מוצאים את האיבר ב-2 הנחות: 1) האיבר בין Rl ל- Rn. 2) |P|  4n3/4

  12. אי שוויונים חשובים לצורך ניתוח: אי שוויון מרקוב: y משתנה מקרי חיובי, אזי אי שוויון צ'בישב:

  13. kניתוח האלגוריתם למציאת האיבר ה- (Rn < Sk או P ) = Pr ( Rl > Skלא מכיל את Pr ( Sk שני הביטויים די שקולים, ולכן די אם נביט על אחד מהם. נסתכל על Pr(Rl > Sk): לצורך המעבר בין S ל- R אנחנו דוגמים איברים. בהסתברות של אני אבחר את האיבר. (בממוצע יהיו מתחת ל-kאיברים(. X = מספר האיברים שדגמתי שקטנים מ- Sk. Rl > Sk => דגמנו מהחלק שמתחת ל-k הרבה יותר איברים

  14. kניתוח האלגוריתם למציאת האיבר ה- אם Rl > Sk אזי לחלק של Rl התמפה איבר שגדול מ- Sk. Rl x

  15. kניתוח האלגוריתם למציאת האיבר ה- X1– הסיכוי של האיבר ה- 1 להיות קטן מ- Rl … Xi – הסיכוי של האיבר ה- i להיות קטן מ- Rl קטן מ-1

  16. kניתוח האלגוריתם למציאת האיבר ה- קבלנו: Rn<Sk) אוPr(Rl>Sk ההסתברות לחסום את P: או

  17. דוגמא לאלגוריתמי מונטה קרלו לשם המחשת אלגוריתמים רנדומי מסוג "מונטה קרלו" ננתח את האלגוריתם של MinCut ואת האלגוריתם של swap matching.

  18. Min-Cut problem Definitions: MultiGraph: A graph that may contain multiple edges between any pair of vertices. Cut: A set of edges from a graph G,whose removal from G results in G being broken into two or more components. Min-Cut: A cut with minimum cardinality. Let G be an undirected multigraph with n vertices. The problem is how to find the Min-cut of G.

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

  20. Example G regular Cut Min-Cut

  21. Random Algorithm for Min-Cut • While number of nodes in G is more than 2 • 1.1. Choose a random edge. • 1.2. Merge the 2 nodes connected by that edge. • 2. MinCut  edges that connect the 2 remaining vertices. Notice that these edges are actually all the edges connecting nodes contracted to one of the remaining nodes with nodes contracted to the other remaining node.

  22. Example Iteration 1: Iteration 2: G 2 1 1 2 4 3 ,43 5 5

  23. Example(cont.) Iteration 3: Iteration 4: Result: 1,2 G 2 ,431,2, 1 4 3 5 ,43 Result: all the edges connecting 5 with 1,2,3,4 5 5

  24. Min-Cut algorithm analysis When will this algorithm return the Min-Cut? Let k be the Min-Cut size. Let C be a particular Min-Cut with k edges. The algorithm will return the Min-Cut if it never merges nodes connected by an edge from C. The probability that the algorithm will return the Min-Cut is bounded from below by the probability that in each iteration it chooses an edge not from the C.

  25. הסבר • נניח כי יש MinCut יחיד. • אזי כדי שהאלגוריתם יחזיר אותו, כל הקשתות שב-MinCut הזה חייבות להשאר עד השלב האחרון באלגוריתם. • ז"א אסור שהאלגוריתם יבחר ל"אחד" קשת (ז"א לאחד את הקודקודים שבקצוותיה) שב-MinCut , כדי שהקשת הזו תשאר לשלב הסופי של האלגוריתם.

  26. Analysis(cont.) • The probability of picking at each iteration an edge from C is , where |E| is the number of edges still in G. • There’s no vertex with degree less than k, or else cutting it would give a cut less than k. • Since the graph is connected, then • The probability of choosing an edge from C in iteration i is bound from below by:

  27. הסבר • ההסתברות לבחור קשת מ-C היא מספר הקשתות בגרף לחלק למספר הקשתות ב-C: • אם היה קודקוד בגרף עם דרגה קטנה מ-k – ז"א שיוצאות ממנו פחות מ-k קשתות – אז ה-MinCut היה כל הקשתות היוצאות מקודקוד זה – וע"י כך לנתק אותו מהגרף ליצור גרף לא קשיר. • הגרף קשיר והדרגה המינימלית היא k, לכן יש לפחות קשתות, כי המצב שבו יהיו הכי מעט קשתות הוא שכל הקשתות מחברות בין קודקודים שונים (בלי קשת מקודקוד לעצמו) ודרגת כל קודקוד היא בדיוק k. • בכל שלב באלגוריתם יש קודקוד פחות ("מצטמצם" לשכנו).

  28. Conditional Probabilities • For events e1 , e2 ,.., ek. • Pr[ej | ei] is the conditional probability, which means the probability that ej will happen given that ei happened.

  29. Probability Analysis • ei = the probability of not choosing an edge from C in iteration i. • The probability of not choosing an edge from C in iteration i is: • The probability of not choosing an edge from C at all is:

  30. הסבר • ההסתברות שהאלגוריתם ימצא את ה-MinCut גדול מההסתברות שהאלגותרים לא יבחר ב n-2 השלבים שלו (מצמצמים את הגרף עד שנשארים 2 ולכן יש n-2 שלבים) שום קודקוד מ-C. • במילים אחרות, זה ההסתברות שהאלגורתים לא יבחר בשלב 1 קשת מ-C , וגם שלא יבחר בשלב 2, וגם ... עד שלב n-2. • ז"א זה ההסתברות לחיתוך של המאורעות של אי-בחירת קשת מ-C בשלב i , כאשר i1,2,3,..,n-2=.

  31. Improving the lower bound • The probability that the algorithm will not find the Min-Cut is: • To improve this probability we repeat the algorithm • times, making independent random choices each time. • Thus, the probability that the algorithm will not find the Min-Cut is reduced to 1/e:

  32. הסבר • ההסתברות שע"י ריצה אחת של האלגוריתם לא נמצא את ה-MinCut קטנה מ- . • זהו חסם גדול מדי, כי ייתכן שבהסתברות גבוהה לא נמצא פתרון נכון. • לכן נריץ את האלגוריתם פעמים ונקבל הסתברות לטעות קטנה מ 1/e .

  33. Pattern Matching with swaps • The problem is finding all locations in a given text of size n, where a given pattern of length m match. • A pattern is said to match the text at a given location l, if adjacent text characters can be swapped, if necessary, to make the substring of the text starting at location l, identical to the pattern. • All swaps are constraint to be disjoint, i.e. each character is involved in at most one swap. A B A B C A D B A B D A Text: B A C Pattern:

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

  35. Problem Reduction • First we will solve the problem for |S| = 2. • ( without loss of generality, let S={a,b} ) • Then we will create a set of coding, C, such that each coding will keep: • And, finally use this code and solve the problem for larger sizes of S.

  36. הסבר • נראה אלגוריתם המוצא את ה -swap matches עבור א"ב עם רק שתי תווים. • לאחר מכן ניתן ליצור מספיק קידודים שונים שמקודדים את א"ב כלשהו לא"ב עם 2 תווים, כך שעבור כל 3 קידודים יש תו המקודד באופן זהה עבור 2 קידודים אך שונה בקידוד השלישי. (יש אלגוריתם דטרמיניסטי המוצא מספיק קידודים כאלו). • עבור כל קידוד של הטקסט והתבנית נמצא את ה-swap matches בעזרת האלגורתים הנ"ל, ונאחד את התוצאות.

  37. Swap Matching for |S|=2 • Partition the text and pattern into maximal streams. • A stream is an alternating substring, i.e., no two consecutive characters in a stream are identical. • Notice that the character following a maximal stream is the same as the last character in that stream. • The character preceding a maximal stream is the same as the first character in that stream. a b a a b b a b a b a a Text:

  38. הסבר • Stream – רצף , הוא רצף של תווים מתחלפים • חלוקה לרצפים באורכים מקסימליים תגרום לכך שמתחילים רצף חדש רק כאשר תו תו מופיע פעמיים ברציפות.

  39. Lemma 1 The pattern matches in a particular alignment if and only if one of following holds for each stream A in the text and each stream B. • The overlap between A and B has even length. • The overlap between A and B has odd length, and the portion of B overlapping A matches exactly (without swaps). • The overlap between A and B has odd length, and either B is the leftmost stream in the pattern and A extends further to the left, or B is the rightmost stream in the pattern and A extends further to the right of B.

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

  41. Examples: b a b a b a A: I B: a b a b a b b a b a b a A: I I B: a b a b a b b a b a b a A: I I I B: b a b a b a

  42. Divide and Conquer • We will show next how to find all matches of the pattern beginning at odd location in the text. Finding the matches beginning at even location will be found similarly. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 b a a b a b b b a b a a a b Text: a b b Pattern: Odd path: Will find matches in odd locations.(3,5,7) Even path:Will find matches in even locations.(0,2,4)

  43. Even & Odd streams • A stream is called odd if the a’s in it occur at odd locations (indexes). • A stream is called even if the a’s in it occur at even locations. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 b a a b a b b b a b a a a b odd even odd even odd even

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

  45. Even & Odd stream (cont.) Definitions:

  46. Example 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Text: b a a b a b b b a b a a a b todd: 1 1 0 0 0 0 1 0 0 0 0 1 0 0 teven: 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 2 3 4 5 6 7 8 a b b a b a b b a Pattern: podd: 0 0 1 -1 1 -1 1 0 0 peven: 1 -1 0 0 0 0 0 1 -1

  47. Dot product The dot product of the text and the pattern is polynomial multiplication of the text and the pattern ordered backwards.

  48. הסבר • שימוש בכפל פולינומי ב-pattern matching הוא אסטרטגיה נפוצה. • יש לשם לב שהמספר במקום ה-m בתוצאה הוא למעשה "כפל" של התבנית בטקסט במקום ה-1 בטקסט. • באופן כללי המספר במקום ה- m+i בתוצאה הוא למעשה "כפל" של התבנית בטקסט במקום ה-i בטקסט.

  49. Odd-Even pair For any odd placement of the pattern in the text any overlapping streams, A in the text and B in the pattern, the dot product of the todd and peven which corresponds to the overlap of the streams A and B is: • 0, if either A is an even stream or B is an odd stream. • 0, if the overlap has even length, then j = 0. • if the overlap has odd length, A is an odd stream, and B is an even stream.

  50. Even-Odd pair For any odd placement of the pattern in the text any overlapping streams, A in the text and B in the pattern, the dot product of the teven and podd which corresponds to the overlap of the streams A and B is: • 0, if either A is an odd stream or B is an even stream. • 0, if the overlap has even length, then j = 0. • if the overlap has odd length, A is an even stream, and B is an odd stream.

More Related