Muhammad al-Xorazmiy nomidagi Toshkent axborot texnalogiyalari universiteti




Download 490.15 Kb.
Pdf ko'rish
Sana21.12.2023
Hajmi490.15 Kb.
#126110
Bog'liq
4-mustaqil ish
Ishlab chiqarish omillari, 1111111, rezbovye soedineniya, Бейжик2, Qurilish kompaniyasi obyektlarini monitoring qiluvchi tizim reja, 1.04.Математика, Avtomobil yo\'llarini qurish, Hisob 4, Mavzu Axborotni kodlash 7-sinflar uchun dars ishlanma Bajardi , 100 Quotes To Read When Stressed by Lee Journey B, mmmmmm, Signal generatorlari, generatorlarning turlari, kvars generatorlari, Noan\'anaviy usulda yoqilg\'i olish texnologiyasi-hozir.org, 1606


Muhammad al-Xorazmiy nomidagi
Toshkent axborot texnalogiyalari universiteti
Qarshi filiali “Kompyuter injiniringi” Fakulteti
KI-11-21S guruh talabasi Qudratov Shavkat
Ma’lumotlar tuzilmasi va algoritmlar 
4-MUSTAQIL ISH 


Reja; 
1 . Rekursiya va uni dasturlashda ishlatish. Rekursiv algoritmlar, 
ularning tahlili. 
2 . Daraxtlar klassifikatsiyasi. Daraxt ko‘ruvi. Ikkilik daraxtlar va 
ular ustida amallar. 
3 . Graf tushunchasi va uning ko‘rinishlari. 
Rekursiya, dasturlashda bir amalni bajarish uchun o'zini qayta-
qayta ishlatish prinsipi hisoblanadi. Rekursiv algoritmlar esa, 
rekursiya prinsipi asosida yaratilgan algoritmlardir. Rekursiya 
dasturlashda eng qo'lda ishlatilgan konseptlardan biridir, chunki 
uning orqali bajariladigan vazifalar moslashuvchan va qulaydir. 
Rekursiv algoritmlar quyidagi tahlillarni o'z ichiga oladi: 
Boshlang'ich shart (Base Case):Har qanday rekursiv algoritmni 
bajarish uchun kerak bo'lgan boshlang'ich shartni belgilash 
zarur. Bu shart bo'lmagan holda rekursiya doimiy tarzda davom 
etadi va dastur infinite loop (noumoni uzatish) holatiga tushadi. 
O'zini takrorlash (Self-referencing): Rekursiv algoritmning asosiy 
xususiyati - u o'zini takrorlaydi. Boshqa so'z bilan, algoritm 
o'ziga o'zi chaqiriladi. 


O'zgaruvchilarning yangilanishi: Rekursiv funksiya 
o'zgaruvchilarni yangilaydi va ularni doimiy ravishda 
o'zgartiradi. 
Rekursiv funksiyalarni misol orqali tushuntirish uchun, quyidagi 
oddiy misolga e'tibor bering: 
```python 
def faktorial(n): 
if n == 0 or n == 1: 
return 1 
else: 
return n * faktorial(n - 1) 
# Misol 
print(faktorial(5)) # Natija: 120 
``` 
Bu dastur faktorial hisoblash uchun rekursiv funksiyani yaratadi. 
Boshlang'ich shart (base case) `n == 0 or n == 1` qo'llanilgan va 
rekursiya o'zini takrorlaydi (`return n * faktorial(n - 1)`). Shu 
tarzda funksiya o'zini takrorlay qo'lda ishlaydi va javobni 
qaytaradi. 


