Directed Graphגרף מכוון
a b
c fg
ed h
),( EV},,,,,,,{ hgfedcbaV
)},(),,(),,(
),,(),,(),,(),,(
),,(),,(),,(),,{(
bghhge
gbhfgeed
fdacdcfaE
צמתים
חוג עצמי
קשתות
nV ||mE ||
2|| nmE
),( hh
Directed Graphגרף מכוון
a b
c fg
ed h
),( EV
חוג עצמי
nV ||mE ||
),( hh
מעגל
cgedc
)(degree-in v
v )(degree-outמספר הקשתות היוצאות מ- v
vמספר הקשתות הנכנסות ל- v0 מקור)(degree-in v
},,,,,,,{צמתים hgfedcbaV
gedcמסלול
Graphגרף לא מכוון
a b
c fg
ed h
)},(),,(
),,(),,(),,(),,(
),,(),,(),,(),,{(
hhge
gbhfgeed
fdacdcfaE
)(degree v
vמספר הקשתות של-
),( EV},,,,,,,{צמתים hgfedcbaV
חוג עצמי
nV ||mE ||
),( hh
קשתות
a b
cf
g
ed h
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1
a b c d e f g habcdefgh
יצוג גרף במטריצת סמיכיותAdjacency Matrix
2nסבוכיות מקום
nV ||mE ||
a b
cf
g
ed h
יצוג גרף ברשימות סמיכיותAdjacency lists
abcdefgh
f e
a
g
f
g
h
b ch mn
סבוכיות מקום
nV ||mE ||
רשימות סמיכיות
מטריצת סמיכיות
סבוכיות מקום
2n
mn
חיפושקשת
)1(O
))(deg(iO
?),( Eji
בדיקתשכנים
Ei ?),(
)(nO
))(deg(iO
nV ||mE ||
מיון טופולוגי
a b
cf
g
ed h
גרף מכווןקלט:
מספור של פלט: הצמתים כך שאם
)(iN
yx
)()(אזי yNxN
4
2
3
1
5
6
7
8
קיים מספור כזה אם"ם אין בגרף מעגל:משפט
:הוכחהv1
v2
v3
vn
)()()()( 121 vNvNvNvN n
v1v2v3vn מקור
באנדוקציה
סתירה
וסלק אותו ואת כל הקשתות1סמן מקור ב- היוצאות ממנו.
נניח שקיים מעגל בגרף
.k = 1: אתחול1.
כל עוד קיימים מקורות בצע:2.
vמצא מקור •. k מספר vתן ל-• באחד. kקדם את• מהגרף )וכן את הקשתות היוצאות vסלק את •
ממנו(.
אז המספור הושלם, k==n+1אם3.
אחרת בגרף יש מעגל מכוון. 4.
אלגוריתם למיון טופולוגי
a b
cf
g
ed h
k = 1
1מקור
a b
cf
g
ed h
k = 2
1
2
מקור
a b
cf
g
ed h
k = 3מקור
1
23
a b
cf
g
ed h
k = 4
מקור
1
23
4
a b
cf
g
ed h
k = 5
מקור
1
23
4
5
a b
cf
g
ed h
k = 6
מקור1
23
4
5
6
a b
cf
g
ed h
k = 7
מקור
1
23
4
5
6
7
a b
cf
g
ed h
k = 8מקור
1
23
4
5
6
7
8
a b
cf
g
ed h
k = 9
1
23
4
5
6
7
8
.k = 1: אתחול1.
כל עוד קיימים מקורות בצע:2.
vמצא מקור •. k מספר vתן ל-• באחד. kקדם את• מהגרף vסלק את •
)וכן את הקשתות היוצאות ממנו(.
אז המספור הושלם, k==n+1אם3.
אחרת בגרף יש מעגל מכוון. 4.
אלגוריתם למיון טופולוגי
מבנה נתונים לאלגוריתם למיון טופולוגי
Find-Sourceמצא מקור
Delete-Vertexסלק צומת
פעמים בפונקציות הנ"לnהאלגורים משתמש
)( mn חסם תחתון טרויאלי
)(האם אפשר לפתור את הבעיה ב- ? mnO
רשימות סמיכיות
מטריצת סמיכיות
מצא מקור סלק צומתnס"כ ל-פעמים
0)(degree-in v
)( 2nO )(nO
בדוק עמודה שכולה אפס
אפס את השורה של הצומת
)( 3nO
)( mnO )1(O )( 2 nmnO
)(? mnO
)(האם אפשר לפתור את הבעיה ב- ? mnO
כן!
a b
cf
g
ed h
abcdefgh
f e
a
g
g
h
c
f
h
abcdefgh
מחסנית\תור
in-degree
a b
cf
g
ed h
abcdefgh
f e
a
g
g
h
c
f
h
abcdefgh
in-degree
10101222
)( mnO
מחסנית\תור
a b
cf
g
ed h
abcdefgh
f e
a
g
g
h
c
f
h
abcdefgh
in-degree
10101222
)( mnO
b
d
)(nO
מחסנית\תור
a b
cf
g
ed h
1מקור
abcdefgh
f e
a
g
g
h
c
f
h
abcdefgh
in-degree
10101222b
d
מחסנית\תור
1
)( mnO )(nO
a b
cf
g
ed h
1
2
מקורabcdefgh
f e
a
g
g
h
c
f
h
d
מחסנית\תור
abcdefgh
in-degree
10101212
)( mnO )(nO
10e
a b
cf
g
ed h
מקור
1
23
abcdefgh
in-degree
10100112e
מחסנית\תור
abcdefgh
f e
a
g
g
h
c
f
h
)( mnO )(nO
0g1
a b
cf
g
ed h
מקור
1
23
4
abcdefgh
in-degree
10100101g
abcdefgh
f e
a
g
g
h
c
f
h
)( mnO )(nO
מחסנית\תור
0c
a b
cf
g
ed h
מקור
1
23
4
5abcdefgh
in-degree
10000101
c
c
מחסנית\תור
d2
f e
a
g
g
h
c
f
h
)( mnO )(nO
0a
0f
abcdefgh
a b
cf
g
ed h
מקור1
23
4
5
6
abcdefgh
in-degree
00000001
c
af
מחסנית\תור
5
f e
a
g
g
h
c
f
h
)( mnO )(nO
abcdefgh
a b
cf
g
ed h
מקור
1
23
4
5
6
7
abcdefgh
in-degree
00000001
c
f
מחסנית\תור
55
f e
a
g
g
h
c
f
h
)( mnO )(nO
0h
abcdefgh
a b
cf
g
ed h
מקור
1
23
4
5
6
7
8abcdefgh
in-degree
00000001
c
0hh
מחסנית\תור
555
f e
a
g
g
h
c
f
h
)( mnO )(nO
abcdefgh
a b
cf
g
ed h
1
23
4
5
6
7
8
555
f e
a
g
g
h
c
f
h
abcdefgh
in-degree
00000001
c
0h
מחסנית\תור
)( mnO )(nO
abcdefgh
a b
cf
g
ed h
1
2 3
4
5
6
7
8
555
f e
a
g
g
h
c
f
h
abcdefgh
in-degree
00000001
c
0h
)( mnO )(nO
מחסנית\תור
למצא מקור)()1( nOnO
לתקן דרגה של השכנים)()1( mOmO
להכניס צומת במחסנית)()1( nOnO )( mnO
ס"כ