4. Dinamik dasturlash quyi qismlarining maqbulligini norasmiy tushuntirish


Dinamik dasturlash odatda muammolarni yechishda ikkita yondashuvga amal qiladi



Download 287,5 Kb.
bet2/5
Sana28.06.2022
Hajmi287,5 Kb.
#717130
1   2   3   4   5
Bog'liq
Anvarova K Mustaqil ish 2

Dinamik dasturlash odatda muammolarni yechishda ikkita yondashuvga amal qiladi:
• Pastga qarab dinamik dasturlash: vazifa kichik quyi qismlarga bo'linadi, ular hal qilinadi va keyin asl muammoni hal qilish uchun birlashtiriladi. Xotiralash tez-tez uchraydigan quyi qismlarni yechish uchun ishlatiladi.
• Yuqori oqim dinamik dasturlash: keyinchalik dastlabki muammoni hal qilish uchun kerak bo'ladigan barcha quyi jadvallar oldindan hisoblab chiqiladi va keyin asl muammoning yechimini yaratishda foydalaniladi. Ushbu usul talab qilinadigan stek hajmi va funksional qo'ng'iroqlar soni nuqtai nazaridan yuqoridan-pastga dasturlashdan afzaldir, ammo ba'zida kelajakda qaysi quyi satrlarni hal qilishimiz kerakligini oldindan aniqlash oson emas.
Dinamik dasturlash yordamida hal qilingan vazifalar qo'shma optimallik xususiyatiga ega bo'lishi kerak.


2.Dinamik dasturlashning klassik muammolari.
Ko'pgina olimpiada dasturlash muammolarida rekursion yoki to'liq qidiruvdan foydalangan holda echish juda ko'p sonli operatsiyalarni talab qiladi. Bunday muammolarni, masalan, to'liq qidiruv orqali hal qilishga urinish, bajarilish vaqtining ortiqcha bo'lishiga olib keladi.
Biroq, sanab o'tilgan va boshqa ba'zi muammolar orasida bitta yaxshi xususiyatga ega bo'lgan muammolar sinfini ajratish mumkin: ba'zi kichik dasturlarga yechim (masalan, kichik raqam uchun n), asl muammoning yechimini deyarli hech qanday raqamlarsiz topish mumkin. Bunday muammolar dinamik dasturlash usuli bilan hal qilinadi.
Tarkiblar. Bir ketma-ketlikdagi klassik muammo quyidagilardan iborat.
Fibonachchi ketma-ketligi Fn quyidagi formulalar bilan belgilanadi:
F1= 1, F2= 1, Fn=Fn– 1+Fn– 2 bunda n > 1.
Topish kerak - Fn n-element.
Mantiqiy va samarali bo'lib ko'rinishi mumkin bo'lgan yechim - bu rekursion asosli yechim.:
int F(int n) {
if (n < 2) return 1;
else return F(n-1) + F(n-2);
}
Bunday funksiyadan foydalanib, biz "oxiridan" muammoni hal qilamiz - ma'lum qiymatlarga erishgunimizcha n-ni asta-sekin kamaytiramiz.
Ko'rib turganingizdek, oddiy ko'rinadigan bunday dastur allaqachon n = 40 bilan sezilarli darajada ishlaydi. Buning sababi shundaki, bir xil oraliq ma'lumotlar bir necha bor hisoblab chiqiladi - operatsiyalar soni Fibonachchi raqamlari o'sishi bilan bir xil tezlikda o'sadi - eksponent bo'yicha.
Ushbu vaziyatdan chiqishning bir usuli bu qayta foydalanish uchun topilgan oraliq natijalarni saqlashdir:
int Fib(int n) {
if (Fib[n] != -1) return Fib[n];
if (n < 2) return 1;
else {
Fib[n] = Fib(n - 1) + Fib(n - 2);
return Fib[n];
}
}
Algoritmning murakkabligi bahosi-  ;
Berilgan echim to'g'ri va samarali. Ammo bu vazifani bajarish uchun sodda echim qo'llaniladi:

Download 287,5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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