35
داده مان ت خ سا راف گ ان ق ه د ن سی خ م ج ی س د ن ه م ی و ن ف کده% س ن دا

ساختمان داده گراف

  • Upload
    piera

  • View
    98

  • Download
    9

Embed Size (px)

DESCRIPTION

ساختمان داده گراف. حسین دهقان دانشکده فنی و مهندسی جم. درخت AVL. انگیزه. درخت دودويي جستجو ( BST ) در حالتي كه كامل باشد ساختار مناسبي براي عمليات ديكشنري است ( O( lgn ) ) در بدترين حالت، درخت دودويي جستجو به يك ليست پيوندي تبديل مي شود ( O(n) ) - PowerPoint PPT Presentation

Citation preview

Page 1: ساختمان داده گراف

ساختمان داده

گرافحسین دهقاندانشکده فنی و مهندسی جم

Page 2: ساختمان داده گراف

درخت AVL

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

2

Page 3: ساختمان داده گراف

انگیزه( در حالتي كه كامل BSTدرخت دودويي جستجو )•

باشد ساختار مناسبي براي عمليات ديكشنري (O(lgn)است )

در بدترين حالت، درخت دودويي جستجو به يك •(O(n)ليست پيوندي تبديل مي شود )

روشهايي وجود دارد كه درخت دودويي جستجو •)نزديك به( دودويي كامل نگهداري شود

•AVL (Adelson, Velskii, Landis)(Tree- 3-2) 2-3درخت •(Tree- 4-3-2) 2-3-4درخت •(Red Black Tree)درخت قرمز سياه • 3

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 4: ساختمان داده گراف

AVLدرخت T( براي هر گره BF: Balance Factorضريب تعادل )•

كه در BF=hL-hRدر درخت دودويي برابر است با به ترتيب ارتفاع زيردرختان چپ و hRو hLآن

است. Tراست براي هر گره درخت يكي از AVL tree ، BFدر •

است.1، يا -1،0مقادير

4

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 5: ساختمان داده گراف

مثال

5

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

50

48

62

55 67

43 49

H=1BF=0

H=2BF=1

H=0BF=0

H=0BF=0

H=0BF=0

H=0BF=0

H=0BF=0

H=1BF=1

17

12

H=1BF=1 32

37

H=1BF=-1

H=0BF=0

H=0BF=015

50

62

55 67

H=2BF=-1

H=0BF=0

H=1BF=-1

H=0BF=0

Page 6: ساختمان داده گراف

مثال

6

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

17

44

32

78

50 8812

37 80 9028 48 62

55 6743 49

H=1BF=0

H=1BF=0

H=1BF=0

H=1BF=0

H=2BF=0

H=2BF=-1

H=3BF=1

H=4BF=-1

Page 7: ساختمان داده گراف

اضافه کردن یک گرهممكن است AVLبا اضافه شدن گره اي به درخت •

به BF= 2تعادل درخت از بين برود )گره اي با وجود آيد(

براي متعادل ساختن درخت پس از اضافه شدن •( انجام مي شود.rotationگره اي چرخش )

بر اساس AVL( در درخت rotationانواع چرخش )• است.A نسبت به گره Yمحل اضافه شده گره

است Y نزديكترين جد به گره اضافه شده Aگره • 2 براي آن گره Y، BFكه پس از اضافه شدن

مي شود. 7

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 8: ساختمان داده گراف

چرخش

8

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

BL BR

B

A

h h+2

0

1

BL BR

B

A

AR

1

2

BL

B

A

AR

00

BR

AR

درخت متعادل

درخت نامتعادلinsertبعد از

درخت متعادل LL (LLبعد از چرخش

rotation)

Page 9: ساختمان داده گراف

چرخش

9

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

BL BR

B

A

hh+2

0

-1

BR

B

A

BL

0

0

AL

AL

BL

B

A

-1

-2

AL

BLBR

درخت متعادل

درخت نامتعادلinsertبعد از

درخت متعادل RR (RRبعد از چرخش

rotation)

Page 10: ساختمان داده گراف

چرخش

10

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

LR rotationA

B

C

0

A

B

1 C

B A1

2

0

0

0

0

Page 11: ساختمان داده گراف

چرخش

11

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

CL

C

B

h

h0

0

BLCR

A1

ALh

+2

C

B

1

-1

BLCR

A2

AL

CL

CL

ALCR

BL

0

-1 AB0

C

CL

C

B

h

h0

0

BLCR

A1

AL

h+

2

C

B

-1

-1

BLCR

A 2

AL

CL

CL

ALCR

BL

0

0 AB1

C

Page 12: ساختمان داده گراف

مثال

12

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0 0

0

-1

00

1

-1

1 0

0

-1

01

2

-1

1

0

0

-1

0

0

0

-1

-1

گره اضافه شده

Page 13: ساختمان داده گراف

مثالاضافه كردن ماههاي ميالدي در درخت دودويي •

(non AVLجستجو )• Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Dec

13

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

July Sept

Apr

Feb

MayJune

Mar

Jan

Aug

Dec Oct

Nov

Page 14: ساختمان داده گراف

(AVLمثال )14

Sept

Oct

Nov

July

Apr

Feb

MayJune

Mar

Jan

Aug July

Apr Feb MayJune

Mar

Jan

Aug

Sept

Oct

July

Apr Feb

May

June

Mar

Jan

Aug

Nov

Sept

Oct

JulyApr Feb

MayJune

Mar

Jan

Aug

Dec

Page 15: ساختمان داده گراف

گراف

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

15

Page 16: ساختمان داده گراف

گراف

16

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 17: ساختمان داده گراف

تعریف از دو مجموعه تشکيل مي شود:گرافيک •

V(G)يک مجموعه محدود غير تهي از رئوس •

E(G)يک مجموعه )احيانا تهي( از يالها •

•G(V,E) يک گراف را نشان مي دهدگرافي است که در آن گراف بدون جهت يک •

( = v0, v1) ترتيب رئوس در يک يال اهميت ندارد.(v1,v0) گرافي است که در آن يک دار جهت گرافيک •

,v0>يال متناظر با يک زوج مرتب از رئوس است v1> != <v1, v0> 17

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

ابتدا انتها

Page 18: ساختمان داده گراف

گراف کاملگراف کامل : گرافي است که داراي حداکثر •

تعداد لبه باشد.يال n(n-1)/2 گراف بدون جهت کامل:• يال n(n-1) گراف جهت دار کامل: •

18

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0

1 2

3

G1

کامل گراف

0

1 2

3 4 5 6G2

0

1

2G3

کامل غير گرافV(G1)={0,1,2,3} E(G1)={(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)}V(G2)={0,1,2,3,4,5,6} E(G2)={(0,1),(0,2),(1,3),(1,4),(2,5),(2,6)}V(G3)={0,1,2} E(G3)={<0,1>,<1,0>,<1,2>}

0

1 2

3

Page 19: ساختمان داده گراف

گرافدر يک گراف نمي توان يالي از یک راس به خودش •

داشت.در يک گراف يک يال نمي تواند چند بار ظاهر شود. •

19

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 20: ساختمان داده گراف

زير گراف

20

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

• V(G’`) V(G) and E(G’`) E(G).

0

1 2

3G1 0

1

2G3

Page 21: ساختمان داده گراف

مسیراز راس مسnيريک • vp ه راسnب vq رافnگ در G

vp, vi1, vi2, ..., vin, vqدنبالnه اي از رئnوس بnه صnورت است به نحوي که

( vp, vi1( ,)vi1, vi2( ,... ,)vin, vq) يالهاي گراف G باشند.

به صورت تعداد لبه هاي درون آن مسير يک طول•تعريف مي شود.

21

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0

1 2

3

0

1 2

3

0

1 2

3

Page 22: ساختمان داده گراف

مسیرمسير ساده )جهت دار(•

مسيري است که در آن تمام راس ها احتماال به •جز راس اول و آخر متمايز باشند.

دور يا حلقه•مسير ساده اي است که راس اول و آخر آن •

يکي است.

22

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0

1 2

3

Page 23: ساختمان داده گراف

درجه گرافدرجه•

تعداد يالهايي است که با آن تالقي دارند•براي گراف جهت دار•

: تعداد يالهايي است که سر آنها به راس ورودي درجه•راس مذکور متصل باشد.

: تعداد يالهايي است که ته آنها به راس خروجي درجه•راس مذکور متصل باشد.

يال eراس و nبا Gدر گراف iدرجه راس diاگر •باشد، تعداد يالها برابر است با

23

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0

1

2

e din

( ) /0

1

2

Page 24: ساختمان داده گراف

ذخیره گرافماتريس همسايگي•

ليست همسايگي•

24

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 25: ساختمان داده گراف

ذخیره گرافماتريس همسايگي•

پيچيدگي زماني تشخيص تعداد يال گراف و يا تشخيص •همبند بودن گراف

O(n2/2)گراف بدون جهت•

O(n2)گراف جهت دار •

25

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0

1

1

1

1

0

1

1

1

1

0

1

1

1

1

00

1 23

Page 26: ساختمان داده گراف

(همسايگي ليستذخیره گراف )

26

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

0

1 23

0

1

21

0

2

3

4

5

6

7

Page 27: ساختمان داده گراف

عمليات روي گراف هاپيمايش )جستجو(•

جستجوي عمقي•• Depth First Search (DFS)

جستجوي عرضي•• Breadth First Search (BFS)

درخت پوشا•

27

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 28: ساختمان داده گراف

پيمايش گراف

28

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

depth first search (DFS): v0, v1, v3, v7, v4, v5, v2, v6

breadth first search (BFS): v0, v1, v2, v3, v4, v5, v6, v7

Page 29: ساختمان داده گراف

جستجوي عمقي

#define FALSE 0#define TRUE 1short int visited[MAX_VERTICES];

Data structureadjacency list: O(e)adjacency matrix: O(n2)

w

[0] [1] [2] [3] [4] [5] [6] [7]

output:

0 1 3 7 4 5 2 6

visited:

Page 30: ساختمان داده گراف

جستجوي عرضيبراي پياده سازي نياز به •

يک صف•که در ابتدا به صفر :visitedيک آرايه سراسري •

مقدار دهي اوليه مي شود.

30

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 31: ساختمان داده گراف

جستجوي عرضي

adjacency list: O(e)adjacency matrix: O(n2)

[0] [1] [2] [3] [4] [5] [6] [7]

0 1 2 3 4 5 6 7

visited:

output:

w

out in1 2 3 4 5 60 7

Page 32: ساختمان داده گراف

عمليات روي گراف ها • همبند هاي مولفه• يا G اگر است همبند گراف آيا که کرد تعيين توان مي باشد جهت بدون گراف يک

.نه• تابع دو از وجود bfs يا dfs يکي اي نشده مالقات راس آيا کنيم تعيين سپس و کنيم احضار را

نه يا .دارد

• تابع دو از يکي مکرر احضارهاي با توان مي را گراف يک همبند هاي bfs(v) مولفهآن dfs(v) يا در که کرد است v تعيين نشده مالقات هنوز که است .راسي

adjacency list: O(n+e)adjacency matrix: O(n2)

Page 33: ساختمان داده گراف

درخت پوشايک گراف همبند باشد Gچنانچه •پيمايش آن به صورت جستجوي عمقي يا عرضي، •

Gبا شروع از هر راس دلخواه تمام رئوس گراف را مالقات مي کنند.

را در Gدرختي که تعدادي از لبه ها و تمام رئوس •ناميده مي شود. پوشا درختبر دارد،

33

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 34: ساختمان داده گراف

درخت پوشابا استفاده از جستجوي عمقي يا جستجوي •

عرضي مي توان درخت پوشا را ايجاد کرددرخت درخت حاصل از جستجوي عمقي ← •

پوشاي عمقيدرخت درخت حاصل از جستجوي عرضي ← •

پوشاي عرضي

34

نقا

ه د

نسی

حی

سدهن

مو

ی فن

ه دکش

اند

م

ج

Page 35: ساختمان داده گراف

• پوشا درختمي • عرضي جستجوي يا عمقي جستجوي از استفاده با

کرد ايجاد را پوشا درخت توانعمقي جستجوي از حاصل عمقي درخت پوشاي دارد درخت نام عرضي جستجوي از حاصل عرضي درخت پوشاي دارد درخت نام

عمليات روي گراف ها