Lecture 16: Graphs
Grafiklarni ifodalash va ulardan foydalanish
Download 1.78 Mb.
|
lecture16.en.uz
- Bu sahifa navigatsiya:
- Otishlar Kenglik Birinchi qidiruv
- Kenglik Birinchi qidiruv
- Chuqurlikdagi birinchi qidiruv (DFS)
- Chuqurlik Birinchi qidiruv
Grafiklarni ifodalash va ulardan foydalanishQo'shnilik matritsasi
6 2 3 4 5 0 1 Ina[u][v] qo'shnilik matritsasi 1 ga teng, agar chekka bo'lsa (u, v), aks holda 0. Eng yomon vaqtMurakkablik (|V| = n, |E| = m): Edge qo'shish: Edgeni olib tashlash: Tekshirish chekkasi (u, v): Olingqo'shnilar ningu: Olingqo'shnilar ningu: Kosmik murakkablik: Qo'shnilar ro'yxati
6 2 3 4 5 0 1 1 → 2 0 → 3 0 → 3 3 → 4 5 1 → 2 → 5 bo'lgan massivelementqo'shnilari ro'yxatini o'z ichiga oladi. Yo'naltirilgan grafiklar:qo'shnilar ro'yxati(a[u] hamma uchun v bor (u, v) E da) Vaqt murakkabligi (|V| = n, |E| = m): Edge qo'shish: O'chirishChet (u, v): Tekshirish chekkasi (u, v): Qo'shnilaringizni oling (tashqariga): Qo'shnilaringizni oling (in): Kosmik murakkablik: Har bir tugun uchun bog'langan ro'yxatni ishlatamiz deylik. Qo'shnilar ro'yxati
6 2 3 4 5 0 1 1 → 2 0 → 3 0 → 3 3 → 4 5 1 → 2 → 5 bo'lgan massiv element qo'shnilar ro'yxatini o'z ichiga oladi. Yo'naltirilgan grafiklar:qo'shnilar ro'yxati(a[u] hamma uchun v bor (u, v) E da) Vaqt murakkabligi (|V| = n, |E| = m): Edge qo'shish: Edgeni olib tashlash: Tekshirish chekkasi (u, v): Qo'shnilaringizni oling (tashqariga): Qo'shnilaringizni oling (in): Kosmik murakkablik: Bog'langan ro'yxatlarni xesh-jadvallarga almashtiring va bajaring amaliyotda tahlil qilish. Shartnomalar
O'tishlarKenglik Birinchi qidiruv
F B C D A E G H I J A B A B E C D D F G B D E H E C C F F G G I G H H I I qidiruv (grafik) toVisit.enqueue(birinchi cho'qqi) birinchi uchini sifatida belgilangko'rgan esa(tashrif buyurmoqbo'sh emas) joriy =toVisit.dequeue() uchun(v:hozirgi.qo‘shnilar()) agar (v emasko'rgan) v ko'rgandek belgilang toVisit.enqueue(v) Kenglik Birinchi qidiruvF B C D A E G H I J
qidiruv (grafik) toVisit.enqueue(birinchi cho'qqi) birinchi uchini sifatida belgilangko'rgan esa(tashrif buyurmoqbo'sh emas) joriy =toVisit.dequeue() uchun(v:hozirgi.qo‘shnilar()) agar (v emasko'rgan) v ko'rgandek belgilang toVisit.enqueue(v) Ishlash vaqtiqidiruv (grafik) toVisit.enqueue(birinchi cho'qqi) birinchi uchini sifatida belgilangko'rgan esa(tashrif buyurmoqbo'sh emas) joriy =toVisit.dequeue() uchun(v:hozirgi.qo‘shnilar()) agar (v emasko'rgan) v ko'rgandek belgilang toVisit.enqueue(v) Biz har bir cho'qqiga ko'pi bilan ikki marta va har bir chekkaga ko'pi bilan bir marta tashrif buyuramiz: Ushbu kod quyidagicha ko'rinishi mumkin: aylanib yuradigan halqamarta Atrofda aylanib yuradigan pastadir ichidamarta, Demak, aytishingiz mumkin Bu chegara qattiq emas, Looplar haqida o'ylamang, umuman nima sodir bo'lishini o'ylab ko'ring. Necha martajoriyo'zgardi? Bir chekka necha marta aniqlash uchun ishlatiladihozirgi.qo‘shnilar? Amalga oshirish
Chuqurlikdagi birinchi qidiruv (DFS)
bfs(grafik) toVisit.enqueue(birinchi cho'qqi) birinchi uchini sifatida belgilangko'rgan esa(tashrif buyurmoqbo'sh emas) joriy =toVisit.dequeue() uchun(v:hozirgi.qo‘shnilar()) agar (v emasko'rgan) v ko'rgandek belgilang toVisit.enqueue(v) dfs(grafik) tashrif buyurmoq.Durang(birinchicho'qqi) birinchi uchini sifatida belgilangko'rgan esa(tashrif buyurmoqbo'sh emas) joriy =tashrif buyurmoq.pop() uchun(v:hozirgi.qo‘shnilar()) agar (v emasko'rgan) v ko'rgandek belgilang tashrif buyurmoq.Durang(v) Chuqurlik Birinchi qidiruvF B C D A E G H I J
A B A B E C D D F G B E H E C F G I H H I G F I C D dfs(grafik) tashrif buyurmoq.Durang(birinchicho'qqi) birinchi uchini sifatida belgilangko'rgan esa(tashrif buyurmoqbo'sh emas) joriy =tashrif buyurmoq.pop() uchun(v:hozirgi.qo‘shnilar()) agar (v emasko'rgan) v ko'rgandek belgilang tashrif buyurmoq.Durang(v) DFS
BFS va DFS
Download 1.78 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling