Telekomunikatsiya texnologiyalari va kasbiy ta’lim fakulteti


Dinamik dasturlash — Maʼlumotlar tuzilmasi


Download 495.03 Kb.
bet2/7
Sana27.10.2023
Hajmi495.03 Kb.
#1727427
1   2   3   4   5   6   7
Bog'liq
2-mustaqil ish Ma\'lumotlar bazasi

Dinamik dasturlash — Maʼlumotlar tuzilmasi

Dinamik dasturlash muammoni kichikroq muammolarga ajratishda boʻlinish (divide) va yengishga (conquer) oʻxshaydi. Ammo boʻlinish va yegishdan farqli oʻlaroq, ushbu kichik muammolar mustaqil ravishda hal etilmaydi. Aksincha, ushbu kichik muammolarning natijalari esga olinadi va shu kabi yoki bir-birini toʻldiruvchi kichik muammolar uchun ishlatiladi.
Dinamik dasturlash bizda muammolar mavjud boʻlgan joylarda qoʻllaniladi, ularni oʻxshash kichik muammolarga boʻlish mumkin, natijada ularning natijalari qayta ishlatilishi mumkin. Koʻpincha, ushbu algoritmlar optimallashtirish uchun ishlatiladi. Qoʻl ostidagi kichik muammoni hal qilishdan oldin, dinamik algoritm ilgari yechilgan kichik muammolarning natijalarini oʻrganishga harakat qiladi. Eng yaxshi yechimga erishish uchun kichik muammolarning yechimlari birlashtirish
Shunday qilib, biz aytishimiz mumkinki:
Muammoni kichik muammolarga boʻlish imkoniyati mavjud boʻlishi kerak.
Kichik muammolarni maqbul yechimidan foydalangan holda maqbul yechimga erishish mumkin.
Dinamik algoritmlar Memozatsiyadan foydalanadi.
Taqqoslash
Mahalliy optimallashtirishga murojaat qilingan greedy algoritmlardan farqli oʻlaroq, dinamik algoritmlar muammoni umumiy optimallashtirishga asoslanadi.
Umumiy yechimga erishish uchun yechimlar birlashtiriladigan algoritmlarni boʻlish va yengishdan farqli oʻlaroq, dinamik algoritmlar kichikroq masalaning natijasini ishlatadi va undan keyin katta-kichik masalani optimallashtirishga harakat qiladi. Dinamik algoritmlar Memoizatsiyadan foydalanib, yechilgan muammolarning natijasini eslaydi.
Misol
Dinamik dasturlash usuli yordamida quyidagi kompyuter muammolarini hal qilish mumkin:
Fibonacci raqam seriyasi
Knapsack muammosi
Hanoi minorasi
Floyd-Warshall tomonidan olib boriladigan eng qisqa yoʻl
Dijkstra tomonidan olib boriladigan eng qisqa yoʻl
Loyihani rejalashtirish
Dinamik dasturlash yuqoridan-pastga va pastdan yuqoriga qarab ishlatilishi mumkin. Va, albatta, aksariyat hollarda, oldingi yechimlarga murojaat qilish, CPU aylanishiga qaraganda qayta hisoblashdan koʻra arzonroq hamda samaraliroq boʻlishi ham mumkin.


Halqasimon bog’langan ro’yhatlar
Halqasimon bog’langan ro’yhatlarda tugunlar halqa ko’rinishda o’zaro bog’langan bo’ladi.Ya’ni oxirgi element korsatkichi NULL emas, birinchi elementga yo’naltirilgan bo’ladi.Bunday tuzilmalar qachon ishlatiladi, agar bir qancha yarayonlar bir vaqtning o’zida aynan bir resurslarni ishlatadigan bo’lsa, biz resurslarni teng taqsimlagan xolda ishlatilishini ta’minlashimiz kerak bo’ladi.

Tasavvur qilamiz, o’sha yarayonlar 6,5,8,10 sonlari bo’lsin, xuddi yuqoridagi rasmdagidek. Tuzilmaga current nomli ko’rsatkich orqali muroyaat qilamiz. Bitta elementga muroyaat qilib, shu yarayonni bayarilishini ta’minlash, ya’ni aktivlashtirish uchun uning qiymatini qaytaramiz va keying elementga o’tamiz.


Halqasimon ro’yhatlar ikki hil bo’ladi:


1   2   3   4   5   6   7




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