1 / 35

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

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

piera
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. درخت AVL حسین دهقان دانشکده فنی و مهندسی جم

  3. انگیزه • درخت دودويي جستجو (BST) در حالتي كه كامل باشد ساختار مناسبي براي عمليات ديكشنري است (O(lgn)) • در بدترين حالت، درخت دودويي جستجو به يك ليست پيوندي تبديل مي شود (O(n)) • روشهايي وجود دارد كه درخت دودويي جستجو (نزديك به) دودويي كامل نگهداري شود • AVL (Adelson, Velskii, Landis) • درخت 3-2 (2-3- Tree) • درخت 4-3-2 (2-3-4- Tree) • درخت قرمز سياه (Red Black Tree) حسین دهقان دانشکده فنی و مهندسی جم

  4. درخت AVL • ضريب تعادل (BF: Balance Factor) براي هر گره T در درخت دودويي برابر است با BF=hL-hR كه در آن hLو hRبه ترتيب ارتفاع زيردرختان چپ و راست Tاست. • در AVLtree ، BF براي هر گره درخت يكي از مقادير 1،0، يا -1 است. حسین دهقان دانشکده فنی و مهندسی جم

  5. مثال H=0 BF=0 H=1 BF=1 H=1 BF=-1 H=1 BF=0 32 15 17 48 H=0 BF=0 H=0 BF=0 H=0 BF=0 H=0 BF=0 37 12 43 49 H=2 BF=1 حسین دهقان دانشکده فنی و مهندسی جم 62 H=2 BF=-1 62 H=1 BF=1 55 H=0 BF=0 H=0 BF=0 67 55 H=1 BF=-1 67 H=0 BF=0 50 H=0 BF=0 50

  6. مثال H=4 BF=-1 44 H=3 BF=1 H=2 BF=-1 17 78 H=1 BF=0 H=2 BF=0 H=1 BF=0 12 32 50 88 حسین دهقان دانشکده فنی و مهندسی جم H=1 BF=0 H=1 BF=0 28 37 62 80 90 48 43 49 55 67

  7. اضافه کردن یک گره • با اضافه شدن گره اي به درخت AVLممكن است تعادل درخت از بين برود (گره اي با BF= 2به وجود آيد) • براي متعادل ساختن درخت پس از اضافه شدن گره اي چرخش (rotation) انجام مي شود. • انواع چرخش (rotation) در درخت AVL بر اساس محل اضافه شده گره Y نسبت به گره Aاست. • گره A نزديكترين جد به گره اضافه شده Y است كه پس از اضافه شدن Y، BF براي آن گره 2 مي شود. حسین دهقان دانشکده فنی و مهندسی جم

  8. 1 A چرخش 0 B h h+2 AR BL BR درخت متعادل 2 0 A B 0 1 A B حسین دهقان دانشکده فنی و مهندسی جم AR BL BL BR BR AR درخت نامتعادل بعد از insert درخت متعادل بعد از چرخشLL (LL rotation)

  9. -1 چرخش A 0 B h h+2 AL BL BR درخت متعادل -2 0 A B 0 -1 A حسین دهقان دانشکده فنی و مهندسی جم B BR AL BR BL AL BL BL درخت متعادل بعد از چرخشRR (RR rotation) درخت نامتعادل بعد از insert

  10. چرخش LR rotation 0 1 2 C A A 1 0 0 0 A B B B 0 C حسین دهقان دانشکده فنی و مهندسی جم

  11. 0 1 2 A A C 0 -1 0 -1 B B B A h+2 0 1 C C h AL AL h AL CL CR BL BL BL CL CL CR CR 0 1 2 A A C 0 -1 1 0 B B B A h+2 0 -1 C C h AL AL h AL CL CR BL BL BL CL CL CR CR چرخش حسین دهقان دانشکده فنی و مهندسی جم

  12. -1 مثال 1 -1 0 0 0 0 0 -1 0 2 -1 -1 حسین دهقان دانشکده فنی و مهندسی جم 0 1 0 0 0 1 0 0 1 0 -1 -1 گره اضافه شده

  13. مثال • اضافه كردن ماههاي ميلادي در درخت دودويي جستجو (non AVL) • Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Dec Jan Feb Mar حسین دهقان دانشکده فنی و مهندسی جم Apr June May Aug Sept July Dec Oct Nov

  14. Jan Aug Feb Mar Mar Feb Apr June May Apr June May Sept July Aug July Oct Mar Jan Oct Aug Jan Mar Sept May Aug June Oct Feb Apr June Feb Nov Apr July July Sept May Dec Nov Jan مثال (AVL)

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

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

  17. انتها ابتدا تعریف • يک گراف از دو مجموعه تشکيل مي شود: • يک مجموعه محدود غير تهي از رئوس V(G) • يک مجموعه (احيانا تهي) از يالها E(G) • G(V,E)يک گراف را نشان مي دهد • يک گراف بدون جهت گرافي است که در آن ترتيب رئوس در يک يال اهميت ندارد.(v0, v1) = (v1,v0) • يک گرافجهتدارگرافي است که در آن يک يال متناظر با يک زوج مرتب از رئوس است <v0, v1> != <v1, v0> حسین دهقان دانشکده فنی و مهندسی جم

  18. 0 0 0 0 1 2 1 2 1 2 1 3 3 G1 3 6 5 4 G2 2 G3 گراف کامل • گراف کامل : گرافي است که داراي حداکثر تعداد لبه باشد. • گراف بدون جهت کامل: n(n-1)/2يال • گراف جهت دار کامل: n(n-1) يال حسین دهقان دانشکده فنی و مهندسی جم گرافکامل گرافغيرکامل 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>}

  19. گراف • در يک گراف نمي توان يالي از یک راس به خودش داشت. • در يک گراف يک يال نمي تواند چند بار ظاهر شود. حسین دهقان دانشکده فنی و مهندسی جم

  20. 0 0 1 2 1 3 G1 2 G3 زير گراف • V(G’`)  V(G) and E(G’`)  E(G). حسین دهقان دانشکده فنی و مهندسی جم

  21. 0 0 0 1 2 1 2 1 2 3 3 3 مسیر • يک مسير از راس vp به راس vq در گراف Gدنباله اي از رئوس به صورت vp, vi1, vi2, ..., vin, vq است به نحوي که (vp, vi1), (vi1, vi2), ..., (vin, vq) يالهاي گراف Gباشند. • طوليکمسير به صورت تعداد لبه هاي درون آن تعريف مي شود. حسین دهقان دانشکده فنی و مهندسی جم

  22. 0 1 2 3 مسیر • مسير ساده (جهت دار) • مسيري است که در آن تمام راس ها احتمالا به جز راس اول و آخر متمايز باشند. • دور يا حلقه • مسير ساده اي است که راس اول و آخر آن يکي است. حسین دهقان دانشکده فنی و مهندسی جم

  23. 0 1 2 درجه گراف • درجه • تعداد يالهايي است که با آن تلاقي دارند • براي گراف جهت دار • درجهوروديراس: تعداد يالهايي است که سر آنها به راس مذکور متصل باشد. • درجهخروجيراس: تعداد يالهايي است که ته آنها به راس مذکور متصل باشد. • اگر diدرجه راس iدر گراف Gبا nراس و eيال باشد، تعداد يالها برابر است با حسین دهقان دانشکده فنی و مهندسی جم

  24. ذخیره گراف • ماتريس همسايگي • ليست همسايگي حسین دهقان دانشکده فنی و مهندسی جم

  25. 0 1 2 3 ذخیره گراف • ماتريس همسايگي • پيچيدگي زماني تشخيص تعداد يال گراف و يا تشخيص همبند بودن گراف • گراف بدون جهت O(n2/2) • گراف جهت دار O(n2) حسین دهقان دانشکده فنی و مهندسی جم

  26. 1 4 0 5 2 7 0 3 6 0 1 1 2 2 3 ذخیره گراف (ليستهمسايگي) حسین دهقان دانشکده فنی و مهندسی جم

  27. عمليات روي گراف ها • پيمايش (جستجو) • جستجوي عمقي • Depth First Search (DFS) • جستجوي عرضي • BreadthFirstSearch(BFS) • درخت پوشا حسین دهقان دانشکده فنی و مهندسی جم

  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

  29. w جستجوي عمقي Data structure adjacency list: O(e) adjacency matrix: O(n2) #define FALSE 0 #define TRUE 1 short int visited[MAX_VERTICES]; [0] [1] [2] [3] [4] [5] [6] [7] visited: output: 0 1 3 7 4 5 2 6

  30. جستجوي عرضي • براي پياده سازي نياز به • يک صف • يک آرايه سراسري visited :که در ابتدا به صفر مقدار دهي اوليه مي شود. حسین دهقان دانشکده فنی و مهندسی جم

  31. جستجوي عرضي [0] [1] [2] [3] [4] [5] [6] [7] visited: out 0 1 2 3 4 5 6 7 in 0 1 2 3 4 5 6 7 output: adjacency list: O(e) adjacency matrix: O(n2) w

  32. عمليات روي گراف ها • مولفه هاي همبند • اگر Gيک گراف بدون جهت باشد مي توان تعيين کرد که آيا گراف همبند است يا نه. • يکي از دو تابع dfsيا bfsرا احضار کنيم و سپس تعيين کنيم آيا راس ملاقات نشده اي وجود دارد يا نه. • مولفه هاي همبند يک گراف را مي توان با احضارهاي مکرر يکي از دو تابع bfs(v) يا dfs(v)تعيين کرد که در آن v راسي است که هنوز ملاقات نشده است. adjacency list: O(n+e) adjacency matrix: O(n2)

  33. درخت پوشا • چنانچه Gيک گراف همبند باشد • پيمايش آن به صورت جستجوي عمقي يا عرضي، با شروع از هر راس دلخواه تمام رئوس گراف G را ملاقات مي کنند. • درختي که تعدادي از لبه ها و تمام رئوس G را در بر دارد، درختپوشاناميده مي شود. حسین دهقان دانشکده فنی و مهندسی جم

  34. درخت پوشا • با استفاده از جستجوي عمقي يا جستجوي عرضي مي توان درخت پوشا را ايجاد کرد • درخت حاصل از جستجوي عمقي ← درخت پوشاي عمقي • درخت حاصل از جستجوي عرضي ← درخت پوشاي عرضي حسین دهقان دانشکده فنی و مهندسی جم

  35. عمليات روي گراف ها • درخت پوشا • با استفاده از جستجوي عمقي يا جستجوي عرضي مي توان درخت پوشا را ايجاد کرد درخت حاصل از جستجوي عمقي درخت پوشاي عمقي نام دارد درخت حاصل از جستجوي عرضي درخت پوشاي عرضي نام دارد

More Related