Rekursiv algoritmlar, bir qancha muammolarni yechish uchun 
hamda kodni oson yozish uchun qulay bo'lishi mumkin. Ammo, 
juda katta sonli vaqtga ega bo'lgan rekursiyalarni yozish uchun, 
ko'p mashg'ulot va zahoti talab qiladi. Agar rekursiv algoritmlar 
notinchilik va ishonch bilan yozilmasa, infinite loop va boshqa 
muammo va hatolarni chaqirish muammoi paydo bo'ladi. 
Yaxshi, bir necha sodda misol bilan boshlaymiz: 
### 1. Faktorial hisoblash 
```python 
def faktorial(n): 
if n == 0 or n == 1: 
return 1 
else: 
return n * faktorial(n - 1) 
# Misol 
print(faktorial(5)) # Natija: 120 
``` 
Bu misolda rekursiv funksiya `faktorial` yaratilgan va faktorial 
hisoblash uchun ishlatilgan. Agar `n` 0 yoki 1 ga teng bo'lsa, `1` 
qaytariladi. Aks holda, funksiya o'zini takrorlaydi. 


### 2. Fibonachchi ketma-ketligi 
```python 
def fibonachchi(n): 
if n <= 1: 
return n 
else: 
return fibonachchi(n - 1) + fibonachchi(n - 2) 
# Misol 
print(fibonachchi(6)) # Natija: 8 
``` 
Bu misolda `fibonachchi` rekursiv funksiya yaratilgan va 
Fibonachchi ketma-ketligi elementlarini hisoblash uchun 
ishlatilgan. Agar `n` 0 yoki 1 ga teng bo'lsa, `n` qaytariladi. Aks 
holda, `n-1` va `n-2` elementlarning yig'indisi qaytariladi. 
### 3. Daraja hisoblash 
```python 
def daraja(x, n): 
if n == 0: 
return 1 


else: 
return x * daraja(x, n - 1) 
# Misol 
print(daraja(2, 3)) # Natija: 8 
``` 
Bu misolda `daraja` rekursiv funksiya yaratilgan va sonni 
belgilangan darajaga ko'tarish uchun ishlatilgan. Agar `n` 0 ga 
teng bo'lsa, `1` qaytariladi. Aks holda, `x` ni `n-1` marta 
ko'paytirish jarayoni boshlanadi. 
Daraxtsimon ma'lumotlar tuzilmalari (DBMS), ma'lumotlar 
bazalarini yaratish, saqlash, yangilash va ulardan foydalanish 
uchun dasturiy vositalarni ta'minlash uchun dasturiy vosita 
tizimlaridir. Ushbu tizimlar ma'lumotlarni tuzib turishni, ularga 
murojaat qilishni, ma'lumotlar bazasidagi ma'lumotlarni 
saqlashni, ulardan foydalanishni va ularga ma'lumotlarni 
qo'shishni, o'zgartirishni va o'chirishni (CRUD) ta'minlashni 
maqsad qiladi. 
Daraxtsimon ma'lumotlar tuzilmalari asosan quyidagi 
xususiyatlarga ega bo'ladi: 
1. **Ma'lumotlar tuzib turish (Data Organization):** 
Ma'lumotlar tuzib turishda, odatda, jadval (table) 
strukturasidagi qat'iy bir tartib (relational structure) qo'llaniladi. 


Bu jadvallar, ma'lumotlar bazasidagi elementlarni (qat'iy 
ma'lumotlar tuzilmasidagi biror narsa) saqlashda foydalaniladi. 
Ma'lumotlar bazasi boshqarish (Database Management): 
Daraxtsimon ma'lumotlar tuzilmalari, ma'lumotlar bazasidagi 
ma'lumotlarni boshqarish uchun ma'lumotlar bazasini o'z ichiga 
olgan boshqaruv tizimlarini (DBMS) o'z ichiga oladi. Ushbu 
tizimlar ma'lumotlarga murojaat qilish, ma'lumotlarni qo'shish, 
o'zgartirish va o'chirishni tashkil etishda yordam beradi. 
Transaktsiyalar va amalga oshirish (Transaction Processing): 
Daraxtsimon ma'lumotlar tuzilmalari, boshqaruv tizimlari orqali 
transaktsiyalarni (amalga oshirilgan boshqaruv operatsiyalari 
to'plami) amalga oshirish va ma'lumotlar bazasidagi to'g'ridan-
to'g'ri o'zgarishlarni ta'minlashda yordam beradi. 
Tahlil va tahlil qilish (Query and Analysis): Ma'lumotlar 
bazasidagi ma'lumotlarga murojaat qilish va ulardan tahlil qilish 
uchun so'rovlarni tuzish va boshqaruv etish uchun vositalarni 
taqdim etadi. 
Ma'lumotlar bazasi xavfsizligi (Database Security): Ma'lumotlar 
bazasi xavfsizligi muhimdir. DBMS, ma'lumotlarni himoyalash, 
ro'yhatdan o'tkazilgan foydalanuvchilarga moslamalarni 
bermoq va ma'lumotlarni maxfiy saqlash uchun xavfsizlik 
tizimlarini o'z ichiga oladi. 


Ma'lumotlar bazasi intizomiylik va qo'llab-quvvatlash (Data 
Integrity and Support):Ma'lumotlar bazasi intizomiylikni 
ta'minlash, qo'shimcha integritet tekshirishlarni o'tkazish, 
ma'lumotlar bazasidagi to'g'ri ma'lumotlarni ta'minlash, amalga 
oshirilayotgan to'g'ridan-to'g'ri operatsiyalarni boshqarish va 
ma'lumotlar bazasidagi ma'lumotlarni saqlash uchun kerakli 
qo'llab-quvvatlash tizimlarini o'z ichiga oladi. 
Ikkilik daraxtlar, har bir tugun ichidagi har bir tugunni ikki 
bo'limga bo'lgan strukturadagi ma'lumotlar tizimi. Bu struktura 
quyidagicha tavsiflanadi: 
1. **Birinchi tugun (Root Node):** Ikkilik daraxtni boshlang'ich 
tuguni. 
2. **Tugunlar (Nodes):** Har bir tugun ikki yoki undan ortiq 
yengil tugunlar (left va right) bilan bog'langan. 
3. **Yengil Tugunlar (Left va Right Children):** Har bir tugun 
bitta "chap" va bitta "o'ng" yengil tugunlar bilan bog'langan. 
4. **Ichki ta'rifiy tugun (Leaf Nodes):** Uchib ketadigan, yengil 
tugunlari bo'lmagan tugunlar. 
5. **Bo'lgan hajmi (Depth):** Daraxtning bir tugunidan boshlab 
o'sha tugunga qancha yengil tugunlar orqali o'tishini ifodalovchi 
o'zgaruvchi. 


6. **Kengligi (Width):** Daraxtning bir satridagi yengil tugunlar 
soni. 
### Ikkilik Daraxtga Element Qo'shish, Element O'chirish va 
Qidiruv Algoritmlari: 
#### Element Qo'shish: 
1. **Qidiruv (Search):** Qidiruv algoritmi asosan qiymatni 
topib olish vaqtinchalik ko'rsatkichlar orqali qidirishni o'z ichiga 
oladi. 
2. **Qo'shish (Insertion):** Yangi element qo'shishda, daraxt 
bo'sh yoki qator mavjud bo'lsa, yangi element boshlang'ich 
tugun bo'ladi. Aks holda, qiymatni solishtirib, chap yoki o'ng 
tomonda qidiruvni davom ettiradi va birinchi bo'sh joyda yangi 
tugunni qo'shadi. 
#### Element O'chirish: 
1. **Tugunni Topish (Finding the Node):** O'chirish uchun, 
o'chirilayotgan elementni topish kerak. Ushbu tugun 
o'chirilgach, qolgan daraxtning strukturasi saqlanadi. 
2. **O'chiruvchi Tugun (Node Deletion):** Tugunni o'chirishda, 
uchun tanlangan element tugun bo'ladi. Agar o'chirilayotgan 


tugun birinchi tugun bo'lsa, u o'zini o'chirishni o'z ichiga oladi. 
Aks holda, tugunni o'chirishdan keyin, tugunni o'rniga kirishdan 
avval o'ng yoki chap yengil tugunlari bilan almashtiriladi. 
#### Qidiruv Algoritmi: 
1. **Kengaytirilgan Tushuncha (Extended Definition):** Ikkilik 
daraxt qidirish algoritmi, solishtirilayotgan qiymatni topish 
uchun har bir tugunni tekshiradi va qidiruvni moslashtirishga 
harakat qiladi. 
2. **Qidiruv Tushunchasi (Search Algorithm):** Qidiruv 
algoritmi asosan rekursiv yoki itterativ bo'lishi mumkin. 
Rekursiv usul, daraxtni chap yoki o'ng tomonlarida qidiruvni 
davom ettiradi, agar qidirilayotgan qiymat tugun qiymatidan 
kichik bo'lsa, chap tomonni tekshiradi, aks holda o'ng tomonni 
tekshiradi. 
**AVL Daraxti:** 
AVL daraxti, ikkilik daraxtlar (binary trees) oilasiga mansub bir 
daraxt turi, lekin uni boshqarishda yuqori darajali avlavlantirish 
(balanslashtirish) amaliyotlari o'tkazilgan. Har bir tugun uchun 
chap va o'ng yengil subdaraxtlarining balansini ta'minlash 
uchun qo'shilgan tugun kengaytmasi (height) orqali daraxtni 
o'rganishni ta'minlaydi. 


AVL daraxtida, har bir tugun uchun balans faktori hisoblanadi. 
Balans faktori, o'ng yengil subdaraxtlarining kengaytmasi 
(height) bilan chap yengil subdaraxtlarining kengaytmasi 
orasidagi farqni ifodalaydi. Agar balans faktori +1, 0 yoki -1 ga 
teng bo'lsa, daraxt balanslangan hisoblanadi. Aks holda, unga 
qarshi chiqqan tomonlarda balanslash amaliyotlari o'tkaziladi. 
AVL Daraxti Qo‘shish: 
Qo'shish jarayonida daraxt balanslangan bo'lishi kerak. 
Qo'shilayotgan element tugunni joylashish jarayonida, balans 
faktori qo'shilayotgan tugunlarni ichiga olish va balanslash 
jarayonida o'zgarishlarni amalga oshiradi. 
AVL Daraxti O‘chirish: 
O'chirish jarayonida ham daraxt balanslangan bo'lishi kerak. 
O'chirilayotgan elementni o'chirish jarayonida, balans faktori 
o'chirilayotgan tugunni ichiga olish va balanslash jarayonida 
o'zgarishlarni amalga oshiradi. 
Heap Tree: 
Heap tree, avvalo, to'g'ri daraxt shaklida yaratiladi va 
qoidalarga mos kelgandagi kamdan kam darajadagi daraxt 
bo'lib, unda har bir tugun o'z qo'shimcha sharoyitasiga ega 
bo'ladi. Ammo, heap tree bilan avlavlantirilgan daraxtlar 
boshqarishda muvaffaqiyatli bo'lgan holda, heap tree 


boshqarishda elementlarni chaqirish, qo'shish va o'chirish 
jarayonlari uchun ishlatiladi. 
Heap Tree Tuzilmasi: 
1. **Max-Heap:** Har bir tugun o'z o'g'risi (left va right 
subdaraxtlar) bilan solishtirib, o'zidan katta bo'lgan 
elementlarni o'z ichiga oladi. 
2. Min-Heap: Har bir tugun o'z o'g'risi (left va right subdaraxtlar) 
bilan solishtirib, o'zidan kichik bo'lgan elementlarni o'z ichiga 
oladi. 
Max-heap yoki Min-heap hisoblanishi, daraxt balanslanmasa 
ham uchun amaliyotlarni o'tkazishda yordam beradi. Bu tuzilma 
oddiy daraxt shakli va o'zaro aloqa uchun yaxshi bo'lib, 
amaliyotlarni tez, oddiy va samarali bajarish imkoniyatini 
beradi. 
Heap Tree Qo‘shish va O‘chirish: 
Qo'shishda, yangi elementni daraxtning eng past yerga 
joylashgan joyga joylashish va daraxtni qayta tuzish mumkin. 
O'chirishda esa o'chirilayotgan elementni eng past yerga 
joylashib, daraxtning qolgan qismini qayta tuzish mumkin. 
**Graf** - bu matematik va informatika sohasida ishlatiladigan 
abstrakt tushuncha, bir yoki bir nechta elementlarning (bu 
elementlar birligini yoki elementlar orasidagi aloqani 
ifodalovchi qatlamni bildiradi) ob'ektlar orasidagi aloqalarini 
tasvirlash uchun ishlatiladi. Grafni tasavvur qilish uchun undagi 


