1 / 26

אלגוריתם שטראסן

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

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. אלגוריתם שטראסן רוני גליקמן 65740334

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

  3. הכפלה בסיסית של מטריצות נניח שברצוננו לכפול שתי מטריצות בגודל N x N : . . . . . a1,1 a1,2 b1,1 b1,2 . . c1,1 c1,2 c1,n a1,n b1,n a2,1 a2,2 b2,1 c2,1 b2,2 c2,2 : . : . . : : . : . . : an,1 bn,n cn,1 cn,n an,n bn,1 c1,1 = ( a1,1 x b1,1 ) + ( a1,2 x b2,1 ) + . . . + ( a1,n x bn,1 ) c1,2 = ( a1,1 x b1,2 ) + ( a1,2 x b2,2 ) + . . . + ( a1,n x bn,2 ) : : cn,n = ( an,1 x b1,n ) + ( an,2 x b2,n ) + . . . + ( an,n x bn,n ) אלגוריתם שטראסן

  4. הכפלה בסיסית של מטריצות נניח שברצוננו לכפול שתי מטריצות בגודל N x N : . . . . . a1,1 a1,2 b1,1 b1,2 . . c1,1 c1,2 c1,n a1,n b1,n a2,1 a2,2 b2,1 c2,1 b2,2 c2,2 : . : . . : : . : . . : an,1 bn,n cn,1 cn,n an,n bn,1 נוסחא לחישוב: זמן ריצה: אלגוריתם שטראסן

  5. הכפלת מטריצות (הפרד ומשול) A0 A1 B0 B1 (A0xB0)+(A1xB2) (A0xB1)+(A1xB3) A3 B3 A2 B2 (A2xB0)+(A3xB2) (A2xB1)+(A3xB3) - נפריד את המטריצות שנרצה לכפול לתתי מטריצות : A0 , A1 , A2 . . . . - נשתמש במשוואות החישוב של הכפלת המטריצות - נכפול רקורסיבית את תתי המטריצות כשתנאי העצירה הוא n=1 . B0 A0 C0 a0 b0 a0 x b0 אלגוריתם שטראסן

  6. הכפלת מטריצות (הפרד ומשול) A0 A1 B0 B1 (A0xB0)+(A1xB2) (A0xB1)+(A1xB3) A3 B3 A2 B2 (A2xB0)+(A3xB2) (A2xB1)+(A3xB3) זמן ריצה: 8 לפי משפט אב התנאי 22 < 8 מתקיים ולכן: אלגוריתם שטראסן

  7. ואז הגיע וולקר שטראסן את האלגוריתם ניתן לראות כיישום של שיטת התכנון "הפרד ומשול" . שטראסן גילה גישה רקורסיבית שונה שבה דרושות רק 7 פעולות כפל רקורסיביות במקום 8 כפי שראינו מקודם, דבר הגורם לזמן ריצה קצר יותר. האלגוריתם אינו מעשי אלא אם כן מדובר במטריצות גדולות ( n בגודל 45 לפחות ) וצפופות ( מעט איברים השווים ל 0 ). -עבור מטריצות קטנות נשתמש בשיטה הישירה. -עבור מטריצות גדולות ודלילות קיימים אלגוריתמים מיוחדים שביצועיהם טובים יותר. לכן העניין באלגוריתם שטראסן הוא תיאורטי בעיקרו. אלגוריתם שטראסן

  8. שלב 1 מתוך 4 : חלק את מטריצות הקלט לתת מטריצות בגודל N/2 a1,1 a1,2 b1,1 a1,4 b1,4 a1,3 b1,3 b1,2 B0 B1 A1 A0 b2,1 b2,2 a2,1 a2,2 a2,3 a2,4 b2,3 b2,4 a3,1 a3,2 a3,4 a3,3 b3,1 b3,2 b3,4 b3,3 A2 B2 B3 A3 a4,1 b4,1 a4,2 a4,3 a4,4 b4,2 b4,3 b4,4 אלגוריתם שטראסן

  9. שלב 2 מתוך 4 : פעולות חיבור וחיסור, חשב 14 מטריצות בגודל באמצעות n/2 x n/2 A0 A1 B0 B1 A2 A3 B2 B3 S1 = A0 T1 = B1 - B3 S2 = A0 + A1 T2 = B3 S3 = A2 + A3 T3 = B0 S4 = A3 T4 = B2 – B0 S5 = A0 + A3 T5 = B0 + B3 S6 = A1 – A3 T6 = B2 + B3 S7 = A0 - A2 T7 = B0 + B1 אלגוריתם שטראסן

  10. שלב 3 מתוך 4 : חשב באופן רקורסיבי את 7 מכפלות המטריצות P1 = x ( ) S1 = A0 T1 = B1 - B3 P2 = ( ) x S2 = A0 + A1 T2 = B3 P3 = ( ) x S3 = A2 + A3 B0 T3 = P4 = x ( ) S4 = A3 T4 = B2 – B0 P5 = ( ) x ( ) S5 = A0 + A3 T5 = B0 + B3 P6 = ( ) x ( ) S5 = A1 - A3 T5 = B2 + B3 P7 = ( ) x ( ) S5 = A0 - A2 T5 = B0 + B1 אלגוריתם שטראסן

  11. חישוב מכפלות תתי המטריצות A0 A1 B0 B1 C0 C1 (A0B0)+(A1B2) (A0B1)+(A1B3) A2 A3 B2 B3 C2 C3 (A2B0)+(A3B2) (A2B1)+(A3B3) P1 = A0 B1 - A0 B3 נסמן ביטויים חיוניים P1 P2 C1 P2 = A0 B3 + A1 B3 + (A0B1) + (A1B3) = P3 = A2 B0 + A3 B0 P4 = A3 B2 - A3 B0 P5 = A0 B0 + A0 B3 + A3 B0 + A3 B3 P6 = A1 B2 + A1 B3 - A3 B2 - A3 B3 P7 = A0 B0 + A0 B1 - A2 B0 - A2 B1 אלגוריתם שטראסן

  12. חישוב מכפלות תתי המטריצות A0 A1 B0 B1 C0 C1 (A0B0)+(A1B2) (A0B1)+(A1B3) A2 A3 B2 B3 C2 C3 (A2B0)+(A3B2) (A2B1)+(A3B3) P1 = A0 B1 - A0 B3 נסמן ביטויים חיוניים P3 P4 C2 P2 = A0 B3 + A1 B3 + (A2B0) + (A3B2) = P3 = A2 B0 + A3 B0 P4 = A3 B2 - A3 B0 P5 = A0 B0 + A0 B3 + A3 B0 + A3 B3 P6 = A1 B2 + A1 B3 - A3 B2 - A3 B3 P7 = A0 B0 + A0 B1 - A2 B0 - A2 B1 אלגוריתם שטראסן

  13. חישוב מכפלות תתי המטריצות A0 A1 B0 B1 C0 C1 (A0B0)+(A1B2) (A0B1)+(A1B3) A2 A3 B2 B3 C2 C3 (A2B0)+(A3B2) (A2B1)+(A3B3) P1 = A0 B1 - A0 B3 נתבונן על הביטוי P5 + P4 – P2 + P6 נסמן ביטויים חיוניים P2 = A0 B3 + A1 B3 P3 = A2 B0 + A3 B0 + - - + = P4 = A3 B2 - A3 B0 P5 = A0 B0 + A0 B3 + A3 B0 + A3 B3 (A0B0) + (A1B2) P6 = A1 B2 + A1 B3 - A3 B2 - A3 B3 P7 = A0 B0 + A0 B1 - A2 B0 - A2 B1 אלגוריתם שטראסן

  14. חישוב מכפלות תתי המטריצות A0 A1 B0 B1 C0 C1 (A0B0)+(A1B2) (A0B1)+(A1B3) A2 A3 B2 B3 C2 C3 (A2B0)+(A3B2) (A2B1)+(A3B3) P1 = A0 B1 - A0 B3 נתבונן על הביטוי P5 + P1 – P3 - P7 נסמן ביטויים חיוניים P2 = A0 B3 + A1 B3 - P3 = A2 B0 + A3 B0 + - - + + = P4 = A3 B2 - - A3 B0 P5 = A0 B0 + A0 B3 + A3 B0 + A3 B3 (A2B1) + (A3B3) P6 = A1 B2 + A1 B3 - A3 B2 - A3 B3 P7 = A0 B0 + A0 B1 - A2 B0 - A2 B1 אלגוריתם שטראסן

  15. שלב 4 מתוך 4 : חשב את תת המטריצות המבוקשות C0 , C1 , C2 , C3 של מטריצת התוצאה ע"י חיבור ו / או חיסור של צירופים שונים של המטריצות Pi C0 C1 P1 + P2 P5 + P4 – P2 + P6 C2 C3 P3 + P4 P5 + P1 – P3 - P7 אלגוריתם שטראסן

  16. נוסחת הנסיגה של האלגוריתם האלגוריתם משתמש ב 7 הכפלות מטריצות רקורסיביות בגודל n/2 ובמספר פעולות חיבור וחיסור החסום לפי משפט אב התנאי 22 < 7 מתקיים ולכן: אלגוריתם שטראסן

  17. דוגמת הרצת אלגוריתם שטראסן 2 1 3 4 3 4 1 2 A1 A0 B0 B1 ? 4 2 3 5 2 2 3 4 1 2 1 2 4 3 2 1 A2 A3 B3 B2 3 3 2 4 5 4 3 3 נחלק את המטריצות לתת מטריצות בגודל 2x2 נחשב את 14 תתי המטריצות S,T אלגוריתם שטראסן

  18. נחשב את 7 המכפלות S x T נחשב את 14 המטריצות S,T 2 1 -1 1 S1 = A0 = P1 = T1 =B1 - B3 = 4 2 0 1 2 1 3 4 A1 A0 5 5 2 1 S2 =A0 +A1= T2 = B3 = 4 2 3 5 7 7 3 3 1 2 1 2 2 4 3 4 S3 =A2 +A3= T3 = B0 = A2 A3 5 7 2 2 3 3 2 4 1 -1 1 2 T4 =B2 – B0 = S4 = A3 = 3 2 2 4 3 4 1 2 3 3 5 5 S5 =A0 +A3= T5 =B0 + B3 = B0 B1 6 6 5 5 2 2 3 4 6 4 2 2 T6 =B2 + B3 = S6 =A1 -A3= 4 3 2 1 8 7 1 1 B3 B2 5 4 3 3 4 6 1 -1 T7 =B0 + B1 = S7 =A0 –A2= 5 6 1 -1 אלגוריתם שטראסן

  19. נחשב את 7 המטריצות S x T נחשב את 14 המטריצות S,T S1 = A0 = P1 = T1 =B1 - B3 = 0 0 2 S2 =A0 +A1= P2 = 3 T2 = B3 = 1 3 2 1 S3 =A2 +A3= T3 = B0 = 6 P3 = -1 -6 4 2 T4 =B2 – B0 = S4 = A3 = P4 = 1 2 2 -1 1 S5 =A0 +A3= T5 =B0 + B3 = P5 = 0 4 0 0 1 T6 =B2 + B3 = P6 = S6 =A1 -A3= 1 -1 -1 P7 = 0 T7 =B0 + B1 = S7 =A0 –A2= 0 -2 אלגוריתם שטראסן

  20. P5 + P4 – P2 + P6 0 + 2 – 3+ (-1) -2 P1 + P2 0 + 3 3 -1 1 2 1 0 1 4 2 (-6) + 2 P3 + P4 -4 P5 + P1 – P3 - P7 0 + 0 – (-6)- 0 6 P1 = 0 P2 = 3 P3 = -6 P4 = 2 P5 = 0 P6 = -1 P7 = 0 אלגוריתם שטראסן

  21. נחשב את 7 המכפלות S x T 2 1 -1 1 -2 3 P1 = 4 2 0 1 -4 6 2 1 3 4 A1 A0 2 1 5 5 S2 =A0 +A1= P2 = T2 = B3 = 4 2 3 5 3 3 7 7 1 2 1 2 2 4 3 4 S3 =A2 +A3= T3 = B0 = A2 A3 5 7 2 2 3 3 2 4 1 2 1 -1 T4 =B2 – B0 = S4 = A3 = 2 4 3 2 3 4 1 2 3 3 5 5 S5 =A0 +A3= T5 =B0 + B3 = B0 B1 6 6 5 5 2 2 3 4 2 2 6 4 T6 =B2 + B3 = S6 =A1 -A3= 4 3 2 1 1 1 8 7 B3 B2 5 4 3 3 1 -1 4 6 T7 =B0 + B1 = S7 =A0 –A2= 1 -1 5 6 אלגוריתם שטראסן

  22. נחשב את 7 המטריצות S x T נחשב את 14 המטריצות S,T S1 = A0 = P1 = T1 =B1 - B3 = -2 -10 5 S2 =A0 +A1= P2 = 10 T2 = B3 = 3 30 5 5 S3 =A2 +A3= P3 = T3 = B0 = 14 2 28 7 7 T4 =B2 – B0 = S4 = A3 = P4 = 1 7 7 2 1 S5 =A0 +A3= T5 =B0 + B3 = P5 = 5 12 60 3 3 T6 =B2 + B3 = P6 = S6 =A1 -A3= 6 -2 -12 P7 = -6 T7 =B0 + B1 = S7 =A0 –A2= 3 -2 אלגוריתם שטראסן

  23. 60 + 7 – 30+ (-12) P5 + P4 – P2 + P6 25 -10 + 30 P1 + P2 20 2 1 5 5 3 3 7 7 28 + 7 P3 + P4 35 P5 + P1 – P3 - P7 60 + (-10) – 28– (-6) 28 P1 = -10 P2 = 30 P3 = 28 P4 = 7 P5 = 60 P6 = -12 P7 = -6 אלגוריתם שטראסן

  24. נחשב את 7 המכפלות S x T 2 1 -1 1 -2 3 P1 = 4 2 0 1 -4 6 2 1 3 4 A1 A0 2 1 5 5 25 20 P2 = 4 2 3 5 3 3 7 7 35 28 1 2 1 2 2 4 14 16 3 4 S3 =A2 +A3= P3 = T3 = B0 = A2 A3 5 7 29 34 2 2 3 3 2 4 1 2 1 -1 T4 =B2 – B0 = 7 3 S4 = A3 = P4 = 2 4 3 14 2 6 3 4 1 2 3 3 30 30 5 5 S5 =A0 +A3= P5 = T5 =B0 + B3 = B0 B1 6 6 60 60 5 5 2 2 3 4 2 2 28 22 6 4 P6 = T6 =B2 + B3 = S6 =A1 -A3= 4 3 2 1 1 1 14 11 8 7 B3 B2 5 4 3 3 1 -1 4 6 P7 = T7 =B0 + B1 = -1 0 S7 =A0 –A2= 1 -1 5 6 -1 0 אלגוריתם שטראסן

  25. P1 P2 P3 P4 P5 P6 P7 -2 3 25 20 14 16 7 3 30 30 28 22 -1 0 -4 6 35 28 29 34 14 6 60 60 14 11 -1 0 2 1 3 4 3 4 1 2 4 2 3 5 2 2 3 4 1 2 1 2 4 3 2 1 3 3 2 4 5 4 3 3 -2 3 25 20 30 30 7 3 23 23 25 20 + - 40 35 28 22 + + P5 + P4 – P2 + P6 P1 + P2 -4 6 35 28 60 60 14 6 31 34 35 28 53 49 14 11 7 3 14 16 21 19 + 30 30 14 16 -2 3 -1 0 15 17 - P3 + P4 - + P5 + P1 – P3 - P7 14 6 29 34 43 40 60 60 29 34 -1 0 -4 6 28 32 אלגוריתם שטראסן

  26. וולקר שטראסן שאלות ? Mail: Oskar-Pletsch-Strassen D-01324 Dresden Telephone: ++49 351 2666942 Fax: ++49 351 2666664 E-Mail: volker.strassen@t-online.de אלגוריתם שטראסן

More Related