מרצה : פרופ ’חנוך לוי [email protected] ד”ר יוסי מטיאס [email protected]: מתרגלים : גיא קינדלר [email protected] ערן הלפרין [email protected] דרישות : • %10 תרגילי בית • %10 פרויקט (משולב עם מעבדה) • %80 בחינה סופית 1 Data Structures, CS.
Download
Report
Transcript מרצה : פרופ ’חנוך לוי [email protected] ד”ר יוסי מטיאס [email protected]: מתרגלים : גיא קינדלר [email protected] ערן הלפרין [email protected] דרישות : • %10 תרגילי בית • %10 פרויקט (משולב עם מעבדה) • %80 בחינה סופית 1 Data Structures, CS.
מרצה:
פרופ ’חנוך לוי
[email protected]
ד”ר יוסי מטיאס
[email protected]:
מתרגלים
:
גיא קינדלר
[email protected]
ערן הלפרין
[email protected]
דרישות:
• %10תרגילי בית
• %10פרויקט (משולב עם מעבדה)
• %80בחינה סופית
1
Data Structures, CS TAU
11/7/2015
:ספרים
Introduction to Algorithms by:
T. H. Cormen, C. E. Leiserson, R. L. Rivest
:ספרי עזר
Data Structures and Algorithms by:
Aho, Hopcroft, Ulman
:ספר מומלץ
T.H. Cormen
:חומר חובה
: פרקיםCormen
I. 2, 4
II. 7, 8, 9 10
III. 11, 12, 13
V. 19, 22
כל החומר הנלמד בכיתה
11/7/2015
Data Structures, CS TAU
2
• נושא בסיסי ועקרוני
שימוש בסברוטינות( שגרות) :בצוע תפקידי משנה
דוגמה:
)Procedure SUM(i,j,k
)Procedure MULT(i,j,prod
;k:=i+j
;prod:=0
;return
for k=1 to j
;end
;)call SUM(prod,i,prod
;end
עקרון :בקריאה לשגרה חשוב ה”מה” ,לא ה”איך!”
דוגמה :בצוע קורס “מבנה נתונים”
השג את הספרלמד את החומרהגש עבודותהגש בחינה3
Data Structures, CS TAU
11/7/2015
• שגרות שקוראות לעצמן!
דוגמה :1חישוב עצרת
Iterative
;)Procedure factor(n
;x = 1
for I:1 to n
;x = x * I
;)return(x
;end
Recursive
;)Procedure factor1(n
;)if n = 1 return(1
else
;)x = factor1(n-1
;)return(n * x
;end
;end
• רקורסיה :שיטה כללית
נתונה :בעיה גדולה
שיטת פתרון :א) שבור הבעיה לבעיה(יות) קטנה(ות)
ב) פתור את הבעיה(יות) הקטנה(ות)
ג) “הדבק” הפתרונות הקטנים ליצירת הפתרון הגדול
נוסחה להצלחה :אמונה!!!
4
Data Structures, CS TAU
11/7/2015
:2 דוגמה
מקל:נתון
לחתוך את המקל לחתיכות של ס”מ ומטה:צריך
פתרון איטרטיבי
Proc CUT1(stick)
while length(stick)>1 do:
chop a piece of 1 cm from stick
end;
return;
end;
פתרון רקורסיבי
Proc CUT2(stick)
If length(stick)<1 return;
else do:
chop a piece of 1 cm from stick
let s-stick be the remaining part
CALL CUT2(s-stick)
end;
return;
end;
11/7/2015
Data Structures, CS TAU
5
פתרון רקורסיבי נוסף
Proc CUT3(stick)
If length(stick)<1 return
else do:
cut stick to two parts: stick1 and stick2
CALL CUT3(stick1)
CALL CUT3(stick2)
return;
end;
end;
:תשומת לב
הם פתרונות תקיפיםCUT3 וCUT2
CUT2! לקרוא לCUT3 אפשר בתוך
CUT3! לקרוא לCUT2 אפשר בתוך
11/7/2015
Data Structures, CS TAU
6
:3 דוגמה
. לחסר ולמנות,נתון מחשב שיודע רק לחבר) שלםX ( עבורSQUARE(X בנה שיגרהX2 (חשב את-
פתרון רקורסיבי
(n+1)2 = n2+n+n+1
n2 = (n-1)2+n+n-1
Procedure SQUARE(N)
if N = 1 return (1)
else do
M = SQUARE(N-1);
return (M+N+N-1);
end;
end;
פתרון איטרטיבי
Procedure SQUARE2(N)
M = 0;
for I = 1 to N
M = M + N;
end;
return (M);
end;
11/7/2015
Data Structures, CS TAU
7
:4 דוגמה
:מגדלי האנוי
- Cתוך שימוש ב- B ל- A • העבר מ
!• אסור שגדול יהיה על קטן
פתרון רקורסיבי
Proc HANOI(From, To, By, N)
(* move top N rings from From to To using By*)
if N = 1 move ring from From to top
of To end return;
else do:
CALL HANOI(From, By, To, N - 1);
move top of From to To
CALL HANOI(By, To, From, N - 1);
return;
end;
end;
11/7/2015
Data Structures, CS TAU
8
:5 דוגמה
A1,…,AN איבריםבמערךN שלMAXALL מציאת- N השמת המקסימום במקום ה-
פתרון איטרטיבי
temp:= A(1);
itemp:= 1;
for j=1 to N do
if A(j) > temp
itemp:= j;
temp:= A(j);
end;
end;
A(itemp): = A(N);
A(N):= temp;
פתרון רקורסיבי
if N=1 return
else begin
CALL MAXALL(N-1);
if A(N)<A(N-1) then
temp= A(N);
A(N)= A(N-1);
A(N-1)= temp;
end;
return;
end;
11/7/2015
Data Structures, CS TAU
9
:6 דוגמה
MAXALL( בהנחה שממומשת השגרהSORT(N מיון מערך
פתרון איטרטיבי
Do I= N to 1 by -1
CALL MAXALL(I)
end;
פתרון רקורסיבי
Proc SORT(N)
/* sorts the elements A(1)….A(N) */
if N = 1 return
else begin
CALL MAXALL(N);
CALL SORT(N-1);
end;
end;
11/7/2015
Data Structures, CS TAU
10
תרגיל בית :1
1) -הבא דוגמא לבעיה
-
פתור את הבעיה בצורה רקורסיבית
-
פתור את הבעיה בצורה לא רקורסיבית
-
הגש למתרגלים בשבוע הבא
)2בונוס:
האם ישנן בעיות שניתן לפתור בעזרת שפה
רקורסיבית ולא ניתן בעזרת שפה לא
רקורסיבית?
האם יש בעיות שניתן לפתור איטרטיבית אך
לא רקורסיבית?
11
Data Structures, CS TAU
11/7/2015
מטרה :לקחת בעיה ולכתוב לה פתרון שיטתי באמצעות המחשב
כלים :מבנה נתונים +אלגוריתם
אלגוריתם :שיטה ,סכמה“ ,מתכון”
מבנה נתונים :חלק אינטגרלי של האלגוריתם
אלגוריתם -תלוי במבנה הנתונים
דוגמה לבעיה ופתרונה
E
D
AB+DCמותר
AB+EBמותר
AC+EBאסור
C
A
נתון :צומת דרכים עם כיווני נסיעה
B
צריך :לתכנן פעולות רמזור כך שלא יהיו התנגשויות
12
Data Structures, CS TAU
11/7/2015
שיטה :נרשום את כל הקומבינציות האסורות בצורת גראף
)GRAPH(VERTICES, EDGES
צמתים)
( קשתות,
צמתים :פניות אפשריות
קשתות :מחברות צמדי פניות אסורות
ED
13
AD
AC
AB
BD
BC
BA
DC
DB
DA
EC
EB
EA
Data Structures, CS TAU
11/7/2015
אחסנת האינפורמציה
ייצוג האינפורמציה באמצעות טבלה
(ייצוג גראף בטבלה)
= 1קשת (פניה אסורה)
14
Data Structures, CS TAU
11/7/2015
פתרון הבעיה במודל הנ”ל
• רמזור בעל kצבעים
• כשצבע iדולק הפניות של צבע iמבוצעות
• באותו צבע אסור שתהינה שתי פניות סותרות
תרגום לגראף
צבע את צבעי הגראף ב kצבעים ,כך
ששני שכנים לא יהיו באותו צבע
רצוי :מזעורk
בעיה קלאסית :צביעת גראף
הבעיה היאNP-COMPLETE
כדי לפתור יש “לבדוק את כל האפשרויות”
(או מספר עצום של אפשרויות)
15
Data Structures, CS TAU
11/7/2015
פתרונות:
)1קטן ==> חפש את כל האפשרויות
)2אולי קיימת אינפורמציה נוספת
)3פתרון “קרוב לאופטימלי ” -היוריסטי)(heuristic
פתרון היוריסטי( תאוותני)- greedy
)1בחר צומת לא צבוע ,וצבע בצבע החדש
)2עבור על רשימת הלא צבועים ,ואם לצומת אין שכן
בצבע הנוכחי -צבע אותו.
לא אופטימלי!
3
2
5
1
4
אופטימלי}4,3,1{ }5,2{ :
היוריסטי}: {5} {3,4} {1,2
16
Data Structures, CS TAU
11/7/2015
צביעת הגראף של הבעיה
אופטימליות:
הקבוצה AC, DA, BD, EBהינה 4 -קליק
(כל פניה אסורה עם כל 3האחרות)
לכן צריך לפחות 4צבעים
תרגום הפתרון לרמזור
צבע
17
פניות
אדום
AB, AC, BC
ירוק
DC, AD, BD
כחול
DA, EC, BA
סגול
EA, EB, DB, ED
Data Structures, CS TAU
11/7/2015