Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 3000UZS
Размер 1.1MB
Покупки 0
Дата загрузки 07 Ноябрь 2026
Расширение pptx
Раздел Презентации
Предмет Информатика и ИТ

Продавец

Bohodir Jalolov

Dasturlash metodlarini optimallashtirish usullari

Купить
DINAMIK DASTURLASH METODLARINI 
OPTIMALLASHTIRISH USULLARI
      
I Kirish
II Asosiy  qism
               2.1.  Dinamik dasturlash haqida umumiy tushunchalar
               2.2. Dinamik dasturlashda optimallik tamoyili
               2.3.  C++ dasturlash tilida dinamik dasturlar yaratish
               2.4. C++ dasaturlash tilida dinamik ma’lumotlar tuzi lmasi
III X ulosa
IV Foydalanilgan adabiyotlar DINAMIK DASTURLASH ODATDA MUAMMOLARNI HAL 
QILISHDA IKKITA YONDASHUVNI QO'LLAYDI
•
Yuqoridan pastga dinamik dasturlash: muammo kichikroq kichik muammolarga bo'linadi, ular 
hal qilinadi va keyin asl muammoni hal qilish uchun birlashtiriladi. Yodlash allaqachon hal 
qilingan kichik vazifalarni hal qilish uchun ishlatiladi.
•
Pastdan yuqoriga dinamik dasturlash: asl muammoni hal qilish uchun keyinchalik zarur bo'lgan 
barcha kichik vazifalar oldindan hisoblab chiqiladi va keyin asl muammoning echimini yaratish 
uchun ishlatiladi. Bu usul kerakli stekning o'lchami va funksiya chaqiruvlari soni bo'yicha 
yuqoridan pastga dasturlashdan ko'ra yaxshiroqdir, lekin ba'zida kelajakda qaysi kichik 
muammolarni hal qilishimiz kerakligini oldindan aniqlash oson emas.  
1.Yuqoridan pastga yondashish-Bu har qanday
•
  muammoning rekursiv formulasidan 
•
to'g'ridan-to'g'ri tushish. Agar biron-bir muammoning
•
  echimi uning kichik muammolari echimi yordamida
•
  rekursiv tarzda tuzilishi mumkin bo'lsa va agar uning
•
  pastki muammolari bir-birining ustiga chiqsa, unda osonlikcha
•
  xotirada saqlab qolish yoki pastki muammolarning 
•
echimlarini jadvalda saqlash mumkin .
2.  Pastdan yuqoriga dinamik dasturlash: 
•
asl muammoni hal qilish uchun keyinchalik zarur bo'lgan
•
  barcha kichik vazifalar oldindan hisoblab chiqiladi
•
  va keyin asl muammoning echimini yaratish uchun ishlatiladi DINAMIK METODLARNI OPTIMALLASHTIRISH
•
Optimal pastki tuzilish  ma'lum bir optimallashtirish muammosining echimini uning quyi 
masalalariga optimal echimlarni birlashtirish orqali olish mumkinligini anglatadi. Bunday 
maqbul pastki tuzilmalar odatda  rekursiyalardir.
•
Biz rekursiyadan foydalanganimizda ma’lum darajada tuzilayotgan dasturimizni
optimallshtiramiz. Fibonachchi ketma-ketligining pythondagi dinamik dasturi
class Solution(object):
def fib(self, n):
#int parameter sifatida qabul qiladi va int qaytarishi kerak
""“
:type n: int
:rtype: int
""“  if n == 0:
return(0)
if n == 1:
return(1)
dp = [0] * (n + 1)
dp[0] = 0
dp[1] = 1
print("oldindan yaratilgan dinamik massiv= ", dp)
for i in range(2,n+1):
dp[i] = dp[i-1] + dp[i-2]
print("to’ldrilgandan keyin dinamk massiv yaratiladi= ", dp)
return(dp[n]) STATIK MA’LUMOTLAR BILAN ISHLASHA QUYIDAGI MUAMMOLAR 
KELIB CHIQADI
•
int Numbers[100]; //100 ta butun son uchun statik massiv.
•
1-muammo: Bu yerda dasturimizning imkoniyatlarini chegaralaymiz, chunki u 100 dan ortiq 
raqamni saqlay olmaydi.
•
2-muammo: Masalan, faqat 1 ta raqamni saqlash kerak bo'lganda va 100 ta raqam uchun xotira 
ajratilganda resurslardan samarasiz foydalanyapmiz.
•
Ushbu muammolarning asosiy sababi kompilyator tomonidan massiv uchun statik bo’lgan, 
doimiy xotirani ajratishdir.
•
Dastur foydalanuvchidan o'ziga xos ehtiyojlariga qarab xotiradan maqbul foydalanishi uchun 
xotirani dinamik taqsimotidan foydalanish zarur. Bu sizga kerak bo'lganda ko'proq xotira ajratish 
va kerak bo'lmaganda bo'shatish imkonini beradi. C++ dasturida xotiradan foydalanishni 
boshqarish imkonini beradigan ikkita operator,  new  va  delet e  mavjud. Xotira manzillarini 
saqlaydigan ko'rsatkichlar xotirani samarali dinamik ravishda taqsimlashda hal qiluvchi rol 
o'ynaydi. C++ DASTURLASH TILIDA DINAMIK DASTURLAR YARATISH
•
Ko’rsatkich – bu maydon manzilini xotirada saqlaydigan o'zgaruvchidir. int o'zgaruvchisi butun qiymatni saqlash uchun 
ishlatilgandek, ko'rsatgich o'zgaruvchisi xotira maydoni manzilini saqlash uchun ishlatiladi 
•
Ko'rsatkich boshqa barcha o'zgaruvchilar singari e'lon qilinishi kerak:
•
Tip_nomi * Ko’rsatkich nomi; & adres olish amali
•
  int age = 30;
•
     const double Pi =3.1416;
•
int *a=&age;
•
const double *b-Π
•
     cout <<"age manzili: "<<&age<<endl;
•
     cout<<”age qiymat=”<<*a<<endl;
•
     cout <<"Pi manzili: "<<&Pi<<endl;
•
    cout<<”Pi qiymati=”<<*b;
•
     return 0;
•
} 0x101 manzilidagi 
ko'rsatkich 0x558 
qiymatini o'z ichiga 
oladi Xotiradagi 
ma'lumotlar 0x558 
manzili da DINAMIK XOTIRADA QO’LLANILUVCHI FUNKSIYALAR
•
Tip* Ko’rsatkich  = new  Tip -Xotiraga bitta element uchun so’rov
•
Tip*   Ko’rsatkich  = new  Tip [n]  -Xotiraga n ta element uchun so‘rov
•
Delete []  Ko’rsatkich- ko’rsatkichni o’cherish
•
free() xotirani bo’shatish funksiyasi o’chiriladigan xotira bo’la-giga ko’rsatkich bo’lgan 
yagona parametrga ega bo’ladi
•
malloc() funksiyasining sintaksisi
•
v oid   *   malloc(size_t   size);
•
ko’rinishida bo’lib, u xotiraning uyum qismidan size bayt o’lchamidagi uzluksiz sohani 
ajratadi •
butun turdagi uzunligi 3 ga teng massivga joy ajratishni quyidagicha amalga oshirish 
mumkin:
•
int   *   pI nt =(int *)malloc(3*sizeof(int ));
•
calloc() funksiyasi malloc() funksiyasidan farqli ravishda massiv uchun joy ajratishdan 
tashqari massiv elementlarini 0 qiymati bilan inisializasiya qiladi. Bu funksiya 
sintaksisi
•
v oid   *   calloc(size_t   num,   size_t   size);
•
Quyidagi programmada  butun sondan iborat dinamik massiv yaratish, unga qiymat 
berish va o’chirish amallari bajarilgan.
•
  #include<iostream>
•
using namespace std;
•
int main(){
•
int  m;
•
cout << "m="; cin >> m; //massiv elementlari soni; •
float *b = new float[m]; //Element haqiqiy sonlar bo'lgan m ta elementli dinamik 
massiv;
•
 
•
for (int j = 0; j < m; j++)
•
cin >> b[j]; // bir o'lchamli Massivni to'ldirish
•
cout<<"     bir o'lchamli dinamik massiv"<<endl;
•
for (int j = 0; j < m; j++)
•
cout<<b[j]<<" ";
•
delete [] b;//xotira bo'shatildi
•
cout<<"\n xotira bo'shatildi";
•
return 0;
•
} DINAMIK MA’LUMOTLAR TUZILMASI 
•
Statik ma’lumotlar tuzilmasi vaqt o’tishi bilan o’z o’lchamini o’zgartirmaydi. 
Biz har doim dastur kodidagi statik ma’lumotlar tuzilmasiga qarab ularning 
olchamini bilishimiz mumkin. Bunday ma’lumotlarga teskari ravishda 
dinamik ma’lumotlar tuzilmasi mavjud bo’lib, bunda dastur bajarilishi 
davomida dinamik ma’lumotlar tuzilmasi o’lchamini o’zgartirishi mumkin. 
Dinamik ma’lumotlar tuzilmasi – bu qandaydir bir qonuniyatga asoslanib 
shakllangan, lekin elementlari soni, o’zaro joylashuvi va o’zaro aloqasi 
dastur bajarilishi davomida shu qonuniyat asosida dinamik o’zgaruvchan 
bo’lgan ma’lumotlar tuzilmasidir .   DINAMIK MA’LUMOTLAR TUZILMASI KLASSIFIKATSIYASI  
E’TIBORINGIZ UCHUN
RAHMAT

Dasturlash metodlarini optimallashtirish usullari

Купить
  • Похожие документы

  • Bit algoritmi
  • Birlashtirib saralash algoritmlari
  • Brauzerdan my.gov.uz saytini qidiramiz
  • C++ da havolalar bilan ishlash
  • Corel Draw dasturida katta o‘lchamli grafik ma’lumotlarni yaratish

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha