ساختمان داده‌ها پیمایش گراف. مرور °مشکل: چگونه تمام نودهای گراف را مشاهده کنیم؟ °جستجوی اول عمق دنبال کردن مسیرهای بین راسها. °جستجوی اول سطح دیدن تمام.

Slides:



Advertisements
Similar presentations
Awe sim.
Advertisements

1/20 Planning Chapter 11- Part2 Author: Vali Derhami.
Graph.
معاونت درمان امور مامایی اردیبهشت 90. برای ثبت اطلاعات در برنامه نرم افزاری نظام مراقبت مرگ پریناتال ابتدا لازم است برنامه نرم افزار info-path وپرنیان.
الگوریتم ژنتیکی. تعریف  الگوریتم ژنتیکی، رویه ای تکراری است که راه حل های انتخابیش را بصورت رشته ای از ژنها که کروموزوم نامیده می شوند، بازنمایی می کند.
Definition. قانون بیز P(b|a) = P(a|b)P(b)/P(a) P(b|a) = P(a|b)P(b)/P(a) این قانون برای استنتاج آماری استفاده می شود. این قانون برای استنتاج آماری استفاده.
Decision Tree.
پیدا کردن شواهد علمی. منابع بررسي متون  كتاب ها  گزارش ها  مجله هاي علمي peer reviewed  ايندكس مديكوس  داده هاي الكترونيكي  بانك هاي الكترونيكي.
1 Network Address Translation (NAT). 2 Private Network شبکه خصوصی شبکه ای است که بطور مستقیم به اینترنت متصل نیست در یک شبکه خصوصی آدرس های IP به دلخواه.
Lesson four Grade three
Database Laboratory: Session #4 Akram Shokri. DB-Lab 2 Lab Activity You must already created all tables You have to have inserted proper data in tables.
1/34 Informed search algorithms Chapter 4 Modified by Vali Derhami.
Data Types Modifiers Base data type Size Sign signed int 2 B unsigned float 4 B short double 8 B long char 1 B.
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.
آشنايي با سيستم اعداد.
[c.
راهبرد عقبگرد (Backtracking)
Reproduction Techniques in Animals
فصل 4- محاسبات زمانی در شبکه AoA
ویژگی های DHCP جلوگیری از Conflict سرعت بخشیدن به کارها مدیریت متمرکز
آشنایی با میکروتیک عمادالدین بنگلی MTCNA.
SY800 router mode [AD-14-TB ].
Mobile Robot Kinematics
ساختمان داده ها جداول درهم سازی
ساختمان داده‌ها الگوریتمهای کوتاهترین مسیر
دانشگاه صنعتی امیرکبیر Instructor : Saeed Shiry & Mitchell Ch. 2
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
سیستم‌های مبتنی بر دانش
دانشگاه علوم پزشکی شهید بهشتی
مدیریت مالی و اقتصاد مدیریت موضوع : نقطه سر به سر زمستان 93
فصل دوم جبر بول.
تکنیک دیماتل DEMATEL: decision making trial and evaluation laboratory.
Natural language Understanding James Allen
1.
آموزش کرک کردن نرم افزار ACTIVE HDL
Fundamentals of GA Part 10
Tree Sort.
کوئیز از جلسه قبل) کارخانه ای در حال خرید قطعه‌ای برای یکی از ماشین‌آلات خود می باشد اگر نرخ بهره 10% برای محاسبات فرض شود، دو مدل از قطعه ماشین در دسترس.
ساختمان داده‌ها پیمایش درخت دودویی
درخت جستجوی دودویی درخت جستجوي دودويي: درخت دودويي صفر نود يا بيشتر
بسمه تعالی.
تنظیمات اینترنت اکسپلورر برایMIS
تنظیم مودم Level1 به حالت NAT
Intro تمام موجودات باید قبل از تقسیم DNA خود را همانندسازی کنند
Bucket sort اكرم منوچهري زهرا منوچهري
Reproduction Techniques in Animals
مقاله ام را کجا Submit کنم؟ تهیه و تنظیم: سودابه طاهری و زهره راخ
راهبرد شاخه و حد (Branch and bound)
اهداف درس این جلسه حل مساله کوله پشتی با رویکرد حریصانه مقایسه رویکرد حریصانه با برنامه‌نویسی پویا در حل مساله.
پشته و صف پیوندی Give qualifications of instructors: DAP
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
با تشکر از جناب آقای مهندس بگ محمدی
جستجوی منابع الکترونیک
فصل ششم مدارهای ترتیبی.
ساختمان داده‌ها درختان و درختان دودویی
مدار منطقي مظفر بگ محمدي
سخت افزارهای امنیتی Hardware Security تهیه و ارایه : یونس جوان.
Uniprocessor Scheduling
توزیع میانگین نمونه سعید موسوی.
به نام یکتای دانا فصل اول: متدها و قواعد.
مراحل پیش رو : 1- الگوریتم عقبگرد برای مسئله کوله پشتی صفر و یک
نسبت جرم فرمولی ”جرم اتمی و فرمول تجربی
برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7
ساختمان داده ها مرتب سازی درجی
پشته و صف پیوندی Give qualifications of instructors: DAP
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
ساختمان داده ها گرافها.
Presentation transcript:

ساختمان داده‌ها پیمایش گراف

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

پیمایش گراف °تمام شهرهایی که از فرودگاه هارتفورد قابل دسترسی هستند را پیدا کنید. CHI LA SF NYC Hartford W. DC

پیمایش گراف °تمام نودهای که از u قابل دسترسی هستند را پیدا کنید. °هر نود دارای یک پرچم است که نشان می دهد نود دیده شده است یا خیر. °تمام نودها را ببینید. °بعضی نودها ممکن است به بقیه متصل نباشند.

دموی الگوریتم پیمایش °قدم اول: هارتفورد پیدا کردن همسایه های هارتفورد. { Hartford, NYC, CHI } CHI NYC LA SF Hartford W. DC

ادامه ی دموی الگوریتم پیمایش °قدم دوم: { Hartford, NYC, CHI } پیداکردن همسایه های NYC, CHI { Hartford, NYC, CHI, LA, SF } CHI NYC LA SF Hartford W. DC

ادامه ی دموی الگوریتم پیمایش °قدم سوم: {Hartford, NYC, CHI, LA, SF } پیدا کردن همسایه های LA, SF هیچ همسایه ی دیگری وجود ندارد. CHI NYC LA SF Hartford W. DC

ادامه ی دموی الگوریتم پیمایش ° و در نهایت جواب را پیدا می کنیم. {Hartford, NYC, CHI, LA, SF } CHI NYC LA SF Hartford W. DC

الگوریتم پیمایش گراف 1.Mark all nodes as unvisited 2.Pick a starting vertex u, add u to probing list 3.While ( probing list is not empty) { Remove a node v from probing list Mark node v as visited For each neighbor w of v, if w is unvisited, add w to the probing list }

پیمایش گراف ° گره ی شروع باید یک گره ی اختیاری را انتخاب کنیم و پیمایش را از آنجا شروع کنیم. ° پیمایش اول عمق یالها را آنقدر دنبال کنید تا دچار بن بست شوید. سپس به عقب برگردید و از آخرین نقطه ی انشعاب ادامه دهید. ° پیمایش اول سطح یکی از گره ها را ببینید. سپس همسایه های آنرا ببینید. سپس گره های دو سطح پایینتر و....

پیمایش گراف °پیمایش اول عمق Note that all 8 nodes are visited eventually Start

پیمایش اول عمق °لیست آزمایشی را با پشته پیاده می‌کنیم. °مثال: A’s neighbor: B, C, E B’s neighbor: A, C, F C’s neighbor: A, B, D D’s neighbor: E, C, F E’s neighbor: A, D F’s neighbor: B, D start from vertex A A B C E F D

پیمایش اول عمق °حالت اولیه Visited Vertices { } Probing Vertices { A } Unvisited Vertices { A, B, C, D, E, F } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D A پشته

Depth First Traversal (Cont) °Peek a vertex from stack, it is A, mark it as visited °Find A’s first unvisited neighbor, push it into stack Visited Vertices { A } Probing vertices { A, B } Unvisited Vertices { B, C, D, E, F } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D B A stack A

Depth First Traversal (Cont) °Peek a vertex from stack, it is B, mark it as visited °Find B’s first unvisited neighbor, push it in stack Visited Vertices { A, B } Probing Vertices { A, B, C } Unvisited Vertices { C, D, E, F } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D C B A stack B A A B C E F D

Depth First Traversal (Cont) °Peek a vertex from stack, it is C, mark it as visited °Find C’s first unvisited neighbor, push it in stack Visited Vertices { A, B, C } Probing Vertices { A, B, C, D } Unvisited Vertices { D, E, F } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D D C B A C B A

Depth First Traversal (Cont) °Peek a vertex from stack, it is D, mark it as visited °Find D’s first unvisited neighbor, push it in stack Visited Vertices { A, B, C, D } Probing Vertices { A, B, C, D, E } Unvisited Vertices { E, F } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D D C B E A D C B A

Depth First Traversal (Cont) °Peek a vertex from stack, it is E, mark it as visited °Find E’s first unvisited neighbor, no vertex found, Pop E Visited Vertices { A, B, C, D, E } Probing Vertices { A, B, C, D } Unvisited Vertices { F } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D D C B A D C B E A

Depth First Traversal (Cont) °Peek a vertex from stack, it is D, mark it as visited °Find D’s first unvisited neighbor, push it in stack Visited Vertices { A, B, C, D, E } Probing Vertices { A, B, C, D, F} Unvisited Vertices { F } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D D C B F A D C B A

Depth First Traversal (Cont) °Peek a vertex from stack, it is F, mark it as visited °Find F’s first unvisited neighbor, no vertex found, Pop F Visited Vertices { A, B, C, D, E, F } Probing Vertices { A, B, C, D} Unvisited Vertices { } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D D C B A D C B F A

Depth First Traversal (Cont) °Peek a vertex from stack, it is D, mark it as visited °Find D’s first unvisited neighbor, no vertex found, Pop D Visited Vertices { A, B, C, D, E, F } Probing Vertices { A, B, C } Unvisited Vertices { } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D C B A D C B A

Depth First Traversal (Cont) °Peek a vertex from stack, it is C, mark it as visited °Find C’s first unvisited neighbor, no vertex found, Pop C Visited Vertices { A, B, C, D, E, F } Probing Vertices { A, B } Unvisited Vertices { } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D B A C B A

Depth First Traversal (Cont) °Peek a vertex from stack, it is B, mark it as visited °Find B’s first unvisited neighbor, no vertex found, Pop B Visited Vertices { A, B, C, D, E, F } Probing Vertices { A } Unvisited Vertices { } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D A B A

Depth First Traversal (Cont) °Peek a vertex from stack, it is A, mark it as visited °Find A’s first unvisited neighbor, no vertex found, Pop A Visited Vertices { A, B, C, D, E, F } Probing Vertices { } Unvisited Vertices { } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D A

Depth First Traversal (Cont) °Now probing list is empty °End of Depth First Traversal Visited Vertices { A, B, C, D, E, F } Probing Vertices { } Unvisited Vertices { } –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D stack A B C E F D

پیمایش گراف °پیمایش اول سطح Start Visit ALL neighbors at each step

Breadth First Traversal °Probing List is implemented as queue (FIFO) °Example A’s neighbor: B C E B’s neighbor: A C F C’s neighbor: A B D D’s neighbor: E C F E’s neighbor: A D F’s neighbor: B D start from vertex A A B C E F D

Breadth First Traversal (Cont) °Initial State Visited Vertices { } Probing Vertices { A } Unvisited Vertices { A, B, C, D, E, F } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D A queue

Breadth First Traversal (Cont) °Delete first vertex from queue, it is A, mark it as visited °Find A’s all unvisited neighbors, mark them as visited, put them into queue Visited Vertices { A, B, C, E } Probing Vertices { B, C, E } Unvisited Vertices { D, F } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D A queue BEC

Breadth First Traversal (Cont) °Delete first vertex from queue, it is B, mark it as visited °Find B’s all unvisited neighbors, mark them as visited, put them into queue Visited Vertices { A, B, C, E, F } Probing Vertices { C, E, F } Unvisited Vertices { D } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D BEC queue CFE

Breadth First Traversal (Cont) °Delete first vertex from queue, it is C, mark it as visited °Find C’s all unvisited neighbors, mark them as visited, put them into queue Visited Vertices { A, B, C, E, F, D } Probing Vertices { E, F, D } Unvisited Vertices { } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D CFE queue EDF

Breadth First Traversal (Cont) °Delete first vertex from queue, it is E, mark it as visited °Find E’s all unvisited neighbors, no vertex found Visited Vertices { A, B, C, E, F, D } Probing Vertices { F, D } Unvisited Vertices { } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D EDF queue F D

Breadth First Traversal (Cont) °Delete first vertex from queue, it is F, mark it as visited °Find F’s all unvisited neighbors, no vertex found Visited Vertices { A, B, C, E, F, D } Probing Vertices { D } Unvisited Vertices { } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D F D queue D

Breadth First Traversal (Cont) °Delete first vertex from queue, it is D, mark it as visited °Find D’s all unvisited neighbors, no vertex found Visited Vertices { A, B, C, E, F, D } Probing Vertices { } Unvisited Vertices { } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D D queue

Breadth First Traversal (Cont) °Now the queue is empty °End of Breadth First Traversal Visited Vertices { A, B, C, E, F, D } Probing Vertices { } Unvisited Vertices { } A B C E F D –A’s neighbor: B C E –B’s neighbor: A C F –C’s neighbor: A B D –D’s neighbor: E C F –E’s neighbor: A D –F’s neighbor: B D queue

تفاوت بین اول سطح و اول عمق ° پیمایش اول عمق (DFT) ترتیب: A, B, C, D, E, F °پیمایش اول سطح (BFT) ترتیب: A, B, C, E, F, D A B C E F D

پیچیدگی پیمایش گراف °ماتریس مجاورت Cost: O(N*N) = O(N 2 ) °لیست مجاورت برای هر نود v یک درجه وجود دارد. هزینه پیمایش برابر مجموع درجه ی نودها است. (2E) لذا پیمایش از درجه ی O(E) خواهد بود.