תוכן העניינים הקדמה שיטה כללית לכתיבת תוכנית יעילות של תוכנית (סיבוכיות) מדדי סיבוכיות נוספים משוואת נסיגה Recurrences - - Substitution הצבה איטרציה The Master Method 1
Download
Report
Transcript תוכן העניינים הקדמה שיטה כללית לכתיבת תוכנית יעילות של תוכנית (סיבוכיות) מדדי סיבוכיות נוספים משוואת נסיגה Recurrences - - Substitution הצבה איטרציה The Master Method 1
תוכן העניינים
הקדמה
שיטה כללית לכתיבת תוכנית
יעילות של תוכנית (סיבוכיות)
מדדי סיבוכיות נוספים
משוואת נסיגה Recurrences -
- Substitutionהצבה
איטרציה
The Master Method
1
שפה-כתיבת הפתרון בפסאודו
Procedure greedy (var G:GRAPH;
var newclr:SET)
{greedy assigns to newclr a set of vertices
that may be given the same color}
begin
(1) newclr :=
(2) for each uncolored vertex v of G do
(3)
if v is not adjacent to any vertex in
newclr then begin
(4)
mark v colored
(5)
add v to newclr
end;
end;
end; {greedy}
2
Data Structures, CS, TAU - 2.2
עידון האלגוריתם להשגת תוכנית
.)3 מציאה אם צומת שכן (שורה:דוגמא
(if v is not adjacent to any vertex in newclr then begin)
(3.1) found := false;
(3.2) for each vertex W in newclr do
(3.3)
(3.4)
if there is an edge between V and W in G then
found := true;
(3.5) if found = false then begin
(4)
.
. (5)
.
.
.
3
Data Structures, CS, TAU - 2.1
שיטה כללית לכתיבת תוכנית
מבנה נתונים
מבנה נתונים מופשט
מודל מתמטי
תכנית ( C,
(…C++, Java,
תכנית בפסאודו-שפה
אלגוריתם לא פורמלי
מבנה נתונים מופשט = * Abstract Data Type-ADT
= מודל מתמטי עם אוסף הפעולות
דוגמא :השלמים עם פעולות .+ ,-
דוגמא :קבוצה של שלמים עם פעולות
Union, Intersection, Difference
* משמשים תפקיד דומה לשגרות
(שגרות -תפקיד תפעולי ,מבני נתונים -תפקיד מבני)
4
Data Structures, CS, TAU - 2.3
Abstract Data Types
מטרה -לספק כלי עבודה נוח למתכנת (בקבוצות “נוח” להגדיר איחוד ,חיתוך…)
אמצעי -הפרדה בין הגדרת הפעולות ובין ישומן
חוזה בין
“מתכנת העל”
ומיישם מבנה
הנתונים
תכנות:
SET
ממשק
ישום:
= SET
דוגמא:
בדוגמת הצביעה -שימוש ברשימה LIST
פעולות:
=
=
)1. MAKENULL (newclr
)2. W:= FIRST (newclr
)3. W:= NEXT (newclr
)4. INSERT (v, newclr
5
Data Structures, CS, TAU - 2.4
דוגמא בGRAPH-
.1השג הצומת הראשון הלא צבוע
.2בדוק האם יש קשת בין 2צמתים
.3סמן צומת כצבוע
.4השג את הצומת הבא
.
( .הוסף צומת ,השמט קשת…)
.
.
.
ישום:
* תרגום לשפת התכנות
* תלוי בשפת התכנות ובמשתנים שלה
* ניתן להשתמש רק במבנים הקיימים בשפה
* השפה צריכה להרשות מבנים מופשטים
6
Data Structures, CS, TAU - 2.5
יעילות של תוכנית (סיבוכיות(
מטרות בתכנית:
קלות בתכנות ,נוחות באחזקה ,יעילות (מהירות וזיכרון)
איכות:
מהירות:
* מס’ הפעולות ,סוג הפעולות.
* פונקציה של סוג הקלט ,סוג מחשב ,קומפיילר
* ממוצע ,מקרה גרוע ביותר
* חישוב כפונקציה של גודל הבעיה
(אורך הקלט)n :
* סדר גודל BIG O -
)) T ( n ) O ( f ( n
T ( n ) c f ( n ) n n0
דוגמא:
2
-קיים cוn0-
כך ש:
)T ( 0) 1, T (1) 4, ....T ( n ) ( n 1
2
) O(n
2
4n
2
)( n 1
7
Data Structures, CS, TAU - 2.6
דוגמא
דוגמא
:
T (n) 3n 2n
3
T (n) 5n n
2
3
) T (n) O(n
3
משמעות סדרי גודל:
2
5n
2
n3
n
2
3000
100 n
2000
1000
חשוב מבחינת פיתוח מחשבים:
אם מחשב מהיר פי - 10מה תהיה הגדלת הבעיה?
8
Data Structures, CS, TAU - 2.7
64 מחשב מהיר פי:דוגמא
O ( n ) : T ( n ) c n;
2
2
O(n ) : T (n) c n ;
3
3
n
O(n ) : T (n) c n ;
n
n
T
n
n
c;
T ;
c
n 3T ;
c
n
64
8 T
64
n
64
T
T
64
c
c
43 T
c
T
O (2 ) : T ( n ) c 2 ; n log ( c ); n
log( c ) 6
2
64
T1 (n) O( f (n))
T2 (n) O( g (n))
חישובי זמן ריצה
T1 T2 O(max[f (n), g (n)])
T1 T2 O( f (n) g (n))
9
Data Structures, CS, TAU - 2.8
דוגמא
Procedure bubble
var i, j, temp : integer
begin
(1) for i := 1 to n-1 do
(2)
for j := n downto i+1 do
(3)
if A[j-1] > A[j] then begin
{swap A[j-1] and A[j]}
(4)
temp := A[j-1];
(5)
A[j-1] := A[j];
(6)
A[j] := temp;
end
end; {bubble}
n 1
2
2
n
n
n
( n i ) ( n 1) 2
2 2 O(n )
i 1
10
Data Structures, CS, TAU - 2.9
) חישוב עצרת (רקורסיבי:דוגמא
Function fact (n: integer)
begin
(1) if n<=1 then
(2) fact := 1
else
(3) fact := n*fact(n-1)
end; {fact}
d
n 1
c + T(n-1)
n 1
T(n) =
T(n) = 2c+T(n-2)
n 2
T(n) = 3c+T(n-3)
n 3
T(n)
.
.
.
=.
c(n-1)+T(1)=c(n-1)+d=O(n)
11
Data Structures, CS, TAU - 2.10
מדדי סיבוכיות נוספים
f (n) ( g (n)) :
O( f (n))
חסם עליון
( f (n))
( f (n))
חסם תחתון
exist c, n0
such that
0 c g ( n ) f ( n )
f (n) ( g (n)) :
חסם עליון ותחתון
n n0
f(n): exist c1, n0, c2
such that
0c1 g ( n ) f ( n ) c2 g ( n )
n n0
12
Data Structures, CS, TAU - 2.11
מדד oקטן
Oיכול להיות ( tightהדוק) או לא.
) 2n O(n
2
) 4n O(n
2
הדוק
לא הדוק
2
- oמסמן חסמים שאינם הדוקים אסימפטוטית
for any c>0 there exists n0>0
such that
0 f ( n ) c g ( n ) n n0
החסם
f ( n) o( g ( n)) :
תופס לכל ה -Cים!
)f(n)<cg(n
אינטואיציה :אסימפטוטית )f(n
היא לא משמעותית לעומת )g(n
13
Data Structures, CS, TAU - 2.12
ציור מדדי סיבוכיות
f ( n)O( g ( n))
f ( n)( g ( n))
cg(n)
f(n)
f(n)
cg(n)
n0
n0
f ( n)( g ( n))
f ( n) o( g ( n))
cg(n) c1g(n)
c2g(n)
f(n)
c2g(n)
f(n)
c1g(n)
n0
n0
14
Data Structures, CS, TAU - 2.13
חומר קריאה
CLR 1, 2.1-2.2
Growth of functions להבין את
)(גם מושגים שלא עברנו בכיתה
1.
2.
15
Data Structures, CS, TAU - 2.14
Recurrences - משוואת נסיגה
– Recurrence
שיוויון) שמתארת פונקציה ע”י ערכים קטנים של הפונקציה-משוואה (אי
T (n)
(1)
2T ( n ) (n)
2
1) Substitution
:דוגמא
n=1
n>1
:שיטות לפתרון
2) Iteration
3) Master
16
Data Structures, CS, TAU - 2.15
) (הצבהSUBSTITUTION .1
2) n,
T ( n ) 2T ( n
:דוגמה
T (1) 1
:הוכח
T ( n)O( n logn)
. גדולc עבורT ( n)cn log n
נחש פיתרון.א
הוכח באינדוקציה.ב
:צ”ל
2 נניח נכונות לגבי.1
n
:לכן
log(
)
2
n
T(
n
2
)c
n
2
2 2
cn log n n
2
T ( n ) 2[ c
n
log( n
:הוכחה
)] n :הצבה
cnlogncnlog 2n
cnlogncnn
cnlogn
(c1)
17
Data Structures, CS, TAU - 2.16
.2הוכח נכונות לגבי תנאי הגבול
בדוגמא:
בעיה
T (1) 1 c log 1
עקיפת הבעיה :התחל ב n-גבוה יותר:
c 2
T (2)2T (1)24c2log2
T (3)2T (1)35c3log3
ולכן נכון עבור כל n2
נקודות חשובות:
)1בחירת - cבד”כ ניתן לבצע בסוף הוכחת האינדוקציה.
)2אם ההוכחה לא עובדת -יתכן והטענה לא נכונה.
)3אסור לערבב Oבהוכחה.
18
Data Structures, CS, TAU - 2.17
דוגמא
2) n,
T ( n ) 2T ( n
T (1) 1
T ( n)O( n)
2
T( n
2
) c n
2
T ( n ) 2( c n
) n
:יכולנו לטעון
:ולהוכיח
:ע"ס הנחה
:הצבה
cnn
O(n)
!לא נכון
19
Data Structures, CS, TAU - 2.18
שיטת האיטרציה.2
4
T ( n ) 3T ( n
) n,
T (1) (1) :דוגמא
4
n 3( n ) 9T ( n )
4
16
n 3( n ) 9n 27T ( n )
4
16
64
T ( n ) n 3T ( n
:הדגמת השיטה
)
log4 n
...3
(1)
T ( n)n3n 9n 27 n
4
16
64
log
3
i
4 )
n ( 3 ) ( n
4
i 0
4nO( n)
O(n)
20
Data Structures, CS, TAU - 2.19
THE MASTER METHOD .3
T ( n ) aT ( n ) f ( n )
b
לנוסחאותCookbook שיטת
Master Thm
קבועיםa1, b1 :יהיו
פונקציה- f ( n )
- מוגדרת על שלמים לא שליליים: T ( n )
T ( n ) aT ( n ) f ( n )
b
n
n
או
b הינו
b
T ( n ) ( n log b a )
T ( n ) ( n log b a log n )
b
:כאשר
: יכולה להחסםT ( n ) אזי
f ( n )O ( nlog b a ) ) אם1
:
f ( n ) ( nlog b a )
:
:
T ( n ) ( f ( n ) )
n
) אם2
f ( n ) ( nlog b a ) אם
af ( n ) cf ( n )
:ו
b
ים הגדולים-n כלשהו וכל הc ל
Data Structures, CS, TAU - 2.20
)3
21
1 דוגמא
a
T ( n ) 9T ( n
logb a
n
n
b
f(n)
3
log3 9
) n
2
n
log3 91
f ( n ) O ( n
)
T ( n ) ( n
2
T ( n) ( n
)
log b a
)
f ( n )O ( nlog b a )
22
Data Structures, CS, TAU - 2.21
2 דוגמא
a
b
T ( n ) 1T ( 2 n
n
logb a
n
2 מקרה
log 3 1
2
f(n)
3
n
) 1
0
1
( f ( n) (1))
T ( n)(1logn)(logn)
T ( n ) ( n log b a log n )
f ( n ) ( nlog b a )
23
Data Structures, CS, TAU - 2.22
3 דוגמא
b
a
T ( n ) 3T ( n
f(n)
) n log n
4
logb a
log4 3
0
.
793
n
n
O ( n
)
1
f ( n ) ( n )
T ( n ) ( f ( n ) )
3 מקרה
af ( n
b
f ( n: ) ( nlog b a )
af ( n ) cf ( n )
b
: גדולn עבור
) 3n
4
log( n
cf ( n )
) 3 n log n
4
4
(c 3
4
)
T ( n)( nlogn)
24
Data Structures, CS, TAU - 2.23