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

Slides:



Advertisements
Similar presentations
Awe sim.
Advertisements

Decision Tree.
Ali Karimpour Associate Professor Ferdowsi University of Mashhad ADVANCED CONTROL Reference: Chi-Tsong Chen, “Linear System Theory and Design”, 1999.
فصل دوم:Questions For Review. مقایسه Decision Making با Problem Solving  اصولا مساله وقتی پیش می آید که سیستم پاسخگو به اهدافش نباشد و به نتایج پیش گویی.
دسته بندی نیمه نظارتی (2)
1 Network Address Translation (NAT). 2 Private Network شبکه خصوصی شبکه ای است که بطور مستقیم به اینترنت متصل نیست در یک شبکه خصوصی آدرس های IP به دلخواه.
Lesson four Grade three
موضوع: دبير مربوطه: آموزشگاه : اجرا : عبارتهای جبری خانم مقصودی
تمام اسب ها همرنگ هستند! Basis: h = 1 We have only one horse. Clearly all horses in the set are the same color. Inductive hypothesis: In any set of up.
مظفر بگ محمدی دانشگاه ایلام Generics. کدهای عمومی 2 یکی از اهداف OOP ایجاد قابلیت نوشتن برنامه های عمومی با قابلیت استفاده ی مجدد است. کدهای چندریخت تا.
Stepper Motor Configuration
ساختمان داده‌ها پیمایش گراف. مرور °مشکل: چگونه تمام نودهای گراف را مشاهده کنیم؟ °جستجوی اول عمق دنبال کردن مسیرهای بین راسها. °جستجوی اول سطح دیدن تمام.
Models of Computation نظریه زبان ها و ماشین ها Iranai.blog.ir IRANAI.BLOG.ir _
Arrangements of Lines C omputational Geometry By Samaneh shafi naderi
CS Constraint Satisfaction Constraint Satisfaction Problems Chapter 5 Section 1 – 3 Modified by Vali Derhami.
گراف وحيدي پور. تعاريف مجموعه اي غير تهي از راس مجموعه اي از زوج راسها كه بوسيله يال بهمديگر متصل هستند. a b d e.
آشنايي با سيستم اعداد.
LINEAR CONTROL SYSTEMS Ali Karimpour Associate Professor Ferdowsi University of Mashhad.
[c.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
مکان یابی در شبکه های حسگر بیسیم
دانشکده جغرافیا گروه سنجش از دور و GIS بهینه سازی مسیریابی مبتنی بر خوشه ‌ بندی با تقاضای تصادفی و ظرفیت محدود …. عنوان پیشنهادی رساله: دانشجو:کیوان باقری.
فصل 4- محاسبات زمانی در شبکه AoA
تمرین هفتم بسم الله الرحمن الرحیم درس یادگیری ماشین محمدعلی کیوان راد
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
SY800 router mode [AD-14-TB ].
ساختمان داده ها جداول درهم سازی
ساختمان داده‌ها الگوریتمهای کوتاهترین مسیر
Odd-even merge sort مرتب سازی.
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
آموزش مقدمات MATLAB سیگنال ها و سیستم ها دانشگاه صنعتی شریف پائیز 86
مدیریت مالی و اقتصاد مدیریت موضوع : نقطه سر به سر زمستان 93
فصل دوم جبر بول.
حافظه ی نهان دانشگاه ایلام.
تکنیک دیماتل DEMATEL: decision making trial and evaluation laboratory.
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
SSO Single Sign-on Systems
آموزش و یادگیری Education and Training
1.
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
Tree Sort.
کوئیز از جلسه قبل) کارخانه ای در حال خرید قطعه‌ای برای یکی از ماشین‌آلات خود می باشد اگر نرخ بهره 10% برای محاسبات فرض شود، دو مدل از قطعه ماشین در دسترس.
مدارهای منطقی فصل سوم - خصوصیات توابع سويیچی
ساختمان داده‌ها پیمایش درخت دودویی
سميرا قانوني زهرا معدني
دینامیک سیستمهای قدرت مدرس: دکتر مهدی بانژاد
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
Bucket sort اكرم منوچهري زهرا منوچهري
آشوب در سیستمهای دینامیکی
معماری سرویس گرا (SOA).
اهداف درس این جلسه حل مساله کوله پشتی با رویکرد حریصانه مقایسه رویکرد حریصانه با برنامه‌نویسی پویا در حل مساله.
پشته و صف پیوندی Give qualifications of instructors: DAP
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
IN THE NAME OF GOD MATH SABA KARBALAEI
Angular Kinetics مهدی روحی بهار 85.
فصل ششم مدارهای ترتیبی.
ساختمان داده‌ها درختان و درختان دودویی
مدار منطقي مظفر بگ محمدي
توزیع میانگین نمونه سعید موسوی.
به نام یکتای دانا فصل اول: متدها و قواعد.
مراحل پیش رو : 1- الگوریتم عقبگرد برای مسئله کوله پشتی صفر و یک
نسبت جرم فرمولی ”جرم اتمی و فرمول تجربی
عملیات با رشته‌ها موسوی ندوشنی ویراست 1389 دانشگاه صنعت آب و برق.
برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7
kbkjlj/m/lkiubljj'pl;
ساختمان داده ها مرتب سازی درجی
پشته و صف پیوندی Give qualifications of instructors: DAP
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
Presentation transcript:

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

Konigsberg bridge problem (1736):

جواب این سوال خیر است، اما چگونه آنرا ثابت کنیم؟ پلهای کوینسبرگ اگر از یکی از خشکیها شروع کنید آیا امکان دارد که از تمام پلها حداکثر یکبار استفاده کرد و به سر جای اول بازگشت؟ C d c g A D e a b f B جواب این سوال خیر است، اما چگونه آنرا ثابت کنیم؟

Konigsberg = Graph Problem مساله ی پلهای کویسنبرگ یک گراف است. تعریف گراف: گراف G شامل دو مجموعه ی V و E است. V یک مجموعه ی محدود و غیرپوچ از راسها است. E یک مجموعه از جفت-راس ها است که به هر جفت یک یال می گوییم.

مثال: V: 0, 1, 2, 3 E: (0,1), (0,2), (0,3) (1,2), (1,3), (2,3) E: Empty 1 2 3 1 2 3 V: 0, 1, 2, 3 E: (0,1), (0,2), (1,3) درختان زیر مجموعه ی گرافها هستند. 1 2 3

تعاریف گراف: گراف بدون جهت: جفت راس ها که نماینده ی یالها هستند نامرتب هستند. (u,v) و (v,u)یکی هستند. گراف جهتدار: هر یال توسط یک زوج مرتب نمایش داده می شود. (u,v) و (v,u)یکی نیستند.

جهتدار و بدون جهت گراف Aبدون جهت است. 1 2 1 2 1 2 3 3 3 گراف Aبدون جهت است. (1,0) و (0,1) دو یال یکسان هستند. گراف C جهت دار است و با گراف A معادل است. گراف B جهتدار است و با A معادل نیست. یال (1,0) وجود ندارد.

محدودیتهای گراف فرض کنید که یالها و راسها مجموعه هستند. دو راس یال یکسان نیستند. یال تکراری نداریم. Self 1 2 Repeated 3

تعاریف گراف حداکثر تعداد یالهای غیر تکراری در گراف بدون جهت با n نود برابر است با: n*(n-1) / 2 به این گراف کامل گفته می شود. Complete: 6 edges = (4 * 3) / 2 1 2 1 2 Not Complete: (4*3)/2 != 4 edges 3 3

تعاریف گراف اگر (u, v) یکی از یالهای E(G) باشد: مثال: یال (u,v) با راسهای u و v تلاقی دارد. مثال: Vertex 0 is adjacent to 1 and 2 Vertex 1 is adjacent to 0, 2, and 3 Vertex 2 is adjacent to 0 and 1 Vertex 3 is adjacent to 1 Edges incident on vertex 2: (0,2), (1,2) Edges incident on vertex 3: (1,3) 1 2 3

تعاریف گراف زیرگراف G’ از گراف G یک گراف است که V(G ’) زیر مجموعه ی V(G) و E(G’) زیر مجموعه ی E(G) است. زیرگرافها 1 1 2 1 2 3 3 1 2

