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

Post on 20-Dec-2015

238 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

אלגוריתם ב'

אם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

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

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

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

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

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

אלגוריתם א'

אם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

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

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

אלגוריתם א':

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

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

אלגוריתם ב'

אם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

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

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

אלגוריתם א':

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

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

אלגוריתם ב':

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

2.666בממוצע:

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

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

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

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

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

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

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

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

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

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

אלגוריתמים?

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

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

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

1חזור ל-3.

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

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

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

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

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

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

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

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

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

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

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

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

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

.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 + …

.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

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

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

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

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

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

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

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

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

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

32 23)( nnnT nnnT 35)(

)()( 3nOnT

n2 25n23n

1000

3000

2000

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

n100

דוגמא

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

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

ספרות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מספר בן ספרות

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

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

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

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

גדול

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

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

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

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

))(()( ngOnf

cg)n(

f)n(

n0

))(()( ngnf

f)n(

cg)n(

n0

))(()( ngnf

f)n(c2g)n(

c1g)n(

n0

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

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

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

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(

top related