C = 0
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

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


  • 111 Views
  • Uploaded on
  • Presentation posted in: General

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( חלק שלם ושארית ). הערה : הקלט/פלט הינו כמערך של ביטים. זמן ריצה פולינומיאלי באןרך הקלט !.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3682712

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(חלק שלם ושארית).

הערה:הקלט/פלטהינו כמערך של ביטים. זמן ריצהפולינומיאלי באןרךהקלט!

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


3682712

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

אלגוריתם מהיר לכפל


3682712

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

מחלק משותף מקסימאלי


3682712

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

ממממורחב


3682712

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)

חישוב חזקות


3682712

אם (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 שדה.

קל לחשב: חיבור, חיסור, כפל

חשבון בחוגי שארית


3682712

משפט המספרים הראשוניים: מספר הראשוניים הקטנים מ-N הינו “בערך”

N/(ln N)

למה: אםp, q ראשוניים

p|N, q|N ==> pq | N

תזכורת: מספרים ראשוניים


3682712

אלגוריתם הסתברותי

בחר ראשוני מקרי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 ?

(כיום ההשערה היא כבר משפט -- אבל נניח שאיננו יודעים זאת)

השערת פרמה


3682712

הוכחת 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

נכונות האלגוריתם


3682712

בעיתהמחשב על הירח

בעיה:X=Y ?

Apollo Computer

1G bit disk

1K bit/sec channel

Y

X

Base station computer

original 1G bit disk


3682712

כמעט משפט: לכל מספר פריק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)

משפט פרמה (הקטן)


3682712

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.

בדיקת ראשוניות


3682712

repeat

p = random(1…N-1)

if Prime(p)

return(p)

קלט:N

פלט: מספר ראשוני מקרי הקטן מ-N

למה: תוחלת מספר הלולאות עד למציאת ראשוניהינה:

O(n)

בחירת מספר ראשוני מקרי


3682712

משפט: אם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”.

תיקון ה”כמעט משפט”


3682712

הצפנת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 )

בעיות חישוב קשות


3682712

מסקנה: אם

d = 1/ e (mod )

אזי

(X^ e)^d = X (mod N)

למה: אםN=PQ ו-

=(P-1)(Q-1)

אזי

X^ = 1 (mod N)

הוצאת שרש בהינתןP,Q


  • Login