تعاریف گراف مسیر از راس u به راس v در گراف G دنباله ای از راسها مثل u, i1, i2, …, ik, v است که یالهای (u,i1), (i1,i2)…(ik,v) در گراف G هستند. در گراف جهتدار، جهت تمام یالها باید یکسان و درست باشد. طول مسیر برابر تعداد یالها است. مسیر ساده مسیری است که تمام راسها به جز اولی و آخری متفاوت هستند.

تعاریف گراف Paths from 1 to 3: (1,3) 1,3 [Simple] Length = 1 (1,0),(0,2),(2,1),(1,3) 1,0,2,1,3 Length = 4 (1,2),(2,0),(0,1),(1,3) 1,2,0,1,3 (1,0),(0,2),(2,3) 1,0,2,3 [Simple] Length = 3 Many more that repeat internally, Not simple, Length > 4 1 2 3

تعاریف گراف دور مسیری است که ابتدا و انتهای آن یکی هستند. Cycles to 1: Cycles to 1: 1,0,2,3,1 1,0,2,1 1,3,2,1 1,2,1 1,0,1 1,3,1 1 2 3

تعاریف گراف اگر مسیری بین راسهای u و v در گراف G برقرار باشد می گوییم این دو گره متصل هستند. می گوییم گراف بدون جهت G یکپارچه است اگر و فقط اگر برای هر زوج u و v متعلق به گراف یک مسیر از u به v موجود باشد. یک جزء یکپارچه ی گراف یک زیرگراف یکپارچه ی حداکثر است. هر گراف می تواند یک یا چند جزء یکپارچه داشته باشد.

تعاریف گراف گراف G4: V(G4): 0,1,2,3,4,5,6,7 4 1 2 5 6 3 7 گراف G4: V(G4): 0,1,2,3,4,5,6,7 E(G4): (0,1), (0,2), (1,3), (2,3), (4,5), (5,6), (6,7) گراف G4 دو جزء یکپارچه دارد (H1 (0-3) و H2 (4-7)).

تعاریف گراف درخت یک گراف یکپارچه ی بدون دور است. از هر نود یک مسیر به بقیه ی نودها وجود دارد. به خاطر عدم وجود دور این مسیر یکتا است. 1 4 2 3

تعاریف گراف می گوییم گراف جهتدار G قویاً یکپارچه است اگر برای هر زوج راس متعلق به V(G) مثل u و v یک مسیر جهتدار از u به v و از v به u موجود باشد. یک جزء قویاً یکپارچه یک زیرگراف بیشینه از گراف است که قویاً یکپارچه است.

تعاریف گراف Graph G5: V(G5): 0,1,2 E(G5): (0,1), (1,0), (1,2) 1 2 Graph G5: V(G5): 0,1,2 E(G5): (0,1), (1,0), (1,2) G5 قویاً یکپارچه نیست. (بین ۲ و ۱ مسیری وجود ندارد). زیرگرافهای H1 (0-1) و H2 (2) قویاً متصل هستند.

تعاریف گراف درجه ی هر نود برابر تعداد یالهایی است که با نود تلاقی دارند. در گرافهای جهتدار: درجه ی ورودی هر راس برابر یالهای وارده به آن راس هستند. درجه ی خروجی هر راس برابر یالهای خارج شده از آن راس هستند.

تعاریف گراف Degree of Vertices: 0, 3 => Degree 2 Degree of Vertices: 0, 3 => Degree 2 1, 2 => Degree 3 1 2 3 0 Out-Degree : 1 In-Degree: 0 1 Out-Degree : 1 In-Degree: 0 2 Out-Degree : 0 In-Degree: 2 1 2

تعاریف گراف برای یک گراف بدون جهت که در آن درجه ی گره ی viبا di برابر است. تعداد یالها برابر است با:

تعاریف گراف Degree of Vertices: 0, 3 => Degree 2 Degree of Vertices: 0, 3 => Degree 2 1, 2 => Degree 3 |E| = Sum of Degrees / 2 = (2+2+3+3)/2 = 10/2 = 5 {Correct!} 1 2 3 |E| max = Sum of Degrees / 2 = (2 + 2 + 2) / 2 = 6/2 = 3 {Correct!} 1 |E| Max = ?, All Binary 2

نمایش گراف به چه عملکردهای نیاز داریم؟ دو طرز نمایش عمده: مجموعه ی راسها. مجموعه ی یالها. دو طرز نمایش عمده: ماتریس مجاورت. لیست مجاورت.

ماتریس مجاورت گراف G = (V,E) دارای |V| = n, n >= 1 ماتریس مجاورت: یک بردار n در n دو بعدی است و A[i][j] = 1 اگر یک یال (i,j) بین i و j در E وجود داشته باشد. V0 V1 V2 V3 1 1 2 3

ماتریس مجاورت در ماتریس مجاورت ردیفها نماینده ی درجه ی خروجی هستند. V0 1 1 2 3

ماتریس مجاورت ماتریس مجاورت گرافهای بدون جهت متقارن است. در گراف بدون جهت مجموع اعداد هر ردیف برابر درجه ی آن نود است. V0 V1 V2 V3 1 1 2 3

ماتریس مجاورت در گراف جهتدار درجه ی خروجی هر نود برابر جمع ردیفها و درجه ی ورودی هر نود برابر جمع ستونها است. V0 V1 V2 V3 1 1 2 3

ماتریس مجاورت V0 V1 V2 V3 1 جواب سوالات زیر چه می تواند باشد؟ تعداد یالهای گراف؟ O(n2-n) آیا گراف یکپارچه است؟ V0 V1 V2 V3 1 1 2 3

ماتریس مجاورت اگر گراف پراکنده باشد ماتریس چگونه است؟ V0 V1 V2 V3 V4 اگر گراف پراکنده باشد ماتریس چگونه است؟ V0 V1 V2 V3 V4 V5 V6 V7 1 4 5 6 1 2 7 3

ماتریس مجاورت ما دوست داریم برای شمردن یالها O(|E|) عمل انجام دهیم. اما استفاده از ماتریس مجاورت منجر به O(n2) می‌شود. در گرافهای مجتمع n2 و |E| به هم نزدیک هستند. اما در گرافهای پراکنده |E| خیلی از n2 کمتر است. راه حل: استفاده از لیست پیوندی فقط یالهای موجود را ذخیره کنید. پیاده سازی آن کمی پیچیده تر است ولی موجب کاهش زمان می شود.

لیست مجاورت به ازای هر نود یک لیست پیوندی داریم که نشان دهنده ی نودهایی است که با این نود همسایه هستند. 1 2 1 3 1 2 2 3 3 1 2 3 ترتیب نودها در لیست پیوندی مهم نیست.

لیست مجاورت گراف بدون جهت: n راس و e یال. برای محاسبه ی درجه ی هر راس باید تعداد عناصر لیست مربوطه را پیدا کنیم. هزینه ی محاسبه ی تعداد یالهای گراف برابر O(n + 2*e) است.

لیست مجاورت برای گرافهای جهتدار فقط نودهایی در لیست پیوندی هر نود قرار دارند که می توان از این نود به آنها رسید و با نود همسایه هستند. محاسبه ی تعداد یالها و درجه ی خروجی هر نود راحت است. محاسبه ی درجه ی ورودی نودها راحت نیست. Array of Head Node Pointers 2 1 2 1 3 2 3 3 2 ترتیب لیست پیوندی اهمیتی ندارد.

لیست مجاورت برای محاسبه ی درجه ی ورودی هر نود مجبوریم لیست مجاورت را به طور معکوس بسازیم. Array of Head Node Pointers 1 1 2 1 2 3 3 3 1

اعمال گراف InsertVertex(Vertex v); // Insert v into graph with no incident edges InsertEdge(Vertex u, Vertex v); // Insert edge (u,v) into graph DeleteVertex(Vertex v); // Delete v and all edges incident to it DeleteEdge(Vertex u, Vertex v); //Delete edge (u,v) from graph IsEmpty(); // if graph has no vertices return true List<Vertex> Adjacent(Vertex v); // return list of all vertices adjacent to vertex v

گراف وزندار Could store weights in adjacency matrix (just need a non-zero entry) 0 1 2 3 0 0 60 40 55 1 60 0 0 0 2 40 0 0 50 3 55 0 50 0 If using lists, add another field to node Mehran Ilam 1 60 40 Sarableh 2 55 50 3 Ivan