elementlarni "tik" (vertex, yoki bo'yoq) deb ataymiz, aloqalarini 
esa "quloq" (edge) deyiladi. 
### Grafning Asosiy Ko'rinishlari: 
1. **Noto'g'ri Yo'nalishli Graf (Unidirectional Graph):** Ushbu 
grafda aloqalar bitta tomonlama, ya'ni bir tikdan boshqa tikka 
yo'naltiriladi. Aks holda, ikki uchun ham, aloqa mavjud emas. 
![Noto'g'ri Yo'nalishli 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/0/08/Directed_acyclic_graph.png/220px-
Directed_acyclic_graph.png) 
2. **To'g'ri Yo'nalishli Graf (Bidirectional Graph):** Bu grafda 
aloqalar ikki tomonlama, ya'ni bir tikning bitta uchun ham, 
boshqa tikka ham aloqa bor. 
![To'g'ri Yo'nalishli 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/a/a2/Directed_graph%2C_cyclic.svg/220px-
Directed_graph%2C_cyclic.svg.png) 
3. **Birlamchi Graf (Connected Graph):** Ushbu grafda har bir 
burchak aloqa bilan bog'langan bo'lib, bitta burchaktan boshqa 
burchaklarga bor yollar mavjud. 


![Birlamchi 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/0/0c/Complete_graph_K7_%28simple%29.svg/220px-
Complete_graph_K7_%28simple%29.svg.png) 
4. **Chetlanmagan Graf (Disconnected Graph):** Bu grafda 
biror ikki burchak aloqa bilan bog'langan bo'lsa ham, umuman 
aloqa yo'q. 
![Chetlanmagan 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/c/c4/Disconnected_graph.svg/220px-
Disconnected_graph.svg.png) 
5. **Doiraviy Graf (Cyclic Graph):** Ushbu grafda aloqalar 
orqali aylanadigan, ya'ni doiraga o'tkaziladigan yo'l bor. 
![Doiraviy 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/7/7d/Simple-closed-curve-1.svg/220px-Simple-closed-curve-
1.svg.png) 
6. **Doiraviy Emas Graf (Acyclic Graph):** Bu grafda aloqalar 
orqali aylanmaydigan yo'l bor. Aks holda, doiraviy emas, to'g'ri 
yo'nalishli (acyclic directed graph) deb ataladi. 


![Doiraviy Emas 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/e/e4/Directed_acyclic_graph.png/220px-
Directed_acyclic_graph.png) 
7. **Yo'qotadi-chaqaradi Graf (Weighted Graph):** Ushbu 
grafda aloqalarga bir "massa" (ya'ni og'irlik) asosan son tuziladi. 
![Yo'qotadi-chaqaradi 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/9/93/Minimum_spanning_tree.png/220px-
Minimum_spanning_tree.png) 
8. **O'zaro Aloqador Graf (Connected Graph):** Ushbu grafda 
har ikki burchak aloqa bilan bog'langan bo'lib, bitta burchaktan 
boshqa burchaklarga bor yollar mavjud. 
![O'zaro Aloqador 
Graf](https://upload.wikimedia.org/wikipedia/commons/thum
b/3/3b/6n-graf.svg/220px-6n-graf.svg.png) 
Grafning yana boshqa ko'rinishlari ham mavjud. Bu usullar graf 
turlariga, ulardagi aloqalarga, grafni rasmga olish usullariga, yo'l 
yoki masofa hisoblash usullariga, yoki grafni topshirish yoki 
sochuv usullariga asoslangan bo'lishi mumkin. 

Download 490.15 Kb.




Download 490.15 Kb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



Muhammad al-Xorazmiy nomidagi Toshkent axborot texnalogiyalari universiteti

Download 490.15 Kb.
Pdf ko'rish