data structures and algorithms introduction to complexity gal a. kaminka computer science department

28
Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

Post on 20-Dec-2015

234 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

Data Structures and Algorithms

Introduction to Complexity

Gal A. Kaminka

Computer Science Department

Page 2: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

בעיה פשוטה במיוחד

סדר שלושה מספרים לפי סדר מונוטוני עולה

יש למישהו רעיון?

Page 3: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

אלגוריתם א'

אםA-גדול מ B -ו ,B-גדול מ C אז הדפס ,A,B,C אםA-גדול מ C -ו ,C-גדול מ B אז הדפס ,A,C,B אםB-גדול מ A-ו ,A-גדול מ C אז הדפס ,B,A,C אםB-גדול מ C-ו ,C-גדול מ A אז הדפס ,B,C,A אםC-גדול מ A-ו ,A-גדול מ B אז הדפס ,C,A,B אםC-גדול מ B-ו ,B-גדול מ A אז הדפס ,C,B,A

Page 4: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

אלגוריתם ב'

אםA-גדול מ B אםB-גדול מ C הדפס ,A,B,C אחרת, אםA-גדול מ C הדפס A,C,B אחרת, הדפסC,A,B

אחרת אםC-גדול מ B הדפס ,C,B,A אחרת, אםA-גדול מ C הדפס B,A,C אחרת, הדפסB,C,A

Page 5: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

איזה פתרון יותר טוב?

?נריץ בראש על כמה מספרים ונבדוק שעובד?נראה בכמה משתנים כל אלגוריתם משתמש?ננסה על מספר מחשבים

-יוסי יבדוק את אלגוריתם א' על הMacintoshשלו -יונית תבדוק את אלגוריתם ב' על הPentiumבמעבדה

Page 6: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

השוואת אלגוריתמים

היחידה הבסיסית )במקרה זה(: השוואה בין שני מספריםככל שיש יותר השוואות, לוקח יותר זמן להגיע לתשובה

Page 7: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

אלגוריתם א'

אםA-גדול מ B -ו ,B-גדול מ C אז הדפס ,A,B,C אםA-גדול מ C -ו ,C-גדול מ B אז הדפס ,A,C,B אםB-גדול מ A-ו ,A-גדול מ C אז הדפס ,B,A,C אםB-גדול מ C-ו ,C-גדול מ A אז הדפס ,B,C,A אםC-גדול מ A-ו ,A-גדול מ B אז הדפס ,C,A,B אםC-גדול מ B-ו ,B-גדול מ A אז הדפס ,C,B,A

Page 8: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

השוואת אלגוריתמים

היחידה הבסיסית )במקרה זה(: השוואה בין שני מספריםככל שיש יותר השוואות, לוקח יותר זמן להגיע לתשובה

אלגוריתם א':

10 במקרה הרע: 2במקרה הטוב:

!(6 )לא 1665.בממוצע:

Page 9: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

אלגוריתם ב'

אםA-גדול מ B אםB-גדול מ C הדפס ,A,B,C אחרת, אםA-גדול מ C הדפס A,C,B אחרת, הדפסC,A,B

אחרת אםC-גדול מ B הדפס ,C,B,A אחרת, אםA-גדול מ C הדפס B,A,C אחרת, הדפסB,C,A

Page 10: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

השוואת אלגוריתמים

היחידה הבסיסית )במקרה זה(: השוואה בין שני מספריםככל שיש יותר השוואות, לוקח יותר זמן להגיע לתשובה

אלגוריתם א':

10 במקרה הרע: 2במקרה הטוב:

!(6 )לא 5.166בממוצע:

אלגוריתם ב':

3 במקרה הרע: 2במקרה הטוב:

2.666בממוצע:

Page 11: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

מה תלמדו בקורס זה?

)מבני נתונים נבחרים )ואלגוריתמים לטיפול בהםשימושיים במגוון גדול מאד של אפליקציות וחישובים

התאמת אלגוריתמים ומבני נתונים לדרישותהאפליקציה

אלגוריתמים שימושיים נבחרים ותכונותיהםלנתח אלגוריתמים ולהבין את הסיבוכיות שלהם

זמן ריצה ודרישות זיכרוןטכניקות לתכנון אלגוריתמים

Page 12: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

אלגוריתמים כבסיס לתוכנה

?מהו אלגוריתםסידרה סופית של פעולות לביצוע הפותרות בעיה אלגוריתמית

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

אלגוריתם מתאר בבהירות תהליך:

הופך קלט חוקי לפלט חוקי ומסיים.

Page 13: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

אלגוריתמים?

ברמזור הבא פני ימינה ואז תמשיך שלושה-ארבעה ק"מ.ברמזור הבא פנה ימינה ואז אתה כבר באזור. תשאל שם .קח שלוש כפיות סוכר. ערבב בתוך כוס מים רותחים.מיין את רשימת המספרים. הדפס את האיבר הראשון:בצע

.5 ל-3בחר רנדומלית מספר בין 1.

1, הדפס "יש", אחרת חזור ל-4אם המספר גדול מ-2.

1חזור ל-3.

Page 14: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

מדידת איכות של תוכנה

:איכות של תוכנית נמדדת במדדים שוניםקלות התחזוקה של התוכניתמודולריות ואפשרות השימוש בתוכנית למטרות שונותיעילות התוכנית בזמן ריצה ובשימוש בזיכרון

בקורס זה אנו מתמקדים במדדי יעילות( סיבוכיותהמטרה: ניתוח יעילות של אלגוריתמים)

לא להיות תלויים במדידות אמפיריות שלא מאפשרות השוואה שניות על מחשב פנטיום עם 1.3כגון: "התוכנה סיימה בתוך

MB256"זיכרון פנימי

Page 15: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

(Complexity)ניתוח סיבוכיות

זיכרון וזמן ריצהWorst CaseAverage Case

Best Case:פונקציה של

גודל הקלט בביטים, במספר המרכיבים )לדוגמאבמיון(, ...

מודל המחשוב: מעבד מרכזי, זיכרון מרכזי מסוגRAM....,מחיר פעולה בסיסית: השוואה, חישוב אריתמטי

Page 16: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

חישוב יעיל-נסמן את זמן הריצה של אלגוריתם בT)n( ואת

)S)nהזיכרון הנדרש ב-Nהינו גודל הקלט

לדוגמא: בעיית חיפוש מספר במערך קלט: מערךA בגודל nמספר ; המכיל מספרים k לחיפוש פלט: אםk-נמצא במקום ה i החזר ,i אחרת החזר ,Nil.

Page 17: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

.1חיפוש איבר במערך For i1 to n

2. If A[i] = k

3. return i

4. return Nil

Best Case: When k = A[1], search is over as soon as begun T)n( = C )C is a constant(

C = time to do i1 +

time to compare to n +

time to compare to k + …

Page 18: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

.1חיפוש איבר במערך For i1 to n

2. If A[i] = k

3. return i

4. return Nil

Worst Case: When k not in A[], search goes through entire list T)n( = C+C+C+…. +C

n times

= C*n

Page 19: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

חיפוש איבר במערך

1. For i1 to n

2. If A[i] = k

3. return i

4. return Nil

Average Case: Let Ti be the time it takes to find k when in A[i] Suppose k can be in any place i, or outside of A[]

With uniform distribution T)n( = )T1+T2+T3+ …. Tn( / n

= 22

)1(

2

)1(11

11

CCn

n

nCnnn

n

CCi

nT

n

n

i

n

ii

Page 20: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

פונקציות אסימפטוטיות

:דוגמה( עכשיו יש לנו זמני ריצה נתונים בקבועיםc)הקבועים ישתנו בין מחשבים אז איך נוכל להשוות בין אלגוריתמים בעלי קבועים שונים

שונות?)T)nאו פונקציות :לצורך כך אנו משתמשים בפונקציות אסימפטוטיות

O או-גדול( Big-O) אומגה-גדול(Big-Omega) טתה- גדול(Big-Theta)

פונקציות אסימפטוטיות מאפיינות סדר גודל – התנהגותהפונקציה כשגודל הקלט עולה

Page 21: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

Big – O: חסם עליון

Definition:

if there exists constants c>0 and n0 such that for all n>n0,

In other words, g(n) bounds f(n) from above )for large n’s( up to a constant.

Examples:

))(()( ngOnf )()( ngcnf

why?)()()5

)()4

)(39010000)3

)(50000000005.0)2

)1(1000000)1

2

2

5000000

nOn

nOn

nOn

nOn

O

בתודה למתרגל אלמוני באוניברסיטה העברית על השקופית

Page 22: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

32 23)( nnnT nnnT 35)(

)()( 3nOnT

n2 25n23n

1000

3000

2000

משמעות סדרי גודל:

n100

דוגמא

שימו לבבתודה למרצה באוניברסיטת תל אביב על השקופית

Page 23: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

השוואת סדרי גודל

ספרות24מספר השניות מאז המפץ הגדול -- מספר בן ספרות80מספר הפרוטונים ביקום – מספר בן

בתודה לד"ר מירב חדד וראובן קאשי

10 100 1000

1 1 1 1

log10 n 1 2 3

n 10 100 1000

n2 100 10000 106

2n 1024 302מספר בן ספרות31מספר בן ספרות

n! 36x106 161מספר בן ספרות

מספר גדול באמת

Page 24: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

למה משתמשים במדדים ?אסימפטוטיים

כיון שהם לא משתנים גם אם המחשבים נעשיםמהירים יותר, או שפת התכנות משתפרת

מסתירים את הקבועים המאפיינים מחשב מסויים מבליטים את אופן התנהגות האלגוריתם בקלט

גדול

Page 25: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

Big – Omega חסם תחתון:

Definition:

if there exists constants c>0 and n0 such that for all n>n0,

In other words, g(n) bounds f(n) from below )for large n’s( up to a constant.

Examples:

))(()( ngnf )()( ngcnf

)()4

)()3

)(10000)2

)(5.0)1

2

2

nn

nn

nn

nn

בתודה למתרגל אלמוני באוניברסיטה העברית על השקופית

Page 26: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

Big – Theta: חסם עליון ותחתון

Definition: if:

and

In other words, g(n) is a tight estimate of f(n) )in asymptotic terms(.

Examples:

))(()( ngnf

)()3

)()2

)(5.0)1

2

2

nn

nn

nn

))(()( ngnf

))(()( ngOnf

בתודה למתרגל אלמוני באוניברסיטה העברית על השקופית

Page 27: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

))(()( ngOnf

cg)n(

f)n(

n0

))(()( ngnf

f)n(

cg)n(

n0

))(()( ngnf

f)n(c2g)n(

c1g)n(

n0

ציור מדדי סיבוכיות

בתודה למרצה באוניברסיטת תל אביב על השקופית

Page 28: Data Structures and Algorithms Introduction to Complexity Gal A. Kaminka Computer Science Department

חיפוש איבר במערך

1. For i1 to n

2. If A[i] = k

3. return i

4. return Nil

Best Case: Tbest)n( = C = O)1(

Worst Case: Tworst)n( = n*C = O)n(

Average Case: Taverage)n( <= C)n+C(/2 = O)n(