logo

Graflarda eng qisqa masofani topish algoritmlari

Загружено в:

12.08.2023

Скачано:

0

Размер:

235.271484375 KB
“Graflarda eng qisqa masofani topish algoritmlari”
mavzusidagi
Reja:
I. Kirish
II. Asosiy qism
1. Asosiy tushuncha
2. Eng qisqa masofani toppish algoritmlari
3. Floyd algoritmi
4. Deykstra algoritmi
III. Xulosa
IV. Foydalanilgan adabiyotlar
1 KIRISH
Algoritmlarning   turli   ta’riflari   mavjud.   Rasmiy   ta’riflardan   biri   bo’yicha
algoritm   bu   qo’yilgan   masalani   bir   xil   yechilishiga   olib   keluvchi   aniq
harakatlarning  ketma-ketligi.  Bu  tushunchadan  algoritmning  quyidagi   xossalari
kelib chiqadi:
1. Diskretlilik – ya’ni aniqlanayotgan jarayonni qadamba-qadam ko’rinishi.
2. Ommaviylik – algoritm o’xshash masalalar turkumini yechishi kerak.
3. Tushunarlilik   –   algoritmda   beriladigan   ko’rsatmalar   foydalanuvchiga
tushunarli bo’lib, uning talablariga javob berishi kerak.
4. Aniqlilik – algoritmda ma’lum tartibda amallarni bajarish nazarda tutilishi
kerak va bajaruvchiga joriy qadam  tugatilishi  bilan qaysi  qadam  keyingi
bo’lib bajarilishi aniq ko’rsatilishi kerak.
        Algoritmlar   rasmiy  ravishda  bajariladi,  bu  degani  bajaruvchi  bajarilayotgan
amallarni   mazmunini   anglash   shart   emas.   Algoritm   tuzish   jarayoniga
algoritmlashtirish deyiladi. 
       Algoritm  tuzish jarayonida nazariy va amaliy nuqtai nazardan algoritmlash,
dasturlash   va   EHM   larni   qo’llash   bilan   bog’liq   bo’lgan   bilimlar   kerak.   Asosiy
maqsad   bu   masalani   qo’yish,   masalaning   yechish   algoritmini   tuzish,   algoritmi
mashina   dasturi   ko’rinishida   amalga   oshirish   va   algoritmni   samaradorligini
ko’rsatish   muammolarini   o’rganish.   Bu   jarayonlar   algoritmni   to’liq   yaratish
tushunchasiga olib keladi va quyidagi bosqichlarni belgilaydi:
1. Masalaning qo’yilishi.
2. Modelni yaratish.
3. Algoritmni ishlab chiqish.
4. Algoritm to’g’riligini tekshirish.
5. Algoritmni amalga oshirish.
6. Algoritmni va ularning murakkabligini tahlil qilish.
7. Dasturni tekshirish.
8. Hujjatlashtirish.
2 2.1Asosiy tushuncha.
Qandaydir   masalani   xal   etishga   kirishishdan   avval   buning   uchun   eng
yaxshi   uslub   izlanadi   va   uni   qay   tarzda   tavsiflash   aniqlanadi.   Boshqacha   qilib
aytganda,     biz   doimo   maqsadi   ba’zi   bir   zaruriy   natijaga   erishishdan   iborat,
amallar   ketma-ketligi   bilan   berilgan   turli-tuman   qoidalarga   duch   kelamiz.
Bunday amallarning ketma-ketligi algoritm deb ataymiz. 
Matematikada   algoritmning   murakkabligi,   xal   etish   masalalari   va   ularni
ishlab   chiqish   prinsiplarini   o‘rganadigan   maxsus   “Algoritmlar   nazariyasi”
bo‘limi xam mavjud.
Algoritmlar nazariyasi – algoritmlarning umumiy xossalari, qonuniyatlari
va   ularni   tasvirlanishining   turli-tuman   formal   modellarini   o‘rganish   bilan
shug'ullanadi.   Algoritm   tushunchasini   formallashtirish   asosida   ularning
samaradorligi taqqoslash, ularning ekvivalentligi tekshirish, qo‘llanilish sohasini
aniqlash mumkin.
Graflar nazariyasining asosiy masalasi berilgan nuqtalar va ularni tutashtiruvchi
chiziqlarning   xossalaridan   tashkil   topadi.   Bunday   talqinda   chiziqlarnig   to’g’ri
chiziq   yoki   kesma,   yoylardan   yoki   egri   chiziqlardan   iborat   bo’lishi   hamda   bu
chiziqlar   qaerda   joylashishi,   uzun   yoki   qisqa   bo’lishi   muhim   emas.   Shunisi
muhimki bu chiziqlar berilgan ikki nuqtani tutashtiradi.  1736   –   yilda   L.Eyler
tomonidan   o’sha   davrda   qiziqarli   amaliy   masalalardan   biri   hisoblangan
Kyonisberg   ko’priklari   haqidagi   masalaning   qo’yilishi   va   echilishi   graflar
nazariyasining   paydo   bo’lishiga   asos   bo’ldi.   Kyonisberg   shaxridagi   Pregel
daryosi   ustiga   qurilgan   yitita   ko’prik   o’sha   vaqtda   shaxarni   to’rtta   qismga
ajratgan. Shaxarning ixtiyoriy qismida joylashgan uydan chiqib yitita ko’rikdan
faqat bir martadan o’tib, yana o’sha uyga qaytib kelish mumkinmi? Kyonisberg
ko’priklari haqidagi bu masalani hal qilish jarayonida graflarda maxsus marshrut
(hozirgi   vaqtda   graflar   nazariyasida   bu   marshrut   Eyler   tsikli   nomi   bilan
yuritiladi)   mavjudligi   shartlari   ham   topildi.   L.Eyler   tomonidan   e’lon   qilingan
tarixiy ilmiy ish yuz yildan kuproq vaqt mobaynida graflar nazariyasi bo’yicha
3 yagona   ilmiy   ish   bo’lib   keldi.     XIX-asrning   o’rtalarida   graflar   nazariyasi   bilan
bog’liq     tadqiqotlar   G.Kirxgof   (1924–1887,   olmon   fizigi)   va   A.Keli   (1821–
1895, ingliz matematigi) ishlarida paydo bo’ldi. “Graf” iborasi D.Kyonig (1884–
1944,   venger   matematigi)   tomonidan   1936–   yilda   graflar   nazariyasiga
bag’ishlangan   dastlabki   darsliklarda   uchraydi.   Graflar   nazariyasi   bo’yicha
tadqiqotlar   natijalari   inson   faoliyatining   turli   sohalarida   qo’llaniladi.   Ulardan
ba’zilari   quyidagilar:   boshqotirmalarni   hal   qilish;   qiziqarli   o’yinlar;   yo’llar,
elektr   zanjirlari,   integral   sxemalari   va   boshqarish   sistemalarini   loyihalashtirish
va   hakazo.   Avvalo   grafning   abstrakt   matematik   tushuncha   sifatidagi   ta’rifini
keltiramiz.   Ixtiyoriy   nuqtalarning   qandaydir   usulda   bog’lanishidan   tashkil
topgan  V   to’plamni   qaraymiz.   Ushbu  	V to’plamni   uchlar   to’plami   va   uning	
v∈V−
elementlarini   esa   uchlar   deb   ataymiz.  	V to’plamning  	v1∈V   va  	v2∈V
elementlaridan   tuzilgan  	
(v1,v2)   ko’rinishidagi   barcha   juftliklar   to’plamini   (	V
to’plamning o’z-o’ziga Dekrat ko’paytmasini) 	
V×	V  deb belgilaymiz. Graf deb
shunday    	
(V	,U	)   juftlikga   aytiladiki,   bu   erda  	V	≠	O   va  	U	−	(v1,v2)
ko’rinishidagi juftliklar bo’lib, 	
V×	V  to’plamning elementlaridan tuzilgandir. 
Grafni lotin alifbosining 	
G  harfi bilan belgilaymiz. 
Grafga   ta’rif   berishda   boshqacha   yondoshuvdan   ham   foydalanish   mumkin.	
G	=	G	(V	)
  graf   deb   bir   qancha  	V uchlar   to’plamining   birlashmasiga   yoki	
E=(a,b)(a,b∈V	)	(1.1)
  qaysi   uchlar   bog’langanligini   ko’rsatuvchi   juftliklarga
aytiladi.Mos   ravishda   grafning   geometrik   tasvirida   aniq   har   bir  	
(1.1)   juftlik
grafning   qirrasi   deyiladi,  	
a   va  	b   uchlar   esa  	E   qirraning   oxirlari   deyiladi.
Qirraning  	
(1.1)   ta’rifida   uning   oxirgi   ikki   uchining   joylashish   tartibi   e’toborga
olinishi   ham,   olinmasligi   ham   mumkin.   Agar   bunday   tartib   mavjud   bo’lmasa,
ya’ni  	
E	=	(a,b	)=	(b,a) deyish   mumkin   bo’lsa,   u   holda  	E   ni   yo’naltirilmagan
qirra deb ataladi. Agar bunday tartib mavjud bo’lsa, u holda qirra yo’naltirilgan
qirra   deyiladi.   Yo’naltirilgan  	
E	=	(a,b	)   qirrada  	a   boshlang’ich   uch,  	b   oxirgi
4 uch   deb   hisoblanadi.   Shuningdek  E   qirrani  	a   uchdan   chiquvchi   va  	b   uchga
boruvchi qirra deyiladi. Qirra yo’naltirilgan bo’lgan holda ham, yo’naltirilmagan
holda   ham  	
E=	(a,b)   qirra  	a   va  	b   uchlarga   intsidient   deb   ataladi.   Grafni
yo’naltirilmagan   deyiladi,   agar   uning   barcha   qirralari   yo’naltirilmagan   bo’lsa
(1.1.a–rasm),   yo’naltirilgan   deyiladi   agar   barcha   qirralari   yo’naltiriligan   bo’lsa
(1.1.b– rasm). 
                                     1.1.a–rasm                             1.1.b–rasm.
Ham   yo’naltirilgan,   ham   yo’naltirilmagan   qirralarga   ega   bo’lgan   graf   aralash
graf   deyiladi.   Misol   sifatida,   shaxarning   xaritasini   graf   sifatida   olsak,   unda
ko’chalarni   qirra   deb,   chorrahalarni   esa   uchlar   sifatida   olish   mumkin.   Bunda
faqat bir tomonlama harakat mavjud ko’chalarni yo’nalishga ega qirra deb olsak,
u   holda   ikki   tomonlama   harakat   mavjud   ko’chalarni   hech   qanday   yo’nalish
orqali   belgilab   bo’lmaydi.   Hech   bir   qirraga   intsidient   bo’lmagan   uch
yakkalangan   uch   deyiladi.   Agar   grafning   ikkita   uchini   tutashtiruvchi   qirra   bor
bo’lsa,   u   holda   bunday   uchlar   qo’shni   uchlar   deyiladi,   aks   holda   esa   qo’shni
bo’lmagan   uchlar   deyiladi.Faqat   yakkalangan   uchlardan   tashkil   topgan   grafni
nol graf deyiladi va 	
0 orqali belgilanadi.  Ikkita   chetki   ya’ni   boshlang’ich   va
oxirgi   qirralari   ustma-ust   tushga   qirra   sirtmoq   deyiladi   va   uni  	
L=	(a,a)   kabi
yoziladi (1.2–rasm). Agar rafning ikiita uchi o’zaro bir necha qirralar orqali
tutashgan   bo’lsa   bunday   qirralarni   parallel   yoki   karrali   qirralar   deyiladi   (1.3–
rasm).   Bunda   agar   graf   yo’naltirilgan   bo’lsa,   hr   bir   qirra   uchun   yo’nalish
aniqlanadi. Misol sifatida, jamoaviy musobaqani olish mumkin. Bunda jamoalar
mos   ravishda   grafning   uchlari   hisoblanadi.   Ikkita  	
А   va  	В   jamoalar   har   safar
5 a	a	bbir-biri   bilan   o’ynaganda   ular   qirra   orqali   tutashtiriladi.   Agar  	
А   jamoa  	В ni
yutsa u holda yo’nalish  	
А   dan  	В   tomon yoki, aksincha yo’naltiriladi. Durang
natija esa yo’naltirilmagan qirrani ifodalaydi.    
 1.2–rasm 1.3–rasm
Istalgan   ikkita   uchi   qo’shni   bo’lgan   sirtmoqsiz   va   karrali   qirralarsiz,
yo’naltirilmagan graf to’la graf deyiladi (1.4-rasm). Uchlari soni 	
m  ga teng to’la
graf  	
K	m   bilan   belgilanadi.   Ravshanki,  	K	m   grafning   qirralar   soni	
N	m=	m	(m	−	1)	
2
 ta bo’ladi. 
Grafni   tekislikda   tasvirlaganda   qirralarning   barcha   kesishish   nuqtalari
uchlardan iborat bo’lsa bunday graf tekis graf deyiladi (1.5–rasm).
                     1.4– rasm
1.5–rasm
Ba’zan graf undagi elementlar soniga qarab, ya’ni uchlar soni 	
m va qirralar soni	
n
 ga qarab belgilanadi va bu holda grafni 	(m	,n)  graf deb ataymiz. 
Agar 	
G  va 	G'  graflarning uchlari to’plamlari, 	V  va 	V'  to’plamlar
orasida   uchlarning   qo’shnilik   munosabatini   saqlaydigan   o’zaro   bir   qiymatli
6 moslik o’rnatilgan bo’lsa, u holda  G   va  	G'   graflar   izomorf   graflar deb ataladi
(1.4–rasm). Barcha izomorf graflar bir xil hossalarga ega bo’ladi. 
Bog’lamli yo’naltirilmagan tsiklga ega bo’lmagan graf daraxt deyiladi. Hususiy
holda daraxt sirtmoq va karrali qirralarga ega bo’lmaydi. 
Teorema   1.1.   Daraxtda   ixtiyoriy   ikki   uch   yagona   zanjir   bilan
bog’langan bo’ladi.  
Lokal   darajalar .   Agar   grafni   uni   tashkil   etuvchi   qirralari   soni   sanoqli   bo’lsa,
chekli graf , aksincha bo’lsa,  cheksiz graf  deb ataymiz. 	
G−
yo’naltirilmagan   graf   bo’lsin.   Bitta  	a   uchga   intsidient   bo’lgan
qirralar  soni  uning   lokal  darajasi   deyiladi   va  uni  
ρ(a)   (1.2)   kabi   belgilaymiz.
Biror   uchning   lokal   darajasi   hisoblanish   jarayonida   shu   uchga   intsidient
bo’lagan   sirtmoq   uchun   noaniqlik   vujudga   keladi.   Ya’ni,   sirtmoqni   qanday
hisobga   qo’shish   kerak;   bitta   qirra   sifatidami   yoki   ikkita.   Ushbu   holatda
qaralayotgan   masalaga   bog’liq   ravishda   qanday   hisoblash   qulaylik   tug’dirsa,
shunday hisoblagan ma’quldir. Shunga ko’ra, har bir holatda sirtmoqni qanday
tartibda hisoblanganligi ko’rastilishi zarur. 
Lokal daraja uchun bir necha sodda formulalar keltiramiz.  	
G   grafdagi  	a
va  	
b   uchlarni tutashtiruvchi  qirralar  sonini  	ρ(a,b)=	ρ(b,a)   kabi belgilaymiz.
Agar   grafda   karrali   qirralar   bo’lmasa,   u   holda   quyidagicha   hollar   bo’lishi
mumkin: 	
ρ(a,b)=	0	
ρ(a,b)=	1
Ko’rinib turibdiki, har bir (1.1.2) lokal darajada  	
a   uch uchun quyidagi yig’indi
mavjud:	
ρ(a)=	∑
b∈V	
ρ(a,b)
                                      (1.3)
7 G  grafdagi   qirralar   sonini  	v   deb   belgilaymiz.   Har   bir   qirra  	a   va  	b uch
bo’yicha   ikkita   lokal   darajada   ishtirok   etadi,   bundan   esa   quyidagiga   ega
bo’lamiz: 	
2v=	∑
a∈V	
ρ(a)
                                          (1.4)
yoki (1.3) ga ko’ra esa	
2v=	∑
a,b∈V
ρ(a,b)
                                   (1.5)
(1.4) formuladan ko’rinib turibdiki, chap tomon har doim juft son bo’ladi. 
Yuqoridagi   formulalardan   ko’rish   mumkinki,   yo’naltirilmagan   grafda
barcha uchlar lokal darajalar yig’indisi qirralar sonining ikki baravariga teng juft
son   bo’ladi,   chunki   qirralarni   sanaganda   har   bir   qirra   o’zi   intsidient   bo’lgan
uchlarda   ikki   marta   qatnashadi.   Shunga   ko’ra  	
XVIII asrdayoq   L.Eyler
tomonidan quyidagicha tasdiq isbotlangan.
Lemma–1. Ixtiyoriy yo’naltirilmagan grafda barcha uchlar darajalari
yig’indisi qirralar sonining ikki baravariga teng. 
2.2 .  Eng qisqa yo’llar masalalarining turlari.
Yo’l tarmoqlari atlasi (karta) qismi berilgan bo’lib, undan A va B nuqtalar
orasidagi “eng yahshi” marshrutni topish kerak bo’lsin. “Eng yahshi” marshrutni
ko’p faktorlar belgilashi  mumkin, masalan, tezlik cheklangan  holda marshrutni
o’tish vaqti, o’tish kerak bo’lgan shaharlar soni va boshqalar.
Biz   masalani   eng   qisqa   yo’llar   faktori   bo’yicha   yechamiz.   Masalaning
modeli   turlar   yordamida   tuziladi.   Uzluksiz   G   turni   har   bir   qirrasiga   uning
uzunligiga   teng   qiymat   berilgan   ko’rinishida   tuzamiz.   Bunday   turda   masofa
qirralar   yig’indisiga   teng   bo’ladi.   Masalaning   maqsadi   ikkita   berilgan   uchlar
orasidagi eng qisqa marshrutni topishdir.
8 Umuman,   eng   qisqa   yo’llar   masalalari   kombinator   optimallashtirishning
fundamental   muammolaridandir.   Ularning   bir   necha   turlari   mavjud,   masalan,
ikkita berilgan uchlar orasida, berilgan va   qolgan barcha uchlar orasida , turdagi
har bir uchlar juftliklari orasida va boshqalar.
2.3.   Floyd Algoritmi
Ushbu   algoritm   ba'zan   Floyd-Warshell   algoritmi   deb   ataladi.   Floyd-
Warshell   algoritmi   1962da   Robert   Floyd   va   Stiven   Uorchell   tomonidan   ishlab
chiqilgan   graflar   algoritmdir.   Grafning   barcha   juftlari   orasidagi   eng   qisqa
yo'llarni   topishga   xizmat   qiladi.   Floyd   usuli   to'g'ridan-to'g'ri   qovurg'alarning
ijobiy   og'irliklari   bo'lgan   ustunda,   har   qanday   elementar   bo'lmagan   (1
qovurg'asidan   ko'prog'ini   o'z   ichiga   olgan),   eng   qisqa   yo'l   boshqa   eng   qisqa
yo'llardan   iborat.   Ushbu   algoritm   Dijkstra   algoritmiga   nisbatan   ancha   keng
tarqalgan, chunki u har qanday ikki ustun o'rtasida eng qisqa yo'llarni topadi.
                Floyd   algoritmida   eng   qisqa   yo'llarning   uzunligi   hisoblangan   NxN
matritsasi   ishlatiladi.   A[i,j]   elementi,   agar   u   erda   chekka   (i,   j)   bo'lsa,yakuniy
qiymatga   ega   bo'lgan   va   aks   holda   abadiylikka   teng   bo'lgan   j   ning   yuqori
qismidan masofaga teng.
Floyd algoritm funktsiyasi tavsifi
void Floyd(int n, int **Graph, int **ShortestPath){
int i, j, k;
int Max_Sum = 0;
for ( i = 0 ; i < n ; i++ )
for ( j = 0 ; j < n ; j++ )
Max_Sum += ShortestPath[i][j];
for ( i = 0 ; i < n ; i++ )
9 for ( j = 0 ; j < n ; j++ )
if ( ShortestPath[i][j] == 0 && i != j )
ShortestPath[i][j] = Max_Sum;
for ( k = 0 ; k < n; k++ )
for ( i = 0 ; i < n; i++ )
for ( j = 0 ; j < n ; j++ )
if ((ShortestPath[i][k] + ShortestPath[k][j]) <
ShortestPath[i][j])
ShortestPath[i][j] = ShortestPath[i][k] +
ShortestPath[k][j];
}
      Agar graf yo'naltirilmagan bo'lsa, unda transformatsiyalar natijasida olingan
barcha   matritsalar   nosimmetrik   bo'lib,   shuning   uchun   faqat   asosiy   diagonaldan
yuqorida joylashgan elementlarni hisoblash kifoya.
        Agar graf qo'shni matritsasi bilan ifodalangan bo'lsa, unda bu algoritmning
