Transcript Document
ساختمان داده
گراف
حسین دهقان
دانشکده فنی و مهندس ی جم
حسین دهقان
دانشکده فنی و مهندس ی جم
2
درخت
AVL
انگیزه
حسین دهقان
دانشکده فنی و مهندس ی جم
• درخت دودويي جستجو ( )BSTدر حالتي كه كامل باشد ساختار مناسبي
براي عمليات ديكشنري است ())O(lgn
• در بدترين حالت ،درخت دودويي جستجو به يك ليست پيوندي تبديل
مي شود ())O(n
• روشهايي وجود دارد كه درخت دودويي جستجو (نزديك به) دودويي كامل
نگهداري شود
• )AVL (Adelson, Velskii, Landis
• درخت (2-3- Tree) 2-3
• درخت (2-3-4- Tree) 2-3-4
3
• درخت قرمز سياه )(Red Black Tree
درخت AVL
حسین دهقان
دانشکده فنی و مهندس ی جم
4
• ضريب تعادل ( )BF: Balance Factorبراي هر گره Tدر درخت
دودويي برابر است با BF=hL-hRكه در آن hLو hRبه ترتيب ارتفاع
زيردرختان چپ و راست Tاست.
• در BF ، AVL treeبراي هر گره درخت يكي از مقادير ،0،1يا -1
است.
مثال
H=0
BF=0
H=1
BF=1
12
H=0
BF=0
62
H=1
55
BF=1
H=0 50
BF=0
32
H=1
BF=-1
37
H=0
BF=0
H=2
BF=1
67
H=1
48 BF=0
H=0 43
BF=0
62
H=0
BF=0
H=0
55
BF=0
H=0
49 BF=0
حسین دهقان
دانشکده فنی و مهندس ی جم
15
H=2
BF=-1
67
H=1
BF=-1
50
H=0
BF=0
5
مثال
H=4
44 BF=-1
H=3
78 BF=1
حسین دهقان
دانشکده فنی و مهندس ی جم
H=1
BF=0
90
H=2
BF=-1
H=2
BF=0
88
80
H=1
BF=0
H=1
BF=0
50
H=1
48 BF=0
62
37
6
67
55
49
43
12
32
28
اضافه کردن یک گره
• با اضافه شدن گره اي به درخت AVLممكن است تعادل درخت از بین
برود (گره اي با BF= 2به وجود آيد)
• براي متعادل ساختن درخت پس از اضافه شدن گره اي چرخش
( )rotationانجام مي شود.
حسین دهقان
دانشکده فنی و مهندس ی جم
7
• انواع چرخش ( )rotationدر درخت AVLبر اساس محل اضافه شده
گره Yنسبت به گره Aاست.
• گره Aنزديكترين جد به گره اضافه شده Yاست كه پس از اضافه
شدن BF ،Yبراي آن گره 2مي شود.
A
چرخش
B
h+2
حسین دهقان
دانشکده فنی و مهندس ی جم
8
B
0
0
A
h
BL
BR
درخت متعادل
بعد از چرخشLL ( LL
)rotation
BR
BR
درخت
متعادل
B
AR
AR
2
A
AR
1
1
BL
درخت
نامتعادل
بعد از
0
BL
A
چرخش
0B
h+2
حسین دهقان
دانشکده فنی و مهندس ی جم
B
0
AL
درخت متعادل
بعد از چرخشRR ( RR
)rotation
BR
A
0A
BR
BL
9
-1
درخت
-2متعادل
-1 B
BBR
L
BL
BL
AL
AL
درخت
نامتعادل
بعد از
h
چرخش
C
حسین دهقان
دانشکده فنی و مهندس ی جم
10
0 A
0
LR rotation
1
2 A
0 B
B
0 C
1
0 B
چرخش
-1
B
0C
h
h
AL
BL
CL
0
AL
CL
1 A
-1
B
0C
h
BL
h
AL
CL
CR
CR
CL
BL
CR
0C
A 2
h+2
0
-1 A
B
1C
BL
CR
0C
A
B
h+2
0
2
A
1
B
0 A
B
AL
حسین دهقان
دانشکده فنی و مهندس ی جم
1
-1 C
BL
AL
CL
CR
BL
CL
CR
AL
11
-1
مثال
1
-1
0
0
0
0
0
-1
حسین دهقان
دانشکده فنی و مهندس ی جم
0
0
0
12
2
-1
0
1
0
-1
1
0
0
0
1
-1
-1
گره اضافه
شده
مثال
)non AVL( • اضافه كردن ماههاي ميالدي در درخت دودويي جستجو
• Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Dec
Feb
Apr
Mar
June
Aug
Dec
May
Sept
July
Oct
Nov
حسین دهقان
دانشکده فنی و مهندس ی جم
Jan
13
Jan
Jan
Feb
Apr
June
Aug
Aug
Mar
Feb
Apr
May
Mar
June
May
Sept
July
July
Oct
Mar
Jan
Aug
Apr
Feb
June
July
Oct
Jan
Mar
Aug
Oct
May
Nov
Sept
June
Feb
Apr
July
May
Sept
Nov
Dec
)AVL( مثال
14
گراف
حسین دهقان
دانشکده فنی و مهندس ی جم
15
گراف
حسین دهقان
دانشکده فنی و مهندس ی جم
16
تعریف
• يک گراف از دو مجموعه تشکيل مي شود:
• يک مجموعه محدود غیر تهي از رئوس )V(G
• يک مجموعه (احيانا تهي) از يالها )E(G
حسین دهقان
دانشکده فنی و مهندس ی جم
17
• ) G(V,Eيک گراف را نشان مي دهد
• يک گراف بدون جهت گرافي است که در آن ترتيب رئوس در يک يال
اهميت ندارد(v0, v1) = (v1,v0) .
• يک گراف جهت دار گرافي است که در آن يک يال متناظر با يک زوج
مرتب از رئوس است ><v0, v1> != <v1, v0
انتها
ابتدا
گراف کامل
• گراف کامل :گرافي است که داراي حداکثر تعداد لبه باشد.
• گراف بدون جهت کامل:
0
• گراف جهت دار کامل:
0
حسین دهقان
دانشکده فنی و مهندس ی جم
1
2
G3
n(n-1)/2يال
2
6
1
5
4
G2
گراف غیر کامل
)n(n-1
0
2
3
يال
0
1
1
2
3
3
G1
گراف کامل
}V(G1)={0,1,2,3
E(G1)={(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)}18
})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
گراف
• در يک گراف نمي توان يالي از یک راس به خودش داشت.
• در يک گراف يک يال نمي تواند چند بار ظاهر شود.
حسین دهقان
دانشکده فنی و مهندس ی جم
19
زير گراف
• V(G’`) V(G) and E(G’`) E(G).
0
2
حسین دهقان
دانشکده فنی و مهندس ی جم
0
1
20
2
G3
1
3
G1
مسیر
• يک مسیر از راس vpبه راس vqدر گراف Gدنباله اي از رئوس به
صورت vp, vi , vi , ..., vi , vqاست به نحوي که
) (vp, vi ), (vi , vi ), ..., (vi , vqيالهاي گراف Gباشند.
• طول يک مسیر به صورت تعداد لبه هاي درون آن تعريف مي شود.
n
n
حسین دهقان
دانشکده فنی و مهندس ی جم
21
2
2
1
1
1
0
0
1
2
3
2
0
1
3
1
2
3
مسیر
حسین دهقان
دانشکده فنی و مهندس ی جم
• مسیر ساده (جهت دار)
• مسیري است که در آن تمام راس ها احتماال به جز راس اول و آخر
متمايز باشند.
• دور يا حلقه
• مسیر ساده اي است که راس اول و آخر آن يکي است.
0
2
22
1
3
0
درجه گراف
1
• درجه
• تعداد يالهايي است که با آن تالقي دارند
• براي گراف جهت دار
2
حسین دهقان
دانشکده فنی و مهندس ی جم
• درجه ورودي راس :تعداد يالهايي است که سر آنها به راس مذکور متصل باشد.
• درجه خروجي راس :تعداد يالهايي است که ته آنها به راس مذکور متصل باشد.
• اگر diدرجه راس iدر گراف Gبا nراس و eيال باشد ،تعداد يالها برابر
است با
n 1
23
d ) / 2
i
0
(e
ذخیره گراف
• ماتريس همسايگي
• ليست همسايگي
حسین دهقان
دانشکده فنی و مهندس ی جم
24
ذخیره گراف
• ماتريس همسايگي
حسین دهقان
دانشکده فنی و مهندس ی جم
25
1
1
1
0
1
1
0
1
1
0
1
1
0
1
1
1
0
1
2
3
• پيچيدگي زماني تشخيص تعداد يال گراف و يا تشخيص همبند بودن گراف
• گراف بدون جهت
• گراف جهت دار
)O(n2/2
)O(n2
ذخیره گراف (ليست همسايگي)
0
1
2
3
0
حسین دهقان
دانشکده فنی و مهندس ی جم
1
4
0
5
2
6
1
2
3
26
7
عمليات روي گراف ها
• پيمايش (جستجو)
• جستجوي عمقي
)• Depth First Search (DFS
• جستجوي عرض ي
حسین دهقان
دانشکده فنی و مهندس ی جم
27
)• Breadth First Search (BFS
• درخت پوشا
پيمايش گراف
حسین دهقان
دانشکده فنی و مهندس ی جم
depth first search (DFS): v0, v1, v3, v7, v4, v5, v2, v6
breadth first search (BFS): v0, v1, v2, v3, v4, v5, v6, v7
28
جستجوي عمقي
w
Data structure
adjacency list: O(e)
adjacency matrix: O(n2)
#define FALSE
0
#define TRUE
1
short int visited[MAX_VERTICES];
visited:
[0] [1] [2 [3] [4] [5 [6] [7]
]
]
output: 0 1 3 7 4 5 2 6
جستجوي عرض ي
• براي پياده سازي نياز به
• يک صف
• يک آرايه سراسري : visitedکه در ابتدا به صفر مقدار دهي اوليه مي
شود.
حسین دهقان
دانشکده فنی و مهندس ی جم
30
جستجوي عرض ي
visited:
out
[0] [1] [2 [3] [4] [5 [6] [7]
]
]
0 1 2 3 4 5 6 7
in
output: 0 1 2 3 4 5 6 7
adjacency list: O(e)
adjacency matrix: O(n2)
w
عمليات روي گراف ها
• مولفه هاي همبند
• اگر Gيک گراف بدون جهت باشد مي توان تعيین کرد که آيا گراف همبند است يا نه.
• يکي از دو تابع dfsيا bfsرا احضار کنيم و سپس تعيین کنيم آيا راس مالقات نشده اي وجود دارد يا نه.
• مولفه هاي همبند يک گراف را مي توان با احضارهاي مکرر يکي از دو تابع ) bfs(vيا )dfs(v
تعيین کرد که در آن vراس ي است که هنوز مالقات نشده است.
)adjacency list: O(n+e
)adjacency matrix: O(n2
درخت پوشا
حسین دهقان
دانشکده فنی و مهندس ی جم
33
• چنانچه Gيک گراف همبند باشد
• پيمايش آن به صورت جستجوي عمقي يا عرض ي ،با شروع از هر راس
دلخواه تمام رئوس گراف Gرا مالقات مي کنند.
• درختي که تعدادي از لبه ها و تمام رئوس Gرا در بر دارد ،درخت پوشا
ناميده مي شود.
درخت پوشا
حسین دهقان
دانشکده فنی و مهندس ی جم
34
• با استفاده از جستجوي عمقي يا جستجوي عرض ي مي توان درخت
پوشا را ايجاد کرد
• درخت حاصل از جستجوي عمقي ← درخت پوشاي عمقي
• درخت حاصل از جستجوي عرض ي ← درخت پوشاي عرض ي
عمليات روي گراف ها
• درخت پوشا
• با استفاده از جستجوي عمقي يا جستجوي عرض ي مي توان درخت پوشا را
ايجاد کرد
درخت حاصل از جستجوي عمقي درخت پوشاي عمقي نام دارد
درخت حاصل از جستجوي عرض ي درخت پوشاي عرض ي نام دارد