גרף מכוון directed graph a b c f g ed h צמתים חוג עצמי קשתות

35
ןןן ןןןןןDirected Graph a b c f g e d h ) , ( E V } , , , , , , , { h g f e d c b a V )} , ( ), , ( ), , ( ), , ( ), , ( ), , ( ), , ( ), , ( ), , ( ), , ( ), , {( b g h h g e g b h f g e e d f d a c d c f a E ןןןןן ןןן ןןןן ןןןןןn V | | m E | | 2 | | n m E ) , ( h h

Post on 18-Dec-2015

222 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

Directed Graphגרף מכוון

a b

c fg

ed h

),( EV},,,,,,,{ hgfedcbaV

)},(),,(),,(

),,(),,(),,(),,(

),,(),,(),,(),,{(

bghhge

gbhfgeed

fdacdcfaE

צמתים

חוג עצמי

קשתות

nV ||mE ||

2|| nmE

),( hh

Page 2: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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מסלול

Page 3: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

Graphגרף לא מכוון

a b

c fg

ed h

)},(),,(

),,(),,(),,(),,(

),,(),,(),,(),,{(

hhge

gbhfgeed

fdacdcfaE

)(degree v

vמספר הקשתות של-

),( EV},,,,,,,{צמתים hgfedcbaV

חוג עצמי

nV ||mE ||

),( hh

קשתות

Page 4: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 5: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

יצוג גרף ברשימות סמיכיותAdjacency lists

abcdefgh

f e

a

g

f

g

h

b ch mn

סבוכיות מקום

nV ||mE ||

Page 6: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

רשימות סמיכיות

מטריצת סמיכיות

סבוכיות מקום

2n

mn

חיפושקשת

)1(O

))(deg(iO

?),( Eji

בדיקתשכנים

Ei ?),(

)(nO

))(deg(iO

nV ||mE ||

Page 7: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

מיון טופולוגי

a b

cf

g

ed h

גרף מכווןקלט:

מספור של פלט: הצמתים כך שאם

)(iN

yx

)()(אזי yNxN

4

2

3

1

5

6

7

8

Page 8: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

קיים מספור כזה אם"ם אין בגרף מעגל:משפט

:הוכחהv1

v2

v3

vn

)()()()( 121 vNvNvNvN n

v1v2v3vn מקור

באנדוקציה

סתירה

וסלק אותו ואת כל הקשתות1סמן מקור ב- היוצאות ממנו.

נניח שקיים מעגל בגרף

Page 9: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

.k = 1: אתחול1.

כל עוד קיימים מקורות בצע:2.

vמצא מקור •. k מספר vתן ל-• באחד. kקדם את• מהגרף )וכן את הקשתות היוצאות vסלק את •

ממנו(.

אז המספור הושלם, k==n+1אם3.

אחרת בגרף יש מעגל מכוון. 4.

אלגוריתם למיון טופולוגי

Page 10: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 1

1מקור

Page 11: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 2

1

2

מקור

Page 12: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 3מקור

1

23

Page 13: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 4

מקור

1

23

4

Page 14: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 5

מקור

1

23

4

5

Page 15: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 6

מקור1

23

4

5

6

Page 16: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 7

מקור

1

23

4

5

6

7

Page 17: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 8מקור

1

23

4

5

6

7

8

Page 18: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

k = 9

1

23

4

5

6

7

8

Page 19: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

.k = 1: אתחול1.

כל עוד קיימים מקורות בצע:2.

vמצא מקור •. k מספר vתן ל-• באחד. kקדם את• מהגרף vסלק את •

)וכן את הקשתות היוצאות ממנו(.

אז המספור הושלם, k==n+1אם3.

אחרת בגרף יש מעגל מכוון. 4.

אלגוריתם למיון טופולוגי

Page 20: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

מבנה נתונים לאלגוריתם למיון טופולוגי

Find-Sourceמצא מקור

Delete-Vertexסלק צומת

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

)( mn חסם תחתון טרויאלי

)(האם אפשר לפתור את הבעיה ב- ? mnO

Page 21: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

רשימות סמיכיות

מטריצת סמיכיות

מצא מקור סלק צומתnס"כ ל-פעמים

0)(degree-in v

)( 2nO )(nO

בדוק עמודה שכולה אפס

אפס את השורה של הצומת

)( 3nO

)( mnO )1(O )( 2 nmnO

)(? mnO

Page 22: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

)(האם אפשר לפתור את הבעיה ב- ? mnO

כן!

Page 23: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

abcdefgh

f e

a

g

g

h

c

f

h

abcdefgh

מחסנית\תור

in-degree

Page 24: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

abcdefgh

f e

a

g

g

h

c

f

h

abcdefgh

in-degree

10101222

)( mnO

מחסנית\תור

Page 25: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

a b

cf

g

ed h

abcdefgh

f e

a

g

g

h

c

f

h

abcdefgh

in-degree

10101222

)( mnO

b

d

)(nO

מחסנית\תור

Page 26: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 27: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 28: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 29: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 30: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 31: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 32: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 33: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 34: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

Page 35: גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות

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

ס"כ