ishlash vaqti o(n3) buyrug'iga ega, chunki u bir-biriga biriktirilgan uchta tsiklni
o'z ichiga oladi.
2.4. Deykstra algoritmning  so’zli tavsifi .
Deykstra   eng   qisqa   yo'l   algoritmi .   Deykstra   algoritmi   barcha   tugunlarning
berilgan   start   tugunidan   eng   qisqa   masofasini   topish   uchun   ishlatiladi.   U
mantiqiy   ravishda   bitta   manba   tugunidan   eng   qisqa   yo'l   daraxtini   yaratadi,
tugunlarni ochko'zlik bilan qo'shib turing, shunda har bir nuqtada daraxtning har
bir tuguni berilgan boshlash tugunidan minimal masofaga ega bo'lad.
` Eng qisqa masofani topish masalalarni yechish uchun Deykstra algoritmi
ancha qulay va yahshi deb topilgan.
10 Algoritm quyidagi qadamlardan iborat:  
1. Dastlab,   berilgan   (Lex)   uchidan   qolgan   barcha   uchlargacha   bir   qirra
uzunligidagi masofalar aniqlanadi.  
2. Ulardan   eng   qisqasi   “doimiy   eng   qisqa   masofa”   sifatida   belgilanadi
( Lex   va   BVa   uchlari qirrasi).  
3. Aniqlangan   masofa   BVa   dan   boshqa   bor   uchlargacha   masofalarga
qo’shiladi.  
4. Hosil   bo’lgan   yig’indilar   dastlab   aniqlangan   Lex   dan   qolgan   uchlargacha
bo’lgan   masofalar   bilan   taqqoslanadi.   Natijada   masofasi   qisqaroq   bo’lgan
uchning qirrasi tanlanadi.  
5. BVa   uchi,   eng   qisqa   masofa   aniqlangan   uch   sifatida,   ruyhatdan   o’chiriladi.
Ruyhatga   boshqa   uch   qo’yiladi,   masalan,   Roa.   Bva   o’z   navbatida,   boshqa,
izlanayotgan ruyhatga qo’yiladi.  
Keyingi   eng   qisqa   masofani   topish   uchun   butun   jarayon   qayta
bajariladi.   BVa   dan   keyin   yana   bir   uch   ruyhatga   qo’yiladi.   Dastlabkisi   esa
ruyhatdan   o’chiriladi.   Sikl   Bed   va   Lex   uchlarini   bog’lash   uchun   belgilangan
qirralar aniqlanishi bilan to’xtatiladi.
Deykstra   algoritmiGrafikdagi   ma'lum   bir   manba   tuguniga   ega   bo'lgan
algoritm   bu   tugun   bilan   har   bir   boshqa   o'rtasidagi   eng   qisqa   yo'lni   topadi.
Bundan   tashqari,   bitta   tugunning   eng   qisqa   yo'llarini   to'xtatish   yo'li   bilan   bitta
maqsadli tugunga maqsad tuguniga eng qisqa yo'l aniqlanganidan keyin algoritm
aniqlandi.   Masalan,   agar   grafika   tugunlari   shaharlarni   ifodalasa   va   chekka
xarajatlari   to'g'ridan-to'g'ri   yo'l   bilan   bog'langan   shaharlarning   juftliklari
o'rtasidagi   masofani   ifodalaydi   (oddiylik   uchun,   qizil   chiroqlar,   ishlamaydigan
belgilar, pullik yo'llar va boshqa to'siqlarni e'tiborsiz qoldirish uchun), Deykstra
algoritmi   ishlatilishi   mumkin   Bir   shahar   va   boshqa   shaharlarning   eng   qisqa
yo'lini   topish.   Qisqa   yo'l   algoritmining   keng   tarqalgan   qo'llanilishi   tarmoqni
boshqarish  protokollaridir,  Shuningdek,  Jonson   kabi   boshqa   algoritmlarda  ham
subroutin sifatida qo'llaniladi.
11 Deykstra algoritmida musbat tamsayı yoki haqiqiy sonlar bo'lgan etiketlar
ishlatiladi,   bu   aniq   zaif   tartibga   solingan.   Qiziqarli   tomoni   shundaki,   Deykstra
aniq   belgilangan   qisman   tartibga   ega   bo'lgan   va   keyingi   teglar   (bir   chekkadan
o'tib   ketganda   keyingi   yorliq)   monotonik   ravishda   kamaymaslik   sharti   bilan
aniqlangan   teglardan   foydalanish   uchun   umumlashtirilishi   mumkin.   Ushbu
umumlashma umumiy Deykstra qisqa yo'l algoritmi deb ataladi.
Bu asimptotik jihatdan cheklanmagan bo'lmagan grafikalar uchun eng tez-
tez ma'lum bo'lgan yagona manbali eng qisqa yo'l algoritmidir. salbiy og'irliklar.
Shu   bilan   birga,   ixtisoslashgan   variantlar   (masalan,   cheklangan   /   to'liq   sonlar,
yo'naltirilgan   asiklik   grafikalar   va   h.k.)   ixtisoslashgan   variantlarda   batafsil
ravishda   takomillashtirilishi   mumkin.Ba'zi   sohalarda,   xususan   sun'iy   aql,
Dijkstra algoritmi yoki uning bir nusxasi bir xil xarajat qidiruvi deb nomlanadi
va   eng   yaxshi   qidiruvga   oid   umumiy   g'oyaning   misoli   sifatida
shakllanadi. Algoritm   Dijkstra   algoritmining   robot   harakati   rejalashtirishda
boshlang'ich tugunidan (pastki chap, qizil) maqsad tuguniga (yuqori o'ng, yashil)
yo'l topish. Ochiq tugunlar "noaniq" to'plamni aks ettiradi ("novisited" tugunlar
to'plami).   To'ldirilgan   tugunlar   tashrif   buyuriladi,   rangi   masofani   ifodalaydi:
yashil,  qanchalik  yaqin. Dijkstra  algoritmida  0 ga  teng  bo'lgan heuristik  usulni
qo'llaganidek,   barcha   yo'nalishdagi   tugunlar   bir   xil   tarzda   o'rganilib,   dyuym
to'lqinlari   ko'rinishida   ko'proq   yoki   kamroq   ko'rinadi.
Biz boshlayotgan tugunni boshlang'ich tugun deb ataymiz. Y tugunining masofa
boshlang'ich   tugunidan   Ygacha   bo'lgan   masofa   bo'lsin.   Dijkstra   algoritmi   ba'zi
boshlang'ich   masofani   qadrlaydi   va   ularni   bosqichma-bosqich
takomillashtirishga   harakatqiladi.Barcha   tugunlarni   kutmasdan   belgilang.
Ko'rinmas   to'siq   deb   nomlangan   barcha   ko'rinmaydigan   tugunlarni   yaratish.
Har   bir   tugunga   vaqtinchalik  masofa   qiymatini   belgilang:   bizning  boshlang'ich
tugunimiz   uchun   nolga   va   boshqa   barcha   tugunlar   uchun   abadiyatga   sozlang.
Boshlang'ich tugunni dolzarb deb belgilang.
  Joriy   tugun   uchun,   hozirgi   tugunlar   orqali   barcha   ko'rinmagan
qo'shnilarini   hisobga   oling   va   o'z   vaqt   oralig'ini   hisoblang.   Yangi   tayinlangan
12 vaqtinchalik   masofani   joriy   tayinlangan   qiymat   bilan   taqqoslang   va   undan
kichikroqni   tayinlang.   Masalan,   agar   A   tugmasi   6   ga   teng   bo'lsa   va   qo'shni   B
bilan bog'laydigan chetning uzunligi  2 bo'lsa,  B dan Agacha masofa 6 + 2 = 8
bo'ladi.   Agar   B   ilgari   belgilangan   bo'lsa,   8dan   katta   masofa,   keyin   uni   8   ga
o'zgartiring. Aks holda, joriy qiymatni saqlang.
  Biz   tugunning   barcha   ko'rinmagan   qo'shnilarini   hisobga   olgan   holda
tugallangandan so'ng, joriy tugunni tashrif buyurgan deb belgilab qo'ying va uni
ko'rinmas   to'siqdan   olib   tashlang.   Tashlangan   tugma   hech   qachon
tekshirilmaydi.
13 14 Agar   maqsad   tugunni   tashrif   buyurilgan   deb   belgilansa   (ikki   maxsus   tugma
o'rtasida   marshrutni   rejalashtirganda)   yoki   ko'rinmagan   guruhdagi   tugunlar
orasida eng kichik masofa cheksiz bo'lsa (to'liq traversalni rejalashtirayotganda,
boshlang'ich   tugun   bilan   va   bekor   qilinmagan   tugunlarni)   keyin   to'xtating.
Algoritm tugadi.
  Aks  holda,  eng  kichik vaqt   oralig'i   bilan belgilanmagan  ko'rinmaydigan
tugunni tanlang, uni yangi «joriy tugun» deb o'rnating va 3-bosqichga qayting.
Marshrutni   rejalashtirishda,   aslida   maqsadli   tugun   yuqorida   ko'rsatilgan
"kutilgan"   bo'lguncha   kutishning   hojati   yo'q:   maqsadli   tugun   barcha
"kutilmagan"   tugunlar   orasidagi   eng   kichik   masofani   egallab   olgandan   so'ng
to'xtashi mumkin.
Izoh:   tushunish   qulayligi   uchun   bu   munozarada   choralar,   yo'llar   va   xarita
atamalaridan  foydalaniladi,   ammo  rasmiy   terminologiyada   bu  atamalar   navbati
bilan vertex, kenar va grafika hisoblanadi.
Bir   shahar   xaritasida   ikkita   kavshak   o'rtasida   eng   qisqa   yo'lni
topmoqchiman:   boshlang'ich   nuqtasi   va   borar   joyi.   Dijkstra   algoritmi   dastlab
masofani   (boshlang'ich   nuqtadan)   xaritada   har   bir   kesib   o'tish   joyiga   abadiylik
bilan   belgilaydi.   Bu   cheksiz   masofa   mavjudligini   anglatmaslik   uchun   emas,
balki   bu   chorrahalar   hali   kelmaganligini   ta'kidlash   uchun   qilingan.   Ushbu
usulning   ayrim   variantlari   kesishmalarning   masofalaridan   ajralmagan   holda
qoldiriladi.   Endi   har   bir   iteratsiyada   joriy   kesishni   tanlang.   Birinchi   iteratsiya
uchun joriy kesish boshlanish nuqtasi bo'ladi va unga masofa (kesishma yorlig'i)
nol   bo'ladi.   Keyingi   izlanishlar   uchun   (keyingi   birinchi),   joriy   kesishish
boshlang'ich   nuqtaga   eng   yaqin   ko'rinmaydigan   kesishish   bo'ladi   (bu   oson
topiladi).Joriy kesishuvdan to'g'ridan-to'g'ri bog'langan har qanday ko'rinishdagi
kesishma   masofani   yangilang.   Buning   sababi,   mavjud   bo'lmagan   kesishma   va
joriy kesishma qiymatlari o'rtasidagi masofaning umumiy miqdorini belgilash va
keyinchalik   kiritilmagan   kesishishning   ushbu   qiymatga   (summaga)
kiritilmasligi, agar u kutilmagan kesishma oqimining qiymatidan kamroq bo'lsa.
Haqiqatdan  ham, agar   kesishma  yo'li   orqali  unga  yo'l  oldindan  ma'lum   bo'lgan
15 yo'llardan   qisqartirilsa,   kesishma   qayta   belgilanadi.   Eng   qisqa   yo'lni
identifikatsiyalashni   engillashtirish   uchun,   qalamda   yo'lni   ko'rsatgich   bilan
belgilab   qo'ying   va   uni   ko'rsatgan   barcha   belgilarni   o'chirib   tashlang.   Har   bir
qo'shni   kesib  o'tish  joyiga  masofani  yangilaganingizdan  so'ng,   joriy  kesishuvni
tashrif buyurilgan deb belgilang va eng kichik masofani (boshlang'ich nuqtadan)
yoki   eng   pastki   belgini   -   mavjud   kesishma   sifatida   tanlamang.   Ko'rilgan   deb
nomlangan uchastka  boshlang'ich  nuqtadan eng qisqa  yo'l  bilan etiketlanadi  va
qayta ko'rib chiqilmaydi yoki qaytarilmaydi.
Qo'shni  uchastkalarni  eng qisqa masofalar bilan yangilab borish, mavjud
kesishishni   tashrif   buyurgan   deb   belgilash   va   maqsadni   tashrif   buyurgan   deb
belgilaguningizcha   eng   yaqin   ko'rinmaydigan   kesma   tomonga   o'tish   jarayonini
davom   ettiring.   Belgilangan   joyni   tashrif   buyurganingiz   kabi   belgilab
qo'yganingizdan   so'ng   (siz   tashrif   buyurgan   har   qanday   kesishmada   bo'lgani
kabi),   siz   boshlash   nuqtasidan   eng   qisqa   yo'lni   belgilab   oldingiz   va   orqadagi
o'qlar   orqasidan   yo'lni   orqaga   qaytarasiz.   Algoritmni   amalga   oshirishda,   bu
odatda tugma tugunlaridan boshlang'ich tuguniga qadar tugunlarni ota-onalariga
rioya qilish yo'li bilan amalga oshiriladi  (algoritm maqsadli tugunga yetgandan
keyin); Shuning uchun biz har bir tugunning ota-onasini kuzatib boramiz.Ushbu
algoritm   kutilayotgan   maqsadga   yo'naltirilgan   to'g'ridan-to'g'ri   "qidiruv"
harakatlariga   yo'l   qo'ymaydi.   Aksincha,   kelgusi   "joriy"   kesishishni   aniqlashda
yagona   e'tibor   uning   boshlang'ich   nuqtasigacha   bo'lgan   masofasidir.   Shuning
uchun   ushbu   algoritm   boshlang'ich   nuqtadan   tashqariga   chiqadi,   interaktiv
ravishda   maqsadga   etgunga   qadar   eng   qisqa   yo'l   masofasi   jihatidan   yaqinroq
bo'lgan   har   bir   tugunni   hisobga   oladi.   Shu   tarzda   tushunilsa,   algoritm   qanday
qilib eng qisqa yo'lni topish kerakligi aniq. Shu bilan birga, u algoritmning zaif
tomonlaridan   birini   ham   ko'rsatishi   mumkin:   ba'zi   bir   topologiyalardagi   nisbiy
sekinligi
16 C++ dastur kodi
Quyidagi   algoritmda   kodi   u   ning   vertex'si   min   dist   [u]   ga   teng,   u   vertex
majmuasida eng kam dist [u] qiymati bo'lgan vertex u ni izlaydi. uzunligi (u, v)
ikki qo'shni n-tugunni u va v o'rtasidagi chegara uzunligini qaytaradi. 18-satrda
o'zgaruvchining pastki qismi - ildiz tugunidan qo'shni tugunga yo'lning uzunligi
v   U   orqali   o'tish   kerak   edi.   Ushbu   yo'l   v   uchun   saqlangan   joriy   qisqa   yo'ldan
qisqartirsa, u joriy yo'l bu pastki yo'l bilan o'zgartiriladi. Avvalgi qator manbaga
eng qisqa yo'lni olish uchun manba grafasida "keyingi-hop" tuguniga ko'rsatgich
bilan to'ldiriladi.
С++ dasturlash tilida quyidagicha bo’ladi:
#include<bits/stdc++.h>
#define INF INT_MAX
using   namespace  std;
// Function to find the non-visited node which is at minimum distance
int   findMin ( int  n, int  cost [] , bool  visited []){
int  min=INF;
int  node=0;
for ( int  i=0;i < n;i++ ){
if ( visited [ i ] == false  && min > cost [ i ]){
min=cost [ i ] ;
node=i;
}
}
return  node;
}
void   dijkstra ( int  n, vector < pair < int , int >>  graph [] ,  int  start ){
17 bool  visited [ n ] ;  // to specify which nodes are yet to visit
int  cost [ n ] ;  // cost[i] specifies the minimum cost to reach ith node from start node through visited
nodes
for ( int  i=0;i < n;i++ ){
cost [ i ] =INF;  // initialize cost array with INFINITY
// to signify that all nodes are non-reachable initially
visited [ i ] = false ;  // initialize visited array with false 
// to signify that all nodes are non-visited initially
}
cost [ start ] =0;  // minimum cost to reach the start node will be zero
int  count=0;  // count will keep track of how many nodes are visited till now
while ( count < n ){
int  node =  findMin ( n,cost,visited ) ;
visited [ node ] = true ;
for ( auto  &i:graph [ node ]){
if ( visited [ i. first ] == false ){
cost [ i. first ] = min ( cost [ i. first ] ,cost [ node ] + ( i. second )) ;
}
}
count++;
}
for ( int  i=0;i < n;i++ ){
cout << "Distance of node " << i << " from node " << start << " is " << cost [ i ]<< "\n" ;
}
}
int   main (){
int  n,e;
18 cin >> n >> e;
vector < pair < int , int >>  graph [ n ] ;
for ( int  i=0;i < e;i++ ){
int  u,v,w;
cin >> u >> v >> w;
graph [ u ] . push_back ( make_pair ( v,w )) ;
graph [ v ] . push_back ( make_pair ( u,w )) ;
}
int  start;
cin >> start;
dijkstra ( n,graph,start ) ;
}
Kiruvchi ma’lumotlar
Input:
4  5
0  1  12
0  3  24
2  0   3
1 3  10
3  2  12
0
Chiquvchi ma’lumotlar
Output:
Distance of node 0 from node 0 is 0
Distance of node 1 from node 0 is 12
Distance of node 2 from node 0 is 3
Distance of node 3 from node 0 is 15
6.Tegishli muammolar va algoritmlar.
Dijkstra   original   algoritmining   funktsiyalari   turli   modifikatsiyalar   bilan
kengaytirilishi mumkin. Masalan, ba'zida matematik jihatdan maqbul bo'lmagan
echimlarni   taqdim   etish   maqsadga   muvofiqdir.   Kamdan-kamroq   optimal
19 echimlar topilgan ro'yxatini olish uchun maqbul echim avval hisoblab chiqilgan.
Optimal   eritmada   ko'rinadigan   bitta   qirrali   grafadan   chiqariladi   va   bu   yangi
grafikka   optimal   echim   hisoblanadi.   Dastlabki   eritmaning   har   bir   qirrasi   o'z
navbatida bekor qilinadi va yangi qisqa yo'l aniqlanadi. Keyinchalik, ikkilamchi
eritmalar   birinchi   optimal   eritmaning   so'ng   baholanadi   va   taqdim
etiladi.Dijkstraning   algoritmi,   odatda,   ulanish-davlat   marshrutlash   protokollari,
OSPF   va   IS-IS   eng   keng   tarqalgan   bo'lib   turadigan   ish   printsipi
hisoblanadi.Dijkstra   algoritmidan   farqli   o'laroq,   Bellman-Ford   algoritmi
gorizontal manba vertolyotidan salbiy tsiklga ega bo'lmasa, salbiy qirrali grafika
bilan   ishlatilishi   mumkin.   Bunday   aylanishlarning   mavjudligi   eng   kichik   yo'l
yo'qligini  anglatadi, chunki  har  bir  tsiklda  aylanish jarayonida umumiy og'irlik
pastga   aylanadi.   Dijkstra   algoritmini   salbiy   og'irlik   chekkalarini   Bellman-Ford
algoritmiga   (salbiy   qirralarni   olib   tashlash   va   salbiy   davrlarni   aniqlash)
birlashtirish   yo'li   bilan   moslashtirish   mumkin,   bunday   algoritm   Jonsonning
algoritmi deb ataladi.
A   *   algoritmi   Dijkstra   ning   algoritmini   umumlashtirish,   agar   maqsadga
"masofadan"   pastroq   bo'lgan   cheklovni   ta'minlaydigan   qo'shimcha   ma'lumot
mavjud bo'lsa, o'rganilishi kerak bo'lgan subgraf o'lchamini qisqartiradi. Ushbu
yondashuv   chiziqli   dasturlash   nuqtai   nazaridan   qaralishi   mumkin:   eng   qisqa
yo'llarni   hisoblash   uchun   tabiiy   chiziqli   dastur   mavjud   va   uning   ikkilamchi
chiziqli   dasturiga   echimlarni   kiritish   mumkin   va   ular   faqat   izchil   sezgirlikni
shakllantirsa   (taxminan,   so'zma-so'z   konventsiyalari   farqlanadi)   adabiyotda
joydan   joygacha).   Ushbu   mumkin   bo'lgan   ikkilangan   /   izchil   topilmalar   salbiy
bo'lmagan   past   narxni   belgilaydi   va   A   *   bu   Dijkstra   algoritmini   ushbu   kam
xarajatlar   bilan   boshqaradi.   Agar   ikkilamchi   qabul   qilishning   zaif   holatini
qondirsa, A * o'rniga Bellman-Ford algoritmiga ko'proq mos keladi.
Dijkstraning   algoritmining   asoslanishi   jarayon   Primet   algoritmida
ishlatiladigan ochko'z  jarayonga o'xshaydi.  Primning maqsadi  grafadagi  barcha
tugunlarni   bir-biriga   bog'lovchi   minimal   spanning   daraxtni   topishdir;   Dijkstra
faqat ikkita tugun bilan bog'liq. Primer, yo'lning umumiy og'irligini boshlang'ich
20 tugunidan, faqatgina individual  qirralarni baholaydi.Kichkina birinchi qidiruvni
Dijkstra   algoritmini   taqqoslanmagan   graflarda   ko'rib   chiqish   mumkin,   bu   erda
navbatdagi   navbat   FIFO   navbatiga   ziyon   beradi.Tez   marshing   usuli   Dijkstra
algoritmining uchburchak meshidagi geodezial masofani hisoblaydigan uzluksiz
versiyasidir.
21 X ulosa
Xulosa   qilib   aytganda   A lgoritm   bilan   ishlash   barcha   turdagi   dasturlash
tillarida ishlash   uchun   kerak   buladi .  Algoritmsiz biror bir   dasturlash   tilida dastur
yaratib   bulmaydi .   Xar   bir   dasturning   dastlab   algoritmini   yaratib   olish   zarur .
A gar   biz   dasturimizning   ketma - ketligini   bilmasak   ,   u   dastur   biz   uylagandan
kuproq   xajmni egallashi   mumkin   ekan .  Men  C ++ dasturlash tilida malumotlarni
izlash , saralash, qayta ishlash kabi amallarni yuqorida kursatib utilganidagidek
bir  va ikki  ulchovli  massivlarda  bajarilganini  kurib bilim  va kunikmalarga ega
buldim. Men C++ dasturi strukturasi xaqida, belgilar bayoni, algoritm va dastur
tushunchasi,   malumotlarni   kiritish   va   chiqarish   operatorlari   xamda   dasturda
ishlatiladigan   toifalar,   ifodalar   va   kunikmalarga   ega   buldim .   Algoritmlash   va
dasturlash tillari buyicha yozilgan bir nechta kitoblar bilan tanishib chiqdim va
ulardan   uzimga   kerakli   malumotlarni   oldim.   Kurs   ishimda   Deyskra
algoritmining   ishlash   prinsplarini   ko’rib   uning   ishlashini   dasturlarda   amaliy
ko’rib chiqdim.
   
22 Foydalangan adabiyotlar:
1.   В.А.Успенский,     А.Л.Семенов.     Теория     алгоритмов:     основные     открыти
я     и    
приложения.   –   М:   Наука,   1987,   287   с.    
2.     Т..Кормен,     Ч.Лейзерсон,     Р.Ривест.     Алгоритмы:     построение     и     анализ  
Сер:Классические   учебники.   М.:   МЦНМО,   2001.-   960   с.    
3.     Тыугу   Х.   Концептуальное   программирование.   М:   Наука,   1984.    
4.       Н.   Вирт.   Алгоритмы   и   структуры   данных.   –   Досса,   Хамарайан,   1997.    
5.  Ф. Харрари. Теория графов. Москва – 1973.
6. А.А.Азамов. Основания теории дискретн ых игр. Тошкент –2011. 
7. Н.Кристофидес. Алгоритмический подход., Моква –1978.
8. А.И. Благодатских. Введение в оптимальное управления. Москва –2001.
9. Б.Н.Пшеничный.,     В.В.   Остапенко.   Дифференциальные   игры.   Киев   –
1992.
10. Б.Б.   Рихсиев.   Дифференциальные   игры   с   простыми   движенями.
Тошкент –1989.
11.   Ж.С.Маматов.,   Х.Норжигитов.   О   длине   полуэйлеровых   циклов   в
графах. ЎзР ФА маърузалари. №2. 2012.6-8сс.
12. Ж.С.Маматов.   Об   оценке   длин ы   полуэйлеров ы х   циклов   в   графах.
Тезисы   докладов   республиканской   научной   конференции   с   участием
зарубежных   ученых   «Операторные   алгебры   и   смежные   проблемы».
Тошкент. 2012. 177с. 
13. A.Azamov.   J.S.   Mamatov.   Semieulerian   Cycles   in   Graphs   and   their
Applications   to   Dynamical   Searching   Game.//   Game   theory   and   management.
The   sixth   International   Conference   Game   Theory   and   Management   –   GTM
2012/ pp 37-38.   
14. Ж.С.Маматов.   “Графларда   яримэйлер   циклларини   баҳолаш”.   Аниқ
фанларни   ўқитишнинг   долхзарб   муаммолари.   Илмий-амалий   анжуман
материаллари. Гулистон –2013. 50бет.  
23 15.   Ҳ.Тўраев.,   И.   Азизов.   Математик   мантиқ   ва   дискрет   математика.
Тошкент, 2011. 
16.   www    .   edu    .   uz    .
17.   www    .   ziyonet    .   uz    .
18.   www.mathnet.ru
24

“Graflarda eng qisqa masofani topish algoritmlari” mavzusidagi Reja: I. Kirish II. Asosiy qism 1. Asosiy tushuncha 2. Eng qisqa masofani toppish algoritmlari 3. Floyd algoritmi 4. Deykstra algoritmi III. Xulosa IV. Foydalanilgan adabiyotlar 1

KIRISH Algoritmlarning turli ta’riflari mavjud. Rasmiy ta’riflardan biri bo’yicha algoritm bu qo’yilgan masalani bir xil yechilishiga olib keluvchi aniq harakatlarning ketma-ketligi. Bu tushunchadan algoritmning quyidagi xossalari kelib chiqadi: 1. Diskretlilik – ya’ni aniqlanayotgan jarayonni qadamba-qadam ko’rinishi. 2. Ommaviylik – algoritm o’xshash masalalar turkumini yechishi kerak. 3. Tushunarlilik – algoritmda beriladigan ko’rsatmalar foydalanuvchiga tushunarli bo’lib, uning talablariga javob berishi kerak. 4. Aniqlilik – algoritmda ma’lum tartibda amallarni bajarish nazarda tutilishi kerak va bajaruvchiga joriy qadam tugatilishi bilan qaysi qadam keyingi bo’lib bajarilishi aniq ko’rsatilishi kerak. Algoritmlar rasmiy ravishda bajariladi, bu degani bajaruvchi bajarilayotgan amallarni mazmunini anglash shart emas. Algoritm tuzish jarayoniga algoritmlashtirish deyiladi. Algoritm tuzish jarayonida nazariy va amaliy nuqtai nazardan algoritmlash, dasturlash va EHM larni qo’llash bilan bog’liq bo’lgan bilimlar kerak. Asosiy maqsad bu masalani qo’yish, masalaning yechish algoritmini tuzish, algoritmi mashina dasturi ko’rinishida amalga oshirish va algoritmni samaradorligini ko’rsatish muammolarini o’rganish. Bu jarayonlar algoritmni to’liq yaratish tushunchasiga olib keladi va quyidagi bosqichlarni belgilaydi: 1. Masalaning qo’yilishi. 2. Modelni yaratish. 3. Algoritmni ishlab chiqish. 4. Algoritm to’g’riligini tekshirish. 5. Algoritmni amalga oshirish. 6. Algoritmni va ularning murakkabligini tahlil qilish. 7. Dasturni tekshirish. 8. Hujjatlashtirish. 2

2.1Asosiy tushuncha. Qandaydir masalani xal etishga kirishishdan avval buning uchun eng yaxshi uslub izlanadi va uni qay tarzda tavsiflash aniqlanadi. Boshqacha qilib aytganda, biz doimo maqsadi ba’zi bir zaruriy natijaga erishishdan iborat, amallar ketma-ketligi bilan berilgan turli-tuman qoidalarga duch kelamiz. Bunday amallarning ketma-ketligi algoritm deb ataymiz. Matematikada algoritmning murakkabligi, xal etish masalalari va ularni ishlab chiqish prinsiplarini o‘rganadigan maxsus “Algoritmlar nazariyasi” bo‘limi xam mavjud. Algoritmlar nazariyasi – algoritmlarning umumiy xossalari, qonuniyatlari va ularni tasvirlanishining turli-tuman formal modellarini o‘rganish bilan shug'ullanadi. Algoritm tushunchasini formallashtirish asosida ularning samaradorligi taqqoslash, ularning ekvivalentligi tekshirish, qo‘llanilish sohasini aniqlash mumkin. Graflar nazariyasining asosiy masalasi berilgan nuqtalar va ularni tutashtiruvchi chiziqlarning xossalaridan tashkil topadi. Bunday talqinda chiziqlarnig to’g’ri chiziq yoki kesma, yoylardan yoki egri chiziqlardan iborat bo’lishi hamda bu chiziqlar qaerda joylashishi, uzun yoki qisqa bo’lishi muhim emas. Shunisi muhimki bu chiziqlar berilgan ikki nuqtani tutashtiradi. 1736 – yilda L.Eyler tomonidan o’sha davrda qiziqarli amaliy masalalardan biri hisoblangan Kyonisberg ko’priklari haqidagi masalaning qo’yilishi va echilishi graflar nazariyasining paydo bo’lishiga asos bo’ldi. Kyonisberg shaxridagi Pregel daryosi ustiga qurilgan yitita ko’prik o’sha vaqtda shaxarni to’rtta qismga ajratgan. Shaxarning ixtiyoriy qismida joylashgan uydan chiqib yitita ko’rikdan faqat bir martadan o’tib, yana o’sha uyga qaytib kelish mumkinmi? Kyonisberg ko’priklari haqidagi bu masalani hal qilish jarayonida graflarda maxsus marshrut (hozirgi vaqtda graflar nazariyasida bu marshrut Eyler tsikli nomi bilan yuritiladi) mavjudligi shartlari ham topildi. L.Eyler tomonidan e’lon qilingan tarixiy ilmiy ish yuz yildan kuproq vaqt mobaynida graflar nazariyasi bo’yicha 3

yagona ilmiy ish bo’lib keldi. XIX-asrning o’rtalarida graflar nazariyasi bilan bog’liq tadqiqotlar G.Kirxgof (1924–1887, olmon fizigi) va A.Keli (1821– 1895, ingliz matematigi) ishlarida paydo bo’ldi. “Graf” iborasi D.Kyonig (1884– 1944, venger matematigi) tomonidan 1936– yilda graflar nazariyasiga bag’ishlangan dastlabki darsliklarda uchraydi. Graflar nazariyasi bo’yicha tadqiqotlar natijalari inson faoliyatining turli sohalarida qo’llaniladi. Ulardan ba’zilari quyidagilar: boshqotirmalarni hal qilish; qiziqarli o’yinlar; yo’llar, elektr zanjirlari, integral sxemalari va boshqarish sistemalarini loyihalashtirish va hakazo. Avvalo grafning abstrakt matematik tushuncha sifatidagi ta’rifini keltiramiz. Ixtiyoriy nuqtalarning qandaydir usulda bog’lanishidan tashkil topgan V to’plamni qaraymiz. Ushbu V to’plamni uchlar to’plami va uning v∈V− elementlarini esa uchlar deb ataymiz. V to’plamning v1∈V va v2∈V elementlaridan tuzilgan (v1,v2) ko’rinishidagi barcha juftliklar to’plamini ( V to’plamning o’z-o’ziga Dekrat ko’paytmasini) V× V deb belgilaymiz. Graf deb shunday (V ,U ) juftlikga aytiladiki, bu erda V ≠ O va U − (v1,v2) ko’rinishidagi juftliklar bo’lib, V× V to’plamning elementlaridan tuzilgandir. Grafni lotin alifbosining G harfi bilan belgilaymiz. Grafga ta’rif berishda boshqacha yondoshuvdan ham foydalanish mumkin. G = G (V ) graf deb bir qancha V uchlar to’plamining birlashmasiga yoki E=(a,b)(a,b∈V ) (1.1) qaysi uchlar bog’langanligini ko’rsatuvchi juftliklarga aytiladi.Mos ravishda grafning geometrik tasvirida aniq har bir (1.1) juftlik grafning qirrasi deyiladi, a va b uchlar esa E qirraning oxirlari deyiladi. Qirraning (1.1) ta’rifida uning oxirgi ikki uchining joylashish tartibi e’toborga olinishi ham, olinmasligi ham mumkin. Agar bunday tartib mavjud bo’lmasa, ya’ni E = (a,b )= (b,a) deyish mumkin bo’lsa, u holda E ni yo’naltirilmagan qirra deb ataladi. Agar bunday tartib mavjud bo’lsa, u holda qirra yo’naltirilgan qirra deyiladi. Yo’naltirilgan E = (a,b ) qirrada a boshlang’ich uch, b oxirgi 4

uch deb hisoblanadi. Shuningdek E qirrani a uchdan chiquvchi va b uchga boruvchi qirra deyiladi. Qirra yo’naltirilgan bo’lgan holda ham, yo’naltirilmagan holda ham E= (a,b) qirra a va b uchlarga intsidient deb ataladi. Grafni yo’naltirilmagan deyiladi, agar uning barcha qirralari yo’naltirilmagan bo’lsa (1.1.a–rasm), yo’naltirilgan deyiladi agar barcha qirralari yo’naltiriligan bo’lsa (1.1.b– rasm). 1.1.a–rasm 1.1.b–rasm. Ham yo’naltirilgan, ham yo’naltirilmagan qirralarga ega bo’lgan graf aralash graf deyiladi. Misol sifatida, shaxarning xaritasini graf sifatida olsak, unda ko’chalarni qirra deb, chorrahalarni esa uchlar sifatida olish mumkin. Bunda faqat bir tomonlama harakat mavjud ko’chalarni yo’nalishga ega qirra deb olsak, u holda ikki tomonlama harakat mavjud ko’chalarni hech qanday yo’nalish orqali belgilab bo’lmaydi. Hech bir qirraga intsidient bo’lmagan uch yakkalangan uch deyiladi. Agar grafning ikkita uchini tutashtiruvchi qirra bor bo’lsa, u holda bunday uchlar qo’shni uchlar deyiladi, aks holda esa qo’shni bo’lmagan uchlar deyiladi.Faqat yakkalangan uchlardan tashkil topgan grafni nol graf deyiladi va 0 orqali belgilanadi. Ikkita chetki ya’ni boshlang’ich va oxirgi qirralari ustma-ust tushga qirra sirtmoq deyiladi va uni L= (a,a) kabi yoziladi (1.2–rasm). Agar rafning ikiita uchi o’zaro bir necha qirralar orqali tutashgan bo’lsa bunday qirralarni parallel yoki karrali qirralar deyiladi (1.3– rasm). Bunda agar graf yo’naltirilgan bo’lsa, hr bir qirra uchun yo’nalish aniqlanadi. Misol sifatida, jamoaviy musobaqani olish mumkin. Bunda jamoalar mos ravishda grafning uchlari hisoblanadi. Ikkita А va В jamoalar har safar 5