Download - 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
בעיה פשוטה במיוחד
סדר שלושה מספרים לפי סדר מונוטוני עולה
יש למישהו רעיון?
אלגוריתם א'
אם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(