19. Прима-Дeйкстра алгoритми. Вақт бўйича самарадoрлигини баҳoлаш



Download 140,24 Kb.
bet6/7
Sana13.04.2021
Hajmi140,24 Kb.
#63261
1   2   3   4   5   6   7
Bog'liq
AL JT mustaqil ish

Chiqish natijasi:

Vertex manbadan masofa

0 0

1 4


2 12

3 19


4 21

5 11


6 9

7 8


8 14

Izohlar:
1) Kod eng qisqa masofani hisoblaydi, ammo yo'l to'g'risidagi ma'lumotni hisoblamaydi. Ota-onalar massivini yaratamiz, masofa yangilanganida ota-ona massivini yangilaymiz (masalan, primning bajarilishi kabi ) va undan foydalanib, manbadan turli balandliklargacha eng qisqa yo'lni ko'rsatamiz.

2) Kod yo'naltirilmagan grafik uchun, xuddi shu dijkstra funktsiyasi yo'naltirilgan grafikalar uchun ham ishlatilishi mumkin.

3) Kod manbadan barcha vertikallarga eng qisqa masofani topadi. Agar bizni manbadan bitta maqsadgacha bo'lgan qisqa masofaga qiziqish bildirsa, tanlangan minimal masofa uchi nishonga teng bo'lganda biz halqa sindirishimiz mumkin (algoritmning 3.a qadam).

4) Amalga oshirishning vaqt murakkabligi - O (V ^ 2). Agar kirish grafigi qo'shni ro'yxat yordamida taqdim etilsa , uni ikkilik to'plash yordamida O (E log V) ga kamaytirish mumkin. Qarang
qo'shnilik ro'yxati vakolatxonasi uchun Dijkstra ning Algoritm batafsil ma'lumot uchun.

5) Dijkstraning algoritmi og'irligi qirralari salbiy bo'lgan grafikalar uchun ishlamaydi. Salbiy vazn qirralariga ega grafikalar uchun Bellman-Ford algoritmidan foydalanish mumkin, yaqin orada biz uni alohida post sifatida ko'rib chiqamiz.

2Dijkstra alogoritmi haqida lavha.

Prim algoritmi grafika uchun barcha tugunlarni bog'laydigan va barcha tugunlarni bog'laydigan daraxtlar orasida eng kam xarajat keltiradigan daraxt bo'lgan minimal grafik daraxtini quradi . Biroq, MSTdagi har qanday ikkita tugun orasidagi yo'lning uzunligi asl grafikdagi ushbu ikki tugun orasidagi eng qisqa yo'l bo'lmasligi mumkin. MSTlar foydali bo'ladi, masalan, agar siz grafikadagi tugunlarni elektr energiyasini eng kam xarajat bilan ta'minlash uchun jismonan o'tkazmoqchi bo'lsangiz. Ikkala tugun orasidagi yo'l uzunligi eng maqbul bo'lmasligi muhim emas, chunki siz ularni bog'lab qo'yishingizni istaysiz.

Dijkstra algoritmi ba'zi bir manbali tugunlardan boshlab eng qisqa yo'l daraxtini quradi . Qisqa yo'l daraxti - bu grafikadagi barcha tugunlarni qaytariladigan manba tuguniga bog'laydigan va har qanday yo'lning grafikadagi boshqa tugungacha bo'lgan uzunligi minimallashtirilgan xususiyatdir. Bu foydalidir, masalan, agar siz biron bir muhim muhim joyga etib borishga imkon beradigan darajada yo'l tarmog'ini qurmoqchi bo'lsangiz. Biroq, eng qisqa yo'l daraxti minimal daraxt bo'lishi kafolatlanmaydi va eng qisqa yo'lli daraxtning chekkalari xarajatlari MST narxidan ancha katta bo'lishi mumkin.

Yana bir muhim farq algoritmlarning qaysi grafik turlari ustida ishlashiga bog'liq. Prim algoritmi faqat yo'naltirilmagan grafiklar ustida ishlaydi, chunki MST tushunchasi grafiklarning yo'naltirilmaganligini anglatadi. (Yo'naltirilgan grafikalar uchun "minimal tejamkorlik" deb nomlangan narsa bor, ammo ularni topish algoritmlari ancha murakkab). Dijkstraning algoritmi yo'naltirilgan grafikalarda yaxshi ishlaydi, chunki eng qisqa daraxt daraxtlarini chindan ham yo'naltirish mumkin. Bunga qo'shimcha ravishda, Dijkstra algoritmi salbiy qirralarni o'z ichiga olgan grafiklarda to'g'ri echimni ta'minlamaydi , Prim esa algoritmi bunga qodir.

Men ko'rgan yagona farq shundaki, Prim algoritmi minimal xarajatlar chegarasini saqlaydi, Dijkstra algoritmi esa manba uchidan hozirgi verteksgacha bo'lgan umumiy xarajatlarni saqlaydi.

Dijkstra sizga xarajatlar minimal bo'lishi uchun manba tugunidan maqsad tuguniga yo'l beradi. Ammo Prim algoritmi sizga barcha tugunlar ulanishi va umumiy xarajat minimal bo'lishi uchun minimal daraxtni beradi.

Oddiy so'zlar bilan:

Shunday qilib, agar siz bir nechta shaharlarni ulash uchun poezdni joylashtirmoqchi bo'lsangiz, siz Prim algosidan foydalanasiz. Ammo agar siz bir shahardan ikkinchisiga imkon qadar ko'proq vaqt tejashni istasangiz, Dijkstra algidan foydalangan bo'lar edingiz.

Ikkalasi ham xuddi shunday umumiy algoritm yordamida bajarilishi mumkin:

Inputs:


G: Graph

s: Starting vertex (any for Prim, source for Dijkstra)

f: a function that takes vertices u and v, returns a number

Generic(G, s, f)

Q = Enqueue all V with key = infinity, parent = null

s.key = 0

While Q is not empty

u = dequeue Q

For each v in adj(u)

if v is in Q and v.key > f(u,v)

v.key = f(u,v)

v.parent = u

Prim, pass f = w(u, v)va Dijkstra dovoni uchun f = u.key + w(u, v).

Yana bir qiziq tomoni shundaki, Generic-dan yuqorida "Bread" birinchi qidirishni (BFS) amalga oshirishi mumkin, ammo bu haddan tashqari ko'p bo'lishi mumkin, chunki qimmat ustunlik navbati aslida talab qilinmaydi. Yuqoridagi umumiy algoritmni BFS-ga o'tkazish uchun, f = u.key + 1barcha og'irliklarni 1 ga bog'lash bilan bir xil (masalan, BFS A nuqtadan B ga o'tish uchun zarur bo'lgan minimal qirralarni beradi).



Sezgi

Yuqoridagi umumiy algoritm haqida o'ylashning yaxshi usullaridan biri: A va B ikkita chelakdan boshlaymiz. Dastlab barcha vertikallaringizni B katakchasiga qo'ying. So'ngra biz bitta verteksni B dan A ga o'tkazamiz. Endi A qirralarning B qismidagi kesishgan nuqtalarga qarab, biz kesishgan qirralarning ba'zi bir mezonlaridan foydalangan holda bitta qirrani tanladik va tegishli verteksni B-dan B-ga o'tkazdik. A. Bu jarayonni B bo'sh bo'lmaguncha takrorlang.

Ushbu g'oyani amalga oshirish uchun shafqatsiz kuch usuli bu B tomon kesib o'tgan A vertikal uchlari uchun ustunlarning ustuvor navbatlarini saqlab turishdir. Savol tug'iladi: o'rniga vertikallarning ustuvor navbati saqlanib qoladimi? Bu aslida biz B qaroridan kelib chiqadigan qaysi cho'qqini tanlashimiz mumkin.


Download 140,24 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish