1 / 16

אלגוריתמים עם מספרים טבעיים

c = 0 for j = 0 … n sum(j) = A(j) + B(j) + c if sum(j) > 1 sum(j) = sum(j)-2 c = 1 else c = 0. קלט: מספרים טבעיים A, B. פלט : A+B , A-B , A*B, A/B( חלק שלם ושארית ). הערה : הקלט/פלט הינו כמערך של ביטים. זמן ריצה פולינומיאלי באןרך הקלט !.

eshe
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. c = 0 for j = 0 … n sum(j) = A(j) + B(j) + c if sum(j) > 1 sum(j) = sum(j)-2 c = 1 else c = 0 קלט: מספרים טבעייםA, B. פלט:A+B, A-B, A*B, A/B(חלק שלם ושארית). הערה:הקלט/פלטהינו כמערך של ביטים. זמן ריצהפולינומיאלי באןרךהקלט! אלגוריתמים עם מספרים טבעיים

  2. A*B: Pl = Al*Bl Ph = Ah*Bh T = (Al + Ah) * (Bl + Bh) Pm = T - Pl - Ph retrun Pl + (Pm << n/2) + + (Ph << n) T(n) = 3T(n/2)+O(n) = O(n^1.59..) Ah Al Bh Bl |----|----| * |----|----| = |--------| Al*Bl + |--------| Al*Bh + |--------| Ah*Bl + |--------| Ah*Bh אלגוריתם מהיר לכפל

  3. GCD(A,B): if A<B swap(A,B) if B=0 return A C = A mod B return GCD(B, C) קלט: A, B פלט: מחלק משותף מקסימאליK. תזכורת:GCD(A,B) = K אםם: (1) K|A, K|B (2) L|A, L|B ==> L|K מחלק משותף מקסימאלי

  4. EGCD(A,B): if A<B swap(A,B) if B=0 return (1,0) //GCD=A C = A mod B D = A div B // C+DB=A (K,L)=EGCD(C,B) Return (K, L-DK) למה: קיימים שלמיםK,L כך ש: KA+LB=GCD(A,B) בעית ממממ (EGCD): קלט:A,B פלט:K,L ממממורחב

  5. power(A,B): if B=0 return 1 C = power(A, B>>1) if B[0]=0 // B even return C*C else retrun C*C*A קלט:A, B פלט:A בחזקתB הערה: אורך התוצאה הוא בערךnB=n*2^n. זמן ריצה: פעולות כפל פעולות ביטים 2^O(n) O(n) חישוב חזקות

  6. אם (A/B mod N)מוגדר אזי הוא ניתן לחישוב ע”י (K,L)=EGCD(B,N) A/B=(AK) (mod N) (A^B mod N) ניתן לחישוב יעיל ע”י האלגוריתם הקודם (תוך לקיחת שארית כל שלב). הגדרה:חוג השארית ZN = (0,1, … , N-1) חבור וכפל מוגדריםמודולוN. חילוקA/B מוגדראםם GCD(B,N)|A N ראשוני ==> ZN שדה. קל לחשב: חיבור, חיסור, כפל חשבון בחוגי שארית

  7. משפט המספרים הראשוניים: מספר הראשוניים הקטנים מ-N הינו “בערך” N/(ln N) למה: אםp, q ראשוניים p|N, q|N ==> pq | N תזכורת: מספרים ראשוניים

  8. אלגוריתם הסתברותי בחר ראשוני מקריP מתוך כל הראשוניים הקטנים מ-M (M=10^1000*N*n^2) חשב, מודולוP, את X=A^N, Y=B^N, Z=C^N בדוק האם X + Y = Z (mod P) ענה זאת כתשובה השערה: (עבור טבעיים) A^N+B^N=C^N ==> N=2 בעיה אלגוריתמית קלט:A, B, C, N פלט:האםA^N+B^N=C^N ? (כיום ההשערה היא כבר משפט -- אבל נניח שאיננו יודעים זאת) השערת פרמה

  9. הוכחת 2: נסמן R = A^N + B^N - C^N מספר הראשוניים המחלקים אתR הינולכל היותר log_2 R < Nn מספר הראשוניים הקטנים מ-M הינו בערך M/lnM > Nn*10^999 משפט: (1) אם A^N+ B^N=C^N אזי האלגוריתם עונה “כן” (2) אם A^N + B^N <> C^N אזי ההסתברות שהאלגוריתם עונה “כן” < 999-^10 נכונות האלגוריתם

  10. בעיתהמחשב על הירח בעיה:X=Y ? Apollo Computer 1G bit disk 1K bit/sec channel Y X Base station computer original 1G bit disk

  11. כמעט משפט: לכל מספר פריקN קייםX<N וזר ל-N כך ש: X^(N-1) <> 1 (mod N) מסקנה: לפחות מחצית מן הטבעייםX הקטנים מ-N מקיימים X^(N-1) <> 1 (mod N) משפט: לכל ראשוניP וטבעיX<P, מתקיים: X^(P-1) = 1 (mod P) דוגמה:P=7 : 2^6 = 64 = 1 (mod 7) : P=6 2^5 = 32 = 2 (mod 6) משפט פרמה (הקטן)

  12. repeat 1000 times x = random(1….N-1) y = x^(N-1) mod N if y=1 return “not prime” return “prime” קלט: מספר טבעיN פלט: האםN ראשוני? משפט: (1) אםN ראשוני אזי האלגוריתם יחזיר “ראשוני” (2) אםN פריק אזי הסתברות שהאלגוריתם יחזיר “ראשוני” הינה < 1000-^2. בדיקת ראשוניות

  13. repeat p = random(1…N-1) if Prime(p) return(p) קלט:N פלט: מספר ראשוני מקרי הקטן מ-N למה: תוחלת מספר הלולאות עד למציאת ראשוניהינה: O(n) בחירת מספר ראשוני מקרי

  14. משפט: אםP ראשוני אזי x^2=1 (mod P) ==> x=1 or x=P-1 כמעט משפט 2:אםN פריק אזי קייםx אחר כך ש: x^2 =1 (mod P) דוגמה: 307^2 =1 (mod 561) עובדה עצובה: 561 אינו ראשוני אבל לכלX<561 X^560 =1 (mod 561) משפט נכון: לכלN פריק מתקיים או “כמעט משפט 1” או “כמעט משפט 2”. תיקון ה”כמעט משפט”

  15. הצפנתRSA בחרN=PQ (כאשרP, Q ראשוניים). ספר לעולם אתN אך שמור אתP, Q בסוד. קבעe=17. X יוצפןע”י: (X^e) mod N פענוח קשה למי שאינו יודע אתP, Q פרוק לגורמים קלט:N פלט: פרוק שלN לגורמים ראשוניים הוצאת שורשמודולוN קלט:N, Y, e פלט:X כך ש: X^e = Y (mod N) (עבור ... e= 2, 3,17 ) בעיות חישוב קשות

  16. מסקנה: אם d = 1/ e (mod ) אזי (X^ e)^d = X (mod N) למה: אםN=PQ ו- =(P-1)(Q-1) אזי X^ = 1 (mod N) הוצאת שרש בהינתןP,Q

More Related