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

Docx

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

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

Цена 12000UZS
Размер 158.0KB
Покупки 0
Дата загрузки 07 Ноябрь 2026
Расширение docx
Раздел Дипломные работы
Предмет Педагогика

Продавец

Bohodir Jalolov

Kommivoyajer masalasini hal qilish usullari

Купить
MUNDARIJA
KIRISH
I BOB. KOMMIVOYAJER MASALASI.
1.1.  Umumiy tavsif
1.2.  Kommivoyajer masalasini hal qilish usullari
1.3 . Dijkstra algoritmi
II BOB. Kommivoyajer masalasini hal qilish usullari
2.1  . Kommivoyajer masalasini hal qilish uchun mening usulim
2.2  . Kommivoyajer masalasini hal qilish usullarini tahlil qilish
2.3.  Kommivoyajer masalasini amaliy qo'llanilishi
Xulosa
Adabiyot Kirish
Kombinatorika   -   matematikaning   ma'lum,   odatda   chekli   to'plam
elementlarini   berilgan   qoidalarga   muvofiq   tanlash   va   joylashtirish   masalalarini
echishga bag'ishlangan bo'limi.
kombinator   deb   ataladigan   asl   to'plamning   elementlaridan   ma'lum   bir
konstruktsiyani qurish usulini belgilaydi   konfiguratsiya SHuning uchun aytishimiz
mumkinki,   kombinatsion   tahlilning   maqsadi   kombinator   konfiguratsiyalarni
o’rganishdir.   Ushbu   tadqiqot   kombinatsion   konfiguratsiyalarning   mavjudligi,
ularni   qurish   algoritmlari,   bunday   algoritmlarni   optimallashtirish,   shuningdek,
sanab   o'tish   masalalarini   hal   qilish,   xususan,   berilgan   sinfning   konfiguratsiyalar
sonini  aniqlash   masalalarini  o'z   ichiga  oladi.  Kombinator  konfiguratsiyalarga   eng
oddiy misollar almashtirishlar, kombinatsiyalar va tartiblardir.
Kombinatorlik   usullarining   tizimli   rivojlanishiga   G.   Leybnits
("Kombinatorlik san'ati"  dissertatsiyasi),  J. Bernulli ("Taxminlar san'ati" asari) va
L.   Eyler   katta   hissa   qo'shdilar.   J.   Bernulli   va   G.   Leybnits   asarlarining   paydo
bo‘lishi bilan kombinatsion usullar matematikaning mustaqil qismiga aylandi, deb
taxmin   qilishimiz   mumkin.   L.   Eylerning   natural   sonlarni   atamalarga   bo lish   vaʻ
tuzish   bo yicha   ishlari   kombinatsion   konfiguratsiyalarni   sanashning   asosiy	
ʻ
usullaridan biri – funksiyalarni hosil qilish usuliga asos soldi.
Kombinatoriy   tahlilga   qiziqishning   qaytishi   XX   asrning   50-yillariga   to'g'ri
keladi.   kibernetika   va   diskret   matematikaning   jadal   rivojlanishi   hamda   elektron
hisoblash   texnikasining   keng   qo llanilishi   munosabati   bilan.   Bu   davrda   klassik	
ʻ
kombinator masalalariga qiziqish kuchaydi.
Klassik   kombinatsion   Vazifalar   cheklangan   to'plamning
elementlarini   tanlash   va   tartibga   solish   muammolari   bo'lib,
boshlanish   nuqtasi   sifatida   ko'ngilochar   tarkibni,   masalan,
jumboqlarni shakllantirishdir.
1859   yilda   V.   Hamilton   "Dunyo   bo'ylab   sayohat"   o'yinini
o'ylab   topdi,   u   rasmda   ko'rsatilgan   grafikning   barcha   uchlari   (shaharlar, 2 yo'nalishlar)   orqali   o'tadigan   yo'lni   topishdan   iborat.   Har   bir   cho'qqiga   bir   marta
tashrif   buyurib,   asl   qismiga   qaytish   uchun   1.   Bu   xususiyatga   ega   bo'lgan   yo'llar
Gamilton sikllari  deb ataladi .
Grafikdagi   Gamilton   sikllari   muammosi   turli   umumlashtirishlarni   oldi.
Ushbu   umumlashmalardan   biri   sayohatchi   sotuvchi   muammosi   bo'lib   ,   u
operatsiyalarni   tadqiq   qilishda,   xususan,   muayyan   transport   muammolarini   hal
qilishda bir qator ilovalarga ega. 3 1. Sayohatchi sotuvchi muammosi   
1.1. umumiy tavsif   
Sayohatchi   sotuvchi   muammosi   (keyingi   o'rinlarda   TSP   deb   qisqartiriladi)
kombinatorika nazariyasidagi mashhur muammolardan biridir. Bu 1934 yilda ilgari
surilgan   va   eng   yaxshi   matematiklar   Fermatning   oxirgi   teoremasi   kabi   tishlarini
sindirishgan.   ZK   o'z   sohasida   (diskret   muammolarni   optimallashtirish)   yangi
usullar sinovdan o'tkaziladigan o'ziga xos sinov maydonchasi bo'lib xizmat qiladi.
Muammo bayonoti quyidagicha.
Sayohatchi sotuvchi (sayyor savdogar) birinchi shaharni tark etishi, noma'lum
tartibda   2,1,3..n   shaharlarga   bir   marta   tashrif   buyurishi   va   birinchi   shaharga
qaytishi   kerak.   Shaharlar   orasidagi   masofalar   ma'lum.   Sayohatchi   sotuvchining
yopiq   yo'li   (turi)   eng   qisqa   bo'lishi   uchun   shaharlarni   qanday   tartibda   aylanib
chiqish kerak?
Muammoni ilmiy shaklga keltirish uchun biz ba'zi atamalarni kiritamiz. Demak,
shaharlar j    T=(1,2,3..n ) raqamlari bilan raqamlangan . Sayohatchi sotuvchining
turini  siklik almashtirish  t  =(  j  
1   , j  
2   ,.., j  
n   , j  
1   ), barcha j  
1   .. j  
n   turli  sonlar  bilan
tavsiflash   mumkin;   j  
1   boshida   va   oxirida   takrorlanadi   ,
  almashtirishning   halqali
ekanligini   ko'rsatadi.   S  
ij   uchlari   juftlari   orasidagi   masofalar
  matritsa   hosil   qilish   C.   vazifa
funksionalni minimallashtirish kabi tur t ni topishdir
ZK   ning   matematik   shakllantirilishiga   kelsak,   ikkita   fikr   bildirish   maqsadga
muvofiqdir.
ij   sozlamalarida
  masofalarni   nazarda   tutgan,   shuning   uchun   ular   salbiy
bo'lmasligi kerak, ya'ni. barcha j T   uchun :
S 
ij   0 ;  C 
jj  = ∞ (2
)
(oxirgi tenglik turda looplarni taqiqlashni anglatadi), nosimmetrik, ya'ni. hamma 
uchun i , j :
S 
ij  = S 
ji  . (3
)4 va uchburchak tengsizligini qanoatlantiring, ya'ni. Barcha uchun:
S 
ij  + S 
jk   C 
ik (4
)
Matematik   formula   ixtiyoriy   matritsa   haqida   gapiradi.   Bu   asosiy   model
tomonidan   tavsiflangan,   ammo   barcha   shartlarni   (2)-(4)   qanoatlantirmaydigan
ko'plab amaliy muammolar mavjudligi sababli amalga oshirildi. Shart (3) ayniqsa
tez-tez buziladi (masalan, agar C 
ij   masofa emas, balki yo'l haqi bo'lsa: ko'pincha u
erda chipta bitta narxga tushadi va qaytish chiptasi boshqa turadi). Shuning uchun
biz masalaning ikki  variantini  ajratamiz: (3)  shart  bajarilganda simmetrik masala,
aks   holda   assimetrik   masala.   (2)-(4)   shartlar   sukut   bo'yicha   bajarilgan   deb
hisoblanadi.
Ikkinchi   eslatma   barcha   mumkin   bo'lgan   turlar   soniga   tegishli.   Asimmetrik
ZKda   barcha   turlar   t   =(   j  
1   ,   j  
2   ,..,   j  
n   ,   j  
1   )   va   t   '=(   j  
1   ,   j  
n   ,..,   j  
2   ,   j  
1   )   har   xil
uzunliklarga ega va ikkalasi ham har xil. hisobga olinishi kerak. Shubhasiz ( n -1)
turli turlar mavjud !.
j 
1 raqamini   siklik almashtirishda birinchi va oxirgi o'ringa qo'yamiz va qolgan n -1
raqamlarni hammasi ( n -1) bilan o'zgartiramiz! mumkin bo'lgan usullar. Natijada,
biz   barcha   assimetrik   turlarni   olamiz.   Yarim   ko'p   nosimmetrik   turlar   bor,   chunki
har biri ikki marta sanaladi: t va t ' .
Tasavvur qilishingiz mumkinki, C faqat bir va noldan iborat. U holda C ni, agar
C 
ij =0 bo'lsa,  cheti (  i  ,  j  ) chizilgan , C 
ij   =1 bo'lsa chizilmaydigan grafik sifatida talqin
qilish   mumkin.   Keyin,   agar   uzunligi   0   bo'lgan   tur   bo'lsa,   u   holda   u   barcha
cho'qqilarni bir marta o'z ichiga olgan tsikldan o'tadi. Bunday sikl  Gamilton sikli
deyiladi. Yopiq Gamilton sikli Gamilton zanjiri (Gamilton yo'li) deb ataladi.
Grafik   nazariyasi   nuqtai   nazaridan   nosimmetrik   TSPni   quyidagicha
shakllantirish mumkin:
n ta burchakli to liq tarmoq berilgan bo lsa , chekka uzunligi ( i , j )=ʻ ʻ  
ij   bilan .
Minimal uzunlikdagi Gamilton siklini toping.
Asimmetrik ZKda "tsikl"  o'rniga "kontur" va "qirralar" o'rniga - "yoylar" yoki
"o'qlar" deyish kerak. 5 Ba'zi  amaliy masalalar  TSP sifatida tuzilgan, ammo ularda Gamilton siklining
emas,   balki   Gamilton   zanjirining   uzunligini   minimallashtirish   kerak.   Bunday
muammolar   ochiq   deb   ataladi.   Ba'zi   modellar   bir   nechta   sayohatchi
sotuvchilarning   muammosini   kamaytiradi,   ammo   biz   ularni   bu   erda   ko'rib
chiqmaymiz.
1.2. Muammoli muammolarni hal qilish usullari
1.2.1. Ochko'z algoritm
Ochko'zlik   algoritmi   -   bu   allaqachon   tanlangan   qirralar   bilan   tsikl   hosil
qilmaslik sharti bilan, eng qisqa, hali tanlanmagan chetni tanlash orqali eng qisqa
masofani topish   algoritmidir.   Ushbu   algoritm   "ochko'z"   deb   ataladi,
chunki   oxirgi   bosqichlarda   siz   ochko'zlik   uchun
jiddiy pul to'lashingiz kerak.
Keling,   ochko'z   algoritm   muammoni   hal
qilishda qanday   harakat   qilishini   ko'rib   chiqaylik.   Bu   erda   u   "eng
yaqin   (hali kirmagan)   shaharga   borish"   strategiyasiga   aylanadi.   Ochko'z
algoritm   bu   muammoda   kuchsizligi   aniq.   Masalan,   rasmdagi   tarmoqni   ko'rib
chiqing. 2, tor rombni ifodalaydi. Sayohatchi sotuvchi 1-shahardan boshlasin. “Eng
yaqin   shaharga   borish”   algoritmi   uni   2-shaharga,   keyin   3-ga,   keyin   4-ga   olib
boradi;   oxirgi   bosqichda   siz   olmosning   uzun   diagonali   bo'ylab   qaytib,
ochko'zligingiz   uchun   to'lashingiz   kerak   bo'ladi.   Natijada   eng   qisqa   emas,   balki
eng uzun tur bo'ladi.
"Eng yaqin joyga o'tish" protsedurasi foydasiga aytish mumkin bo'lgan 
yagona narsa shundaki, u bitta shahardan boshlanganda "keyingisiga o'tish" 
strategiyasidan kam emas.
Ko'rib   turganimizdek,   ochko'z   algoritm   noto'g'ri.   O‘rtacha   xatoga   yo‘l
qo‘yganini,   olgan   turi   minimaldan,   deylik,   1000   martadan   yomonroq   ekanligini
isbotlash   mumkinmi?   Biz   buni   isbotlab   bo'lmasligini   va   faqat   ochko'z   logarifm
uchun   emas,   balki   ancha   kuchli   algoritmlar   uchun   isbotlaymiz.   Lekin   birinchi
navbatda, minimallashtirish muammosida aniq bo'lmagan algoritmlarning xatosini 6 qanday   baholash   kerakligi   haqida   kelishib   olishimiz   kerak.   f  
B   bo'lsin
  real
minimum, f 
A esa   algoritm tomonidan olingan kvaziminimdir. Ma'lumki  ,  f 
A   /  f 
B  ≥1,
lekin   bu   xato   bo'lishi   mumkinligi   haqidagi   ahamiyatsiz   bayonot.   Uni   baholash
uchun siz yuqoridagi taxmin bilan munosabatni mahkamlashingiz kerak:
f 
A  /  f 
B  ≥1+ n  e  , (5
)
bu erda, odatdagidek, oliy matematikada, e≥0, lekin odatlardan farqli o'laroq, juda
katta   bo'lishi   mumkin.   e   qiymati   xato   o'lchovi   bo'lib   xizmat   qiladi.   Agar
minimallashtirish  algoritmi  tengsizlikni  (5)   qanoatlantirsa,  unda e  xatosi  borligini
aytamiz.
Keling,   masalani   yechish   uchun   A   algoritmi   mavjud   deb   faraz   qilaylik,
uning xatosini taxmin qilish kerak. Keling, ixtiyoriy G ( V , E ) grafigini olaylik va
undan ZK ning kirish matritsasini tuzishda foydalanamiz:
[i,j]= {  bilan 1,agar chekka (  i  ,  j  ) E ga tegishli bo‘lsa
1+  n  e aks holda
G  grafigi Gamilton sikliga ega bo'lsa, u holda minimal tur shu sikl orqali o'tadi va  f
B   =   n   .   Agar   A   algoritmi   ham   doim   shu   yo'lni   topsa,   algoritm   natijalariga   ko'ra
ixtiyoriy   grafikda   Gamilton   sikli   bor   yoki   yo'qligini   aniqlash   mumkin.   Biroq,
ixtiyoriy   grafikda   Gamilton   sikli   bor-yo'qligiga   javob   bera   oladigan   qo'pol   kuch
bo'lmagan   algoritmni   hali   hech   kim   bilmaydi.   Shunday   qilib,   bizning   A
algoritmimiz   ba'zan   xatoga   yo'l   qo'yishi   va   turga   kamida   1+   n   e   uzunlikdagi   bir
chetini kiritishi kerak. Lekin u holda f  
A    ( n -1)+(1+ n e) shuning uchun f  
A   /   f  
B
=1+ n e ya’ni. e xatosidan tengsizlik (5) bilan belgilangan qiymatdan oshib ketadi.
Biz   muhokamada   e   qiymati   bo'yicha   kelisha   olmadik,   shuning   uchun   e
o'zboshimchalik bilan katta bo'lishi mumkin.
Shunday qilib, quyidagi teorema isbotlangan.
Yoki   A   algoritmi   Gamilton   siklining   ixtiyoriy   grafikda   mavjudligini   yoki
masalani yechishdagi A xatosi ixtiyoriy katta bo‘lishi mumkinligini aniqlaydi.
Bu fikr birinchi marta 1980 yilda Sani va Gonsales tomonidan nashr etilgan.
Sani-Gonsales   teoremasi   qirralarning   uzunligi   bo'yicha   hech   qanday   cheklovlar 7 yo'qligiga   asoslanadi.   Masofalar   uchburchak   tengsizligiga   (4)   bo'ysunsa,   teorema
amal qilmaydi.
Agar   u   bajarilsa,   biz   xatosi   12   bo'lgan   bir   nechta   algoritmlarni   taklif
qilishimiz mumkin. Bunday algoritmni tasvirlashdan oldin, biz eski jumboqni esga
olishimiz   kerak.   Ochiq   konvertni   bitta   chiziq   bilan   chizish   mumkinmi?   2-rasmda
nima   mumkinligi   ko'rsatilgan   (segmentlardagi   raqamlar   ularni   amalga   oshirish
tartibini ko'rsatadi).   Yopiq   konvertni   (3-rasm)   bitta   chiziq   bilan
chizish mumkin   emas   va   shuning   uchun.   Biz   chiziqlarni
qirralar,   ularning
kesishganlarini esa cho'qqilar deb ataymiz.
Nuqta   orqali   chiziq   o'tkazilganda,   ikkita   chetidan   foydalaniladi   -   biri
cho'qqiga   kirish   uchun,   biri   chiqish   uchun.   Agar   cho'qqining   darajasi   toq   bo'lsa,
chiziq   shu   erda   boshlanishi   yoki   tugashi   kerak.   Shaklda.   Toq   darajadagi   ikkita
cho'qqi   bor:   birida   chiziq   boshlanadi,   ikkinchisida   u   tugaydi.   Biroq,   rasmda.   4
uchinchi   darajali   to'rtta   cho'qqi   bor,   lekin   bitta   chiziqning   to'rtta   uchi   bo'lishi
mumkin emas. Agar siz bitta yopiq chiziq bilan figurani chizishingiz kerak bo'lsa,
unda uning barcha uchlari teng darajaga ega bo'lishi kerak.
Buning   aksi   ham   to'g'ri:   agar   barcha   cho'qqilar   teng   darajaga   ega   bo'lsa,
unda   rasmni   bitta   ochiq   chiziq   bilan   chizish   mumkin.   Haqiqatan   ham,   chiziqni
chizish   jarayoni,   agar   chiziq   endi   chiqish   bo'lmagan   cho'qqiga   etib   borsagina
tugashi   mumkin:   bu   cho'qqiga   biriktirilgan   barcha   qirralar   (odatda   bu   cho'qqiga
tushadi deb aytiladi) allaqachon chizilgan. Agar butun rasm chizilgan bo'lsa, unda
kerakli   bayonot   isbotlangan;   bo'lmasa,   G   '   ning   allaqachon   chizilgan   qismini
o'chiring. Shundan so'ng, grafik bir yoki bir nechta bog'langan komponentlarga ega 8 bo'ladi;   G   '   bu   komponentlardan   biri   bo'lsin   .   Dastlabki   grafik   G   ,   G   '   va   G   ''
bog'liqligi   tufayli   kamida   bitta  umumiy  cho'qqi   bor,  deylik   v  .   Agar   G  ''   da   ba'zi
qirralar   olib   tashlangan   bo'lsa,   u   holda   har   bir   tepadan   juft   raqam   chiqariladi.
Shuning uchun  G  '' bog'langan va uning barcha uchlari juft darajaga ega. Keling, G
'' da halqa quramiz (balki butun G '' chizmasdan ) va v orqali G '' chizilgan qismini
G ' ga qo'shamiz. G' ning chizilgan qismini shu tarzda kattalashtirib, biz G ' ning
butun G ni qamrab olishini ta'minlaymiz .
Bu   masalani   bir   paytlar   Eyler   hal   qilgan   va   grafikning   barcha   chetlarini
qoplaydigan   yopiq   chiziq   endi   Eyler   sikli   deb   ataladi.   Asosan   quyidagi   teorema
isbotlangan.
Grafikdagi Eyler sikli, agar (1) grafik ulangan va (2) uning barcha uchlari
juft darajaga ega bo‘lsagina mavjud bo‘ladi.
1.2.2. Yog'och algoritm  .
Endi   biz  eng   qisqa   daraxtni   qurish   orqali   muammoni   hal   qilish   algoritmini
muhokama   qilishimiz   mumkin.   Qisqartirish   uchun   biz   ushbu   algoritmni   yog'och
deb ataymiz.
Birinchidan,   tuzatish   xususiyatini   muhokama   qilaylik.   Misol   uchun,   5-
rasmda   qandaydir   sxemani   ko'rib   chiqaylik.   Agar   uchburchak   tengsizligi   to‘g‘ri
bo‘lsa, d [1,3]    d [1,2]+ d [2,3] va d [3,5]    d [3,4]+ d [4,5] Bu ikkisini qo‘shish
tengsizliklar, biz  d  [1,3]+ d  [3,5]    d [1,2]+  d [2,3]+  d [3,4]+ d  [4,5]  ni   olamiz .
Uchburchak tengsizligidan foydalanib, biz quyidagilarni olamiz: d [1,5]   d [1,3]+
d [3,5]. Nihoyat
d [1.5]   d [1,2]+ d [2,3]+ d [3,4]+ d [4,5]
Shunday qilib, agar uchburchak tengsizligi to'g'ri bo'lsa, unda har bir zanjir
uchun   zanjirning   boshidan   oxirigacha   bo'lgan   masofa   zanjirning   barcha
qirralarining umumiy uzunligidan kichik (yoki teng) bo'lishi haqiqatdir. Bu to'g'ri
chiziq egri chiziqdan qisqaroq degan umumiy e'tiqodning umumlashtirilishi. 9 Keling,   muammoga   qaytaylik   va   uni   hal   qiladigan   yog'och   algoritmni
tasvirlaymiz.
1. Keling, ZK ning kirish  tarmog'ida eng qisqa daraxtni  quramiz va uning
barcha qirralarini ikki barobarga oshiramiz. Biz bog'langan va faqat juft
darajaga ega bo'lgan uchlari bo'lgan G grafigini olamiz .
2. 1-cho'qqidan boshlab,  Eyler  siklini quramiz .
3. Keling,   1   dan   boshlab   cho'qqilar   ro'yxatini   ko'rib   chiqamiz   va   ketma-
ketlikda   allaqachon   uchragan   birini   takrorlaydigan   har   bir   cho'qqini
kesib o'tamiz. Qolgan narsa - bu algoritmning natijasi bo'lgan tur.
Misol   1.   5-rasmda   ko'rsatilgan   to'liq   tarmoqni   hisobga   olgan   holda.   Ochko'z   va
yog'och algoritmlardan foydalangan holda turni toping.
- 1 2 3 4 5 6
1 - 6 4 8 7 1
4
2 6 - 7 o'
n
bi
r 7 1
0
3 4 7 - 4 3 1
0
4 8 o'
n
bi
r 4 - 5 o'
n
bi
r
5 7 7 3 5 - 7
6 1
4 1
0 1
0 o'
n
bi
r 7 -
stol 1 10 Yechim   . Ochko'z algoritm (1-shahardan eng yaqin shaharga borish) 1–(4)–
3–(3)–5(5)–4–(11)–6–(10)–2–(6)   turni   beradi.   )–1,   bu   yerda   cho‘qqilarning
raqamlari qavssiz, qirralarning uzunligi esa qavs ichida
ko‘rsatilgan.   Ekskursiyaning   uzunligi   39,   tur   rasmda
ko'rsatilgan. 5.
2.   Daraxt   algoritmi   birinchi   bo'lib   1-rasmda   ko'rsatilgan
kenglikdagi daraxtni yaratadi. 6-chiziq chiziq bilan, keyin Eyler sikli 1-2-1-3-4-3-
5-6-5-3-1,   so ngra   1-2-3-4-5-6-1   uzunlikdagi   tur.   43,   bu   rasmda   qattiq   chiziqʻ
ko'rsatilgan. 6.
Teorema  . Yog'och algoritmning xatosi 1 ga teng.
Isbot.   Uzunligi   f  
B   bo'lgan   minimal   ekskursiya   qiling
  va   undan   maksimal
chetini   olib   tashlang.   Olingan   Gamilton   zanjirining   uzunligi   L  
HC   f  
B   dan   kichik   .
Ammo xuddi shu zanjirni keng tarqalgan daraxt deb hisoblash mumkin, chunki bu
zanjir barcha cho'qqilarga etib boradi va hech qanday tsiklga ega emas. Eng qisqa
bo'yli daraxtning uzunligi L  
MT   L  
HC   dan kam  yoki unga teng . Bizda tengsizliklar
zanjiri mavjud
f 
B  >L 
HC   L 
MT (6
)
Ammo biz ikki baravar ko'paygan daraxtni - Eyler grafigi deb ham ataladi -
tuzatishlar   yordamida   turga   qisqartirdik,   shuning   uchun   algoritm   tomonidan
olingan turning uzunligi tengsizlikni qondiradi.
2  L 
MT  >  f 
A (7
)11 (6)   ni   ikkiga   ko'paytirib,   (7)   bilan   birlashtirib,   biz   tengsizliklar   zanjirini
olamiz
2f 
B  >2L 
HC   2L 
MT   f 
A (8
)
T  .  e  . 2f 
B  >f 
A  ,  t  .  e  . f 
A  /f 
B  >1+   ;   =1.
Teorema isbotlangan.
Shunday qilib, biz yog'och algoritm ikki barobar kamroq noto'g'ri ekanligini
isbotladik.   Bunday   algoritmlar   allaqachon   evristik   emas,   balki   taxminiy   deb
ataladi.
Eng yomon holatda =1 ni kafolatlaydigan yana bir qancha oddiy algoritmlar
mavjud .    Ular orasida aniqroq algoritmni topish uchun keling, boshqa tomondan
boramiz   va   birinchi   navbatda   "   qo'pol   kuch   "   ni   tavsiflaymiz.   enumeration   ”   -
ingliz   adabiyotida   deyilganidek,   “hayvon   kuchi   bilan   haddan   tashqari   o'ldirish”.
Ko'rinib   turibdiki,   to'liq   qidiruv   amalda   faqat   kichik   o'lchamli   masalalarda
qo'llaniladi.   Eslatib   o'tamiz,   n   ta   shaharga   ega   ZK   to'liq   qidirishda   simmetrik
masalada   (   n   -1)!/2   turni   va   (   n   -1)   ni   ko'rib   chiqishni   talab   qiladi!   Turov
assimetrikdir va faktorial, quyidagi jadvalda ko'rsatilganidek, tushkunlik bilan tez
o'sadi:
5! 10! 15! 20! 25! o'ttiz! 35! 40! 45! 50!
~10  2
~10  6
~10  12
~10  18
~10  125
~10  32
~10  40
~10  47
~10  56
~10  64
ZKda   to'liq   qidiruvni   amalga   oshirish   uchun   ma'lum   miqdordagi   m
elementlarning   barcha   almashtirishlarini   yaratishni   (albatta,   takrorlamasdan)
o'rganishingiz kerak. Buni bir necha usul bilan amalga oshirish mumkin, lekin eng
keng   tarqalgan   (ya'ni,   boshqa   muammolarni   hal   qilish   uchun   sanab   o'tish
algoritmlariga taalluqli) leksikografik tartibda sanab o'tishdir.
Bir nechta alifbo va so'zlar deb ataladigan alifbo belgilari (harflari) to'plami
bo'lsin.   Alifbodagi   harflar   tartiblangan:   masalan,   rus   alifbosida   harflar   tartibi   a   b
 z   (belgida   "oldindan" o'qiydi). Agar harflar tartibi ko'rsatilgan bo'lsa, so'zlarni
buyurtma qilish mumkin. Aytaylik, bizga  u  =(  u 
1  ,  u 
2  ,..,  u 
m ) -  u 
1  ,  u 
2  ,..,  u 
m  - va  v
=(  v 
1  ,  v 
2  harflaridan iborat so'z berildi. ,..,  v 
b  ). Keyin  u 
1   v 
1 bo'lsa,  u  v   , lekin  u 
112 =   v  
1   bo'lsa,   ikkinchi   harflarni   solishtiring   va   hokazo   .   Bu   so'z   tartibi   leksikografik
deyiladi.   Shuning   uchun   ruscha   lug'atlarda   (leksikonlarda)   "abajur"   so'zi   "abaka"
so'zidan   oldin   keladi.   "Bur"   so'zi   "bora"   so'zidan   oldin   keladi,   chunki   bo'sh   joy
alifboning har qanday harfidan oldin hisoblanadi.
Keling,   1..5   raqamlari   bilan   belgilangan   beshta   elementning
almashinishlarini ko'rib chiqaylik. Leksikografik jihatdan birinchi almashtirish 1-2-
3-4-5,   ikkinchisi   1-2-3-5-4,   ...,   oxirgisi   5-4-3-2-1.   Har   qanday   almashtirishni
darhol keyingisiga aylantirishning umumiy algoritmini tushunishingiz kerak.
Qoida   shunday:   deylik,   1-3-5-4-2   almashtirish   berilgan.   Birinchi   marta
oldingisidan   kichikroq   raqamni   ko'rmagunimizcha,   almashtirish   bo'ylab   o'ngdan
chapga   harakat   qilishingiz   kerak   (misolda   5   dan   keyin   3).   Bu   raqam   Pi  
-1   ni   o'ng
tomonda joylashgan Pi dan P 
n gacha bo'lgan ba'zi bir raqam bilan almashtirish orqali oshirish kerak  . Shubhasiz,
P  
i   -1   dan kattaroq son bo'ladi , chunki   P  
i   -   1<   P  
i   . Agar bir nechta katta raqamlar
mavjud   bo'lsa,   unda,   shubhasiz,   siz   kichikroq   pul   tikishingiz   kerak.   P  
j   ,   j   >   i   -1
bo'lsin . Keyin P 
i - 1  raqami va P 
i dan  P 
n  gacha bo'lgan barcha raqamlar , P 
j ni  hisobga
olmaganda   ,   o'sish   tartibida   tartiblangan   bo'lishi   kerak.   Natijada   quyidagi
almashtirish bo'ladi, misolda - 1-4-2-3-5. Keyin siz 1-4-2-5-3 (xuddi shu algoritm,
lekin soddalashtirilgan holat) va hokazolarni olasiz.
n ta shaharga  ega ZKda  n ta elementning  barcha almashtirishlari kerak emas.
Chunki   almashtirishlar,   aytaylik,   1-3-5-4-2   va   3-5-4-2-1   (oxirgi   element
birinchisiga   bog'langan)   bir   xil   turni   belgilaydi,   avval   1-shahardan,   keyin   esa   3-
shahardan   o'qing.   ,   siz   boshlang'ich   shahar   1ni   tuzatishingiz   va   unga   qolgan
elementlardan   barcha   almashtirishlarni   qo'shishingiz   kerak.   Bu   qidiruv   (   n   -1)
beradi ! turli turlar, ya'ni. assimetrik ZKda to'liq qidiruv (biz hali ham 1-3-5-4-2 va
1-2-4-5-3 davrlarini ajratamiz).
Bu algoritm Paskal tilida tasvirlangan (Ilovalarga qarang).
2-misol. 1-misolda qo`yilgan masalani leksikografik qidiruv yo`li bilan yechamiz.
Yuqoridagi dastur eng yaxshi turni tashkil etuvchi shaharlarni chop etadi: 1-2-6-5-
4-3  va  uning   uzunligi  36. 13 Sababni qo'llash orqali qidiruvni yaxshilash tavsiya etiladi. Keyingi paragraf
oddiy,   ammo   keng   qo'llaniladigan   va   juda   foydali   g'oyani   amalga   oshiradigan
algoritmni tasvirlaydi.
1.2.3. Filial va bog'langan usul
Ko'pgina   tadqiqotchilar   tarmoqli   va   chegara   usuli   g'oyasini   ilgari   surdilar,
ammo   Little   va   uning   hammualliflari   ushbu   usulga   asoslanib,   muammoli
muammolarni   hal   qilish   uchun   muvaffaqiyatli   algoritmni   ishlab   chiqdilar   va   shu
bilan   yondashuvning   ommalashishiga   hissa   qo'shdilar.   O'shandan   beri   shox-
shabbalar usuli ko'plab muammolarga muvaffaqiyatli qo'llanildi va muammoni hal
qilish   uchun   usulning   bir   qancha   boshqa   modifikatsiyalari   ixtiro   qilindi,   ammo
aksariyat darsliklarda Littlening kashshof ishiga e'tibor qaratilgan.
Umumiy   g'oya   ahamiyatsiz:   saralanayotgan   juda   ko'p   sonli   variantlarni
sinflarga   bo'lish   va   ulardan   voz   kechish   uchun   ushbu   sinflar   uchun   taxminlarni
(pastdan   -   minimallashtirish   masalasida,   yuqoridan   -   maksimallashtirish
masalasida)   olishingiz   kerak.   variantlar   bir   vaqtning   o'zida   emas,   balki   butun
sinflarda.   Qiyinchilik,   bunday   bo'linishni   sinflarga   (filiallarga)   va   protsedura
samarali bo'ladigan bunday hisob-kitoblarni (chegaralarni) topishdir.
- 1 2 3 4 5 6
1 - 0 0 3 3 6
2 0 - 1 4 1 0
3 1 2 - 0 0 3
4 4 5 0 - 1 3
5 4 2 0 1 - 0
6 7 1 3 3 0 -
2 1 4
stol 4
Oldingi bo'limning 1-misolidan foydalanib, Little algoritmini keltiramiz, 
matritsani qayta yozamiz:
- 1 2 3 4 5 6 14 1 - 6 4 8 7 1
4
2 6 - 7 o'
n
bi
r 7 1
0
3 4 7 - 4 3 1
0
4 8 o'
n
bi
r 4 - 5 o'
n
bi
r
5 7 7 3 5 - 7
6 1
4 1
0 1
0 o'
n
bi
r 7 -
stol 2
- 1 2 3 4 5 6
1 - 2 0 4 3 1
0 4
2 0 - 1 5 1 4 6
3 1 4 - 1 0 7 3
4 4 7 0 - 1 7 4
5 4 4 0 2 - 4 3
6 7 3 3 4 0 - 7
stol 3
ij   ni   i   shahardan   j   shahargacha   bo'lgan   sayohat   narxi   sifatida   talqin   qilish
qulayroq bo'ladi . Faraz qilaylik, shaharning yaxshi meri j shaharga kirgan har bir
sayohatchiga 5 dollar to'lash to'g'risida farmon chiqardi. Bu shuni anglatadiki, har
qanday tur 5 dollarga arzonlashadi, chunki har qanday tur j shahriga kirishni talab 15 qiladi   .   Ammo   barcha   turlarning   narxi   bir   xilda   tushganligi   sababli,   avvalgi
minimal tur endi eng kam xarajat qiladi. Hokimning xayrli ishini C matritsasining j
-ustunidagi  barcha raqamlarning 5 ga kamayishi  sifatida ifodalash mumkin. Agar
shahar hokimi sayyor sotuvchilarni j -shahardan uzoqroqqa jo‘natmoqchi bo‘lsa va
shaharda   ketgani   uchun   mukofot   belgilamoqchi   bo‘lsa.   10   dollar   miqdorida,   bu
chiziqning  barcha   j   -chi   elementlaridan   10   ni   ayirish   orqali   ifodalanishi   mumkin.
Bu   yana   har   bir   turning   narxini   o'zgartiradi,   lekin   minimal   tur   minimal   bo'lib
qoladi. Shunday qilib, quyidagi lemma isbotlangan.
C   matritsasining   istalgan   satri   yoki   ustunining   barcha   elementlaridan
istalgan konstantani ayirib, minimal turni minimal qilib qoldiramiz.
Algoritm   uchun   C   matritsasida   ko'proq   nollarni   olish   biz   uchun   qulay
bo'ladi, ammo u erda salbiy raqamlarni olmasdan. Buning uchun biz har bir satrdan
uning minimal elementini ayiramiz (bu qatorni qisqartirish deb ataladi, 3-jadvalga
qarang),   so'ngra   satr   bo'yicha   matritsaning   har   bir   ustunidan   uning   minimal
elementini   ayirib,   ustunlar   bo'yicha   qisqartirish   matritsasini   olamiz,   jadvalga
qarang. . 4).
i shahardan i shaharga piyoda bora olmasligingizni bildiradi . E'tibor bering,
satrlardagi kamaytirish konstantalarining yig'indisi 27 ga, ustunlar yig'indisi 7 ga,
yig'indisi 34 ga teng.
    Ekskursiya,   masalan,   Jadvalda   ko'rsatilganidek,   C   matritsasining   oltita
tagiga chizilgan (boshqa rangda ta'kidlangan) elementlari tizimi bilan belgilanishi
mumkin. 2. Elementni tagiga chizish dumaloqda ular   i   - elementdan   j   - elementga
o'tishlarini   bildiradi.   Olti   shahar   bo'ylab   sayohat   qilish   uchun   oltita   ta'kidlangan
element bo'lishi kerak, chunki oltita shahar safarida oltita chekka mavjud. Har bir
ustunda   tagiga   chizilgan   bitta   element   bo lishi   kerak   (sayyor   sotuvchi   har   birʻ
shaharga bir  marta kirgan), har bir qatorda tagiga chizilgan bitta element  bo lishi	
ʻ
kerak (sayyor sotuvchi har bir shahardan bir marta chiqib ketgan); bundan tashqari,
tagiga   chizilgan   elementlar   bir   nechta   kichik   davrlarni   emas,   balki   bitta   turni
tasvirlashi   kerak.   Belgilangan   elementlarning   raqamlari   yig'indisi   ekskursiya 16 narxidir.   Stol   ustida   2   narxi   36,   bu   leksikografik   qidiruv   orqali   olingan   minimal
tur.
Endi  biz jadvaldagi  berilgan matritsadan xulosa chiqaramiz. 2. Agar tagiga
chizilgan   elementlarning   to'g'ri   tizimini   qurish   mumkin   bo'lsa,   ya'ni.   Yuqorida
tavsiflangan   uchta   talabni   qondiradigan   tizim   va   bu   ta'kidlangan   elementlar   faqat
nolga   teng   bo'lsa,   bu   matritsa   uchun   biz   minimal   turni   olishimiz   aniq.   Lekin   u
original C matritsasi uchun ham minimal bo'ladi, faqat turning to'g'ri narxini olish
uchun siz barcha pasaytirish konstantalarini qo'shishingiz kerak bo'ladi va tur narxi
0   dan   34   gacha   o'zgaradi.   Shunday   qilib,   minimal   tur   34   dan   kam   bo'lmasligi
kerak. Biz barcha turlar uchun pastroq baho oldik.
Endi dallanishni  boshlaylik. Buning uchun biz nollarni baholash bosqichini
bajaramiz. Qisqartirilgan matritsaning (1,2) kataklaridagi nolni ko'rib chiqaylik. Bu
shuni   anglatadiki,   1-shahardan   2-shaharga   ko'chish   narxi   0.   Agar   1-shahardan   2-
shaharga bormasak nima bo'ladi? Keyin siz hali ham ikkinchi ustunda ko'rsatilgan
narxlar   uchun   2-shaharni   kiritishingiz   kerak;   atigi   1   taga   arzonroq   (6-shahardan).
Keyinchalik, siz hali ham birinchi qatorda ko'rsatilgan narx uchun 1-shaharni tark
etishingiz   kerak   bo'ladi;   eng   arzon   variant   0   ga   3-shaharga   borishdir.   Bu   ikki
minimumni jamlab, bizda 1+0=1 bor: agar siz 1-shahardan 2-shahargacha “nolga”
bormasangiz,   hech   bo‘lmaganda   to‘lashingiz   kerak.   1.   Bu   nolga   teng   bahodir.
Barcha nollarning taxminlari jadvalda keltirilgan. 5 o'ngga va noldan yuqori (nolga
teng nol ball berilmagan).
Keling,   ushbu   baholarning   maksimalini   tanlaymiz   (misolda   birga   teng   bir
nechta taxminlar mavjud, ulardan birinchisini tanlaymiz, (1,2) katakchada).
Shunday   qilib,   nol   chekka   (1,2)   tanlanadi.   Keling,   barcha   ekskursiyalarni
ikkita sinfga ajratamiz - chekka (1,2) va chetini o'z ichiga olmaydi (1,2). Ikkinchi
sinf uchun siz yana 1 marta to'lashingiz kerak deb ayta olamiz, shuning uchun bu
sinfdagi turlar 35 yoki undan ko'p turadi.
Birinchi sinfga kelsak, biz jadvaldagi matritsani ko'rib chiqishimiz kerak. 6
birinchi qator va ikkinchi ustun chizilgan.
1 2 3 4 5 6 17 1 - 0
 
1 0 3 3 6
2 0
 
1 - 1 4 1 0
3 1 2 - 0
 
1 0 3
4 4 5 0
 
1 - 1 3
5 4 2 0 1 - 0
6 7 1 3 3 0
 
1 -
stol 5
1 3 4 5 6
2 0
 
1 1 4 1 0
3 1 - 0
 
1 0 3
4 4 0
 
1 - 1 3
5 4 0 1 - 0
6 7 3 3 0
 
1 -
stol 6
1 3 4 5 6 18 2 0
 
1 1 4 1 0
3 0
 
3 - 0
 
1 0 3
4 3 0
 
1 - 1 3
5 3 0 1 - 0
6 6 3 3 0
 
1 -
stol 7
3 4 5 6
2 1 4 1 0
4 0
1 - 1 3
5 0 1 - 0
6 3 3 0
1 -
stol 8
 
Bundan   tashqari,   qisqartirilgan   matritsada   (2,1)   katakchada   taqiq   mavjud,
chunki   chekka   (1,2)   tanlangan   va   turni   chet   (2,1)   bilan   muddatidan   oldin   yopish
mumkin emas. Qisqartirilgan matritsani birinchi ustunda 1 ga qisqartirish mumkin,
shuning uchun unga mos keladigan har bir tur kamida 35 turadi. Tarmoqqa ajratish
va hisob-kitoblarni olishimiz natijasi 6-rasmda ko'rsatilgan.
Doiralar   sinflarni   ifodalaydi:   yuqori   doira   -   barcha   turlarning   sinfi;   pastki
chap - barcha turlar sinfi, shu jumladan chekka (1,2); pastki o'ng - chekka 19 (1,2)   o'z   ichiga   olmaydi   barcha   turlar   sinf.   Doiralar   ustidagi   raqamlar   pastki
taxminlardir.
Keling,   ijobiy   yo'nalishda   dallanishni   davom   ettiramiz:   chapga   -   pastga.
Buning uchun jadvaldagi kichraytirilgan C [1,2] matritsadagi nollarni baholaymiz .
7.   Hujayradagi   maksimal   ball   (3,1)   3.   Shunday   qilib, shakldagi pastki
o'ng   cho'qqi   uchun   ball.   7   -   35+3=38.   Shaklda   pastki chap
burchakni   baholash   uchun.   7,   jadvaldagi   C   [(1,2), (3,1)]
matritsasini olgan holda  C [1,2]  matritsasidan boshqa 3-qator   va   1-
ustunni   o chirishingiz   kerak   .   8.   Ushbu   matritsada   siz   (2,3)ʻ katakchaga
taqiq qo'yishingiz  kerak,  chunki  turning bir  qismi  allaqachon  qirralardan  (1,2)  va
(3,1)   qurilgan,   ya'ni.   [3,1,2]   va   muddatidan   oldin   yopish   (2,3)   taqiqlanishi   kerak.
Ushbu   matritsa   1-ustun   bo'yicha   berilgan   (9-jadval),   shuning   uchun   tegishli
sinfdagi har bir tur (ya'ni, qirralarning (1,2) va (3,1) o'z ichiga olgan tur) 36 yoki
undan ortiq turadi.
3 4 5 6
2 1 3 1 0
4 0
 
1 - 1 3
5 0 0
 
2 - 0
6 3 2 0
 
3 -
stol 9
3 4 6
2 1 3 0
3
4 0
3 - 3 20 5 0 0
3 0
stol 10
3 4
4 0 -
5 0 0
stol o'n bir
C matritsadagi nollarni baholaymiz [(1,2),(3,1)] maksimal ball 3 bo'lgan nol (6,5)
katakchada. Salbiy variant 38+3=41 ballga ega. Ijobiy variantni baholash uchun 6-
qator  va  5-ustunni  olib tashlang,  (5,6)  katakchaga  taqiq qo'ying, jadvalga qarang.
10. Bu matritsa qaytarilmas. Binobarin, ijobiy variantni baholash ko'paymaydi (8-
rasm).
Jadvaldagi   matritsadagi   nollarni   baholash.   10,   biz   chekka   (2,6)   tanlovi
asosida   shoxlanamiz,   manfiy   variant   36+3=39   ball   oladi   va   ijobiy   variant   uchun
ball   olish   uchun   ikkinchi   qator   va   oltinchi   ustunni   kesib   tashlaymiz,   jadvaldagi
matritsani olish. o'n bir.
(5,3)   katakchadagi   matritsaga   taqiq   qo'shilishi   kerak,   chunki   turning   bir
qismi   [3,1,2,6,5]   allaqachon   qurilgan   va   muddatidan   oldin   qaytishni   taqiqlash
kerak   (5,3).   Endi   bizda   diagonal   cheklovlar   bilan   2x2   matritsa   qolgan,   biz   turni
qirralar bilan yakunlaymiz (4,3) va (5,4). Ijobiy variantlarga shoxlanganimiz bejiz
emas  edi.  Endi   biz  ekskursiya  oldik:   1 →  2 →  6 →  5 →  4 →  3 →  1, narxi  36.
Qidiruv daraxtining pastki qismiga etib borgach, turlar sinfi bitta turga qisqartirildi
va smeta quyida aniq xarajat aylandi.
Shunday qilib, 36 va undan yuqori  ball  to'plagan  barcha sinflar  eng yaxshi
turni   o'z   ichiga   olmaydi.   Shuning   uchun   mos   keladigan   uchlari   kesib   tashlanadi.
Ikkala   avlodi   ham   o'chirilgan   cho'qqilar   ham   o'chiriladi.   Biz   umumiy   qidiruvni
juda kamaytirdik. C[ Not (1,2)] matritsasiga mos keladigan sinf yaxshiroq turni o'z
ichiga oladimi yoki yo'qligini tekshirish qoladi , ya'ni. 1,2 katakchada taqiqlangan
C   matritsasi   berilgan,   ustunda   1   ga   qisqartirilgan   (bu   34+1=35   ball   bergan).
Nollarni   baholash  katakchadagi  nol   uchun 3  ni  beradi   (1,3), shuning  uchun  35+3 21 manfiy   variantni   baholash   allaqachon   olingan   36-raundning   qiymatidan   oshib
ketadi va salbiy variant kesiladi.
Ijobiy   variantni   baholash   uchun   biz   birinchi   qatorni   va   uchinchi
ustunni  matritsadan chiqaramiz, taqiqni  (3.1)  o'rnatamiz va matritsani
olamiz.   Ushbu   matritsa   to'rtinchi   qatorda   1   bilan   berilgan,   sinf
ballari   36   ga   etadi   va   doira   kesib   tashlanadi.   "Hamma"
cho'qqisining   ikkala   avlodi   ham   o'ldirilgani   uchun   u   ham   o'ldiriladi.
Hech   qanday   cho'qqi   qolmadi,   qidiruv   tugadi.   Biz   bir   xil   minimal   turni
oldik, bu jadvalda ko'rsatilgan. 2.
Kichkina   algoritm   va   tegishli   algoritmlarning   ishlashini
qoniqarli   nazariy   baholashlar   mavjud   emas,   ammo   amaliyot   shuni
ko'rsatadiki,   zamonaviy   kompyuterlarda   ular   ko'pincha   n   =   100   bilan
muammoli   muammolarni   hal   qilishga   imkon   beradi.   Bu   to'liq   qidiruv   bilan
solishtirganda   juda  katta   muvaffaqiyatdir.   Bundan   tashqari,  filial   va   chegara   kabi
algoritmlar,   agar   ularni   to'ldirib   bo'lmasa,   samarali   evristik   protseduralar
hisoblanadi.
1.2.4. Dijkstra algoritmi
Muammoni hal qilish variantlaridan biri barcha shaharlarni o'z ichiga olgan
eng   qisqa   zanjirni   topishdir.   Keyin   olingan   zanjir   boshlang'ich   shahar   bilan
to'ldiriladi - kerakli tur olinadi.
Ushbu   muammoni   hal   qilish   uchun   ko'plab   protseduralar   taklif   qilinishi
mumkin,   masalan,   jismoniy   modellashtirish.   Yassi   taxtada   hududning   xaritasi
chiziladi,  yo'llardagi   vilkalarda  yotgan  shaharlarga  mixlar   tortiladi,  har   bir  mixga
halqa   qo'yiladi,   yo'llar   tegishli   halqalarga   bog'langan   arqonlar   bilan   yotqiziladi.   i
va   k   orasidagi   eng   qisqa   masofani   topish   uchun   siz   bir   qo'lingizga   I   ,   ikkinchi
qo'lingizga   k   ni   olib   ,   cho'zishingiz   kerak   .   Qo'llaringizni   kengroq   yoyishingizga
to'sqinlik qiladigan va i va k o'rtasidagi eng qisqa yo'lni tashkil etadigan arqonlar .
Biroq,   bu   fizikani   modellashtiradigan   matematik   protsedura   juda   murakkab
ko'rinadi.   Oddiyroq   algoritmlar   ma'lum.   Ulardan   biri   1959   yilda   Dijkstra 22 tomonidan   taklif   qilingan   Dijkstra   algoritmidir.   Ushbu   algoritm   umumiy
muammoni hal qiladi:
Yo'naltirilgan,   yo'naltirilmagan   yoki   aralash   (ya'ni,   ba'zi   yo'llar   bir
tomonlama   bo'lgan)   tarmoqda   ikkita   berilgan   cho'qqilar   orasidagi   eng   qisqa
yo'lni toping.
Algoritm   har   birida   n   (=   tarmoq   uchlari   soni)   sonli   uchta   massivdan
foydalanadi.   Birinchi   a   massivida   ikkita   qiymatga   ega   teglar   mavjud:   0   (cho'qqi
hali   ko'rib   chiqilmagan)   va   1   (cho'qqi   allaqachon   ko'rib   chiqilgan   );   ikkinchi
massiv b masofalarni o'z ichiga oladi - v  
i   dan   mos keladigan cho'qqigacha bo'lgan
joriy   eng   qisqa   masofalar   ;   uchinchi   massiv   c   cho'qqilar   raqamlarini   o'z   ichiga
oladi - k- element c 
k joriy eng qisqa yo'lda  v 
i dan  v 
k  gacha bo'lgan oxirgi cho'qqining soni . D
ik   masofa   matritsasi   yoylarning   uzunliklarini   belgilaydi   d  
ik   ;   agar   bunday   yoy
bo'lmasa,   u   holda   d  
ik   ga   "mashina   cheksizligi"   ga   teng   bo'lgan   katta   B   raqami
beriladi.
Endi biz tavsiflashimiz mumkin:
Dijkstra algoritmi
1  (boshlash).
n   gacha bo'lgan  tsiklda a massivni  nol  bilan to'ldiring;  c  massivni   i  raqami
bilan to'ldiring  :  D  matritsaning  i - qatorini b  massivga o'tkazing ;
a  [  i  ]:=1;  c  [  i  ]:=0; {  i  - boshlang'ich cho'qqi soni}
2  (umumiy qadam).
Belgilanmaganlar  orasidan  minimalni  toping (ya'ni, a [  k ]=0 bo'lgan  k );  j
indeksida minimumga erishilsin , ya'ni b 
j   b 
k  ; a [ j ]:=1;
0 2
3 1
2 ∞ ∞ ∞ ∞ ∞
2
3 0 2
5 ∞ 2
2 ∞ ∞ 3
5
1
2 2
5 0 1
8 ∞ ∞ ∞ ∞
∞ ∞ 1 0 ∞ 2 ∞ ∞ 23 8 0
∞ 2
2 ∞ ∞ 0 2
3 1
4 ∞
∞ ∞ ∞ 2
0 2
3 0 2
4 ∞
∞ ∞ ∞ ∞ 1
4 2
4 0 1
6
∞ 3
5 ∞ ∞ ∞ ∞ 1
6 0
stol 12
agar b 
k  > b 
j  + d 
jk   bo'lsa ( b 
k  := b 
j  + d 
jk   ; c 
k  := j ) {Shart v 
i  .. v 
k yo'lning   v 
i  .. v
yo'lidan uzunroq ekanligini bildiradi. 
j   , vk . Agar barcha a [ k ] belgilangan
bo'lsa, u holda yo'lning uzunligi v  
i   .. v  
k   b [ k ] ga teng . Endi biz eng qisqa
yo'lga kiritilgan cho'qqilarni sanab o'tishimiz kerak}
3  (javob berish).
{  v 
i  .. v 
k  yo'li quyidagi protsedura bo'yicha teskari tartibda qaytariladi:  }
3.1. z:=c[k];
3.2.  z  soni ;
3.3.  z  :=  c  [  z  ]; Agar  z  = 0 bo'lsa, u holda tugating, aks holda 3.2 ga o'ting.
n   ta   elementdan   iborat   b   massivini   n   marta   ko'rib   chiqish   kerak   ,   ya'ni
Dijkstra   algoritmi   kvadratik   murakkablikka   ega.   Dijkstra   algoritmining   ishini
raqamli   misol   bilan   ko'rsatamiz   (kattaroq   murakkablik   uchun   ba'zi   shaharlar
(cho'qqilar) i , j bir-biri bilan bog'lanmagan deb hisoblaymiz, ya'ni D [ i , j ]= ∞ ).
Masalan, i =3 bo'lsin. 3 cho'qqidan eng qisqa yo'llarni topishingiz kerak. Birinchi
bosqichni bajargandan so'ng a , b , c massivlarining mazmuni jadvalda ko'rsatilgan.
12:
1 2 3 4 5 6 7 8
a 0 0 1 0 0 0 0 0
b 12 25 0 18 ∞ ∞ ∞ ∞
c 3 3 0 3 3 3 3 3 24 jadval 13
Shubhasiz,   jadvalning   mazmuni   umumiy   bosqichning
rivojlanishi   bilan   o'zgaradi.   Buni   quyidagi   jadvaldan   ko'rish
mumkin:
1 2 3 4 5 6 7 8
min b
k  =12 a 1 0 1 0 0 0 0 0
b 1
2 2
5 0 1
8 ∞ ∞ ∞ ∞
c 3 3 0 3 3 3 3 3
min b
k  =18 a 1 0 1 1 0 0 0 0
b 1
2 2
5 0 1
8 ∞ 3
8 ∞ ∞
c 3 3 0 3 3 4 3 3
min b
k  =25 a 1 1 1 1 0 0 0 0
b 1
2 2
5 0 1
8 4
7 3
8 ∞ 6
0
c 3 3 0 3 2 4 3 2
min b
k  =38 a 1 1 1 1 0 1 0 0
b 1
2 2
5 0 1
8 4
7 3
8 6
2 6
0
c 3 3 0 3 2 4 6 2
min b
k  =47 a 1 1 1 1 1 1 0 0
b 1
2 2
5 0 1
8 4
7 3
8 6
1 6
0
c 3 3 0 3 2 4 5 2
min b
k  =60 a 1 1 1 1 1 1 0 1
b 1
2 2
5 0 1
8 4
7 3
8 6
1 6
0
c 3 3 0 3 2 4 5 2 25 Shunday   qilib,   masalani   hal   qilish   uchun   siz   Dijkstra   algoritmini   n   marta
quyidagicha qo'llashingiz kerak.
Keling, ixtiyoriy juft cho'qqilarni olaylik
j  ,  k  . C [ j , k ] bevosita chetini istisno qilaylik . Deykstra algoritmidan foydalanib,
j .. k shaharlar orasidagi eng qisqa masofani topamiz  . Bu masofaga ba'zi shahar  m
kiradi . Bizda turning bir qismi  j   ,  m   ,  k   . Endi qo'shni shaharlarning har bir juftligi
uchun (bu misolda, j , m va m , k uchun ) biz mos keladigan chetni olib tashlaymiz
va   eng   qisqa   masofani   topamiz.   Bunday   holda,   eng   qisqa   masofa   allaqachon
ishlatilgan shaharni o'z ichiga olmaydi.
Keyinchalik,   xuddi   shunday   tarzda,   Dijkstra   algoritmidan   foydalanib,   barcha
cho'qqilar   ishtirok   etgunga   qadar   cho'qqilar   juftligi   orasidagi   eng   qisqa   masofani
topamiz.   Keling,   oxirgi   cho'qqini   birinchisiga   bog'laymiz   va   ekskursiya   qilamiz.
Ko'pincha,   bu   oxirgi   chekka   juda   katta   bo'lib   chiqadi   va   tur   xato   bilan   olinadi,
ammo Dijkstra algoritmini taxminiy algoritm sifatida tasniflash mumkin. 26 1.2.5. Sayohatchi sotuvchi muammosini hal qilish uchun mening usulim
(Anishchenko usuli).
Men   sayohatchi   sotuvchi   muammosini   hal   qilish   uchun   o'z   usulimni   taklif
qilaman.
Keling, rasmga qaraylik. 9-10 va ulardagi eng qisqa turlarni topishga harakat
qiling.   Shubhasiz,   eng   qisqa   tur   kesishuvchi   qirralarni   o'z   ichiga   olmaydi   (aks
holda,   cho'qqilarni   kesishgan   qirralar   bilan   almashtirish   orqali   biz   qisqaroq   turga
ega bo'lamiz). Birinchi holatda eng qisqa tur 1-2-4-5-3-1, ikkinchi holatda esa eng
qisqa  tur   1-2-3-4-5-1. Besh   yoki  undan  ortiq  shaharlarning boshqa
ko'plab   shunga   o'xshash   joylarini   tahlil   qilib,
quyidagi umumiy taxminni amalga oshirish mumkin:
1. Agar perimetri bo'ylab barcha shaharlar yotadigan
qavariq   ko'pburchak   qurish   mumkin   bo'lsa,   unda
bunday qavariq ko'pburchak eng qisqa tur  .
barcha   shaharlar   yotadigan   qavariq   ko'pburchakni   qurish   har   doim   ham
mumkin   emas.   Ba'zi   shaharlar   qavariq   ko'pburchakka   kiritilmasligi   ehtimoli
yuqori.   Biz   bunday   shaharlarni   "markaziy"   deb   ataymiz.   Qavariq   ko'pburchakni
qurish   juda   oson   bo'lganligi   sababli,   vazifa   barcha   markaziy   shaharlarni   minimal
yo'qotishlar   bilan   qavariq   ko'pburchak   shaklida   turga   kiritishdan   iborat.   Sayyor
sotuvchi tashrif buyurishi kerak bo'lgan shaharlar raqamlarini o'z ichiga olgan T [ n
+1] massivi bo'lsin , ya'ni birinchi navbatda sayohatchi sotuvchi T [1], keyin T [2],
keyin   T   [3]   shahriga   tashrif   buyurishi   kerak.   ,   va   hokazo   d,   va   T   [   n   +1]=   T   [1]
(sayyor sotuvchi boshlang'ich shaharga qaytishi kerak). U holda  i  ∈  [1,2..n] tenglik
bajarilsa;   C  [  T  [  i  ],  p  ]+  C  [  p  ,  T  [  i  +1]] –  C  [  T  [  I  ],  T  [  i  +1]]=  min , keyin p
raqamli  markaziy shaharni  kiritish kerak. T [ i ] va T [ i  +1]  shaharlari orasidagi
sayohat . Ushbu operatsiyani barcha markaziy shaharlar uchun amalga oshirgandan
so'ng, natija eng qisqa turdir. Bu algoritm Paskalda amalga oshirilib, 1-taxminning
to'g'riligini   tekshirib   ko'rish   mumkin.   Tarmoq   va   bog'lanish   usuli   yordamida   hal
qilgan muammomiz uchun mening algoritmim to'g'ri yechimni beradi. 27 Keling,   ushbu   algoritmdan   foydalanib,   sakkizta   shahar   uchun   masalalarni
hal qilishga harakat qilaylik. Bizda sakkizta shahar bor, ularning joylashuvi rasmda
ko'rsatilgan. 11. Masofa matritsasi jadvalda yonma-yon ko'rsatilgan. 13. Eng qisqa
turning   oraliq   konstruktsiyalari   nuqtali   chiziqlar   bilan   ko'rsatilgan,   raqamlar
chekkalarni   olib   tashlash   tartibini   bildiradi.   Shunday   qilib,   bu   holatda   bizda   eng
qisqa   tur   1-3-7-5-4-8-6-2-1   bor.   Bu   turning   uzunligi:   D
=6+7+5+2+6+5+13+13=57.   Bu   natija   to'g'ri,   chunki   hech   qachon   xato
qilmaydigan   leksik   qidiruv   algoritmi   aynan   bir   xil   turni   beradi.   (Shuningdek,   bu
ish uchun ochko'z algoritm faqat 1 tomonidan noto'g'ri va uzunligi 58 1-3-4-5-7-8-
6-2-1 bir tur beradi, deb ta'kidlash lozim).
Bunday   algoritmning   mumkin   bo'lgan   kamchiliklaridan   biri   masofa
matritsasi   emas,   balki   samolyotdagi   har   bir   shaharning   koordinatalarini   bilish
zarurati. Agar biz shaharlar orasidagi masofalar matritsasini bilsak, lekin ularning
koordinatalarini   bilmasak,   ularni   topish   uchun   har   bir   koordinata   uchun   n   ta
noma’lumli   kvadrat   tenglamalar   tizimini   yechishimiz   kerak   bo‘ladi.   6   ta   shahar
uchun   buni   qilish   allaqachon   juda   qiyin.   Agar   aksincha,   barcha   shaharlarning
koordinatalari   mavjud   bo'lsa,   lekin   ular   orasidagi   masofalar   matritsasi   bo'lmasa,
unda   bu   matritsani   yaratish   qiyin   emas.   Buni   5-6   shahar   uchun   boshingizda
osongina   qilish   mumkin.   Ko'proq   shaharlar   uchun   siz   kompyuterning
imkoniyatlaridan   foydalanishingiz   mumkin,   kompyuterda   kvadrat   tenglamalar
tizimini taqlid qilish juda qiyin.
Yuqoridagilarga   asoslanib,   bizning   algoritmimni   yog'och   algoritm   va
Dijkstra   algoritmi   bilan   birga   taxminiy   deb   tasniflash   mumkin   degan   xulosaga
kelishimiz   mumkin   (garchi   bu   algoritm   noto'g'ri   variantni   ishlab   chiqarish   uchun
hech qachon kuzatilmagan bo'lsa ham).
1.2.6. Sayohatchi sotuvchi muammosini hal qilish usullarini tahlil qilish 28 Muammoli   muammolarni   hal   qilish   usullarini   o'rganishni   umumlashtirish
uchun biz kompyuterda eng maqbul algoritmlarni quyidagi ko'rsatkichlar bo'yicha
sinab ko'ramiz: shaharlar soni, ishlov berish vaqti, noto'g'ri javob ehtimoli. Keling,
ma'lumotlarni jadvalga kiritamiz.
Leksik qidiruv algoritmi
Shaharlar
soni Qayta ishlash
vaqti,  s Noto'g'ri javob ehtimoli, % Algoritm turi
10 41 0
aniq12 12000=3s.20min 0
32 -  *
0
100 -  *
0
Filial va bog'langan usul
10 ~  0 0
aniq32 ~0,0001 0
100 1.2 0
Muammoni hal qilish uchun mening algoritmim
10 0,001 0
taxminiy32 2.5 0
100 6 0
*- Zamonaviy kompyuter koinotning butun mavjudligi davomida ham leksik
qidiruv orqali ko'plab shaharlar bilan muammoni hal qila olmadi.
Ushbu   jadval   natijalaridan   ko'rinib   turibdiki,   leksik   qidiruv   algoritmidan
faqat   shaharlar   soni   5..12   bo'lgan   holatda   foydalanish   mumkin.   Mening   usulim
bilan   birga   filial   va   bog'langan   usul   har   doim   ishlatilishi   mumkin.   Men   o'z
uslubimni   taxminiy   algoritm   deb   tasniflagan   bo'lsam-da,   u   aslida   to'g'ri,   chunki
buning aksini isbotlash hali imkoni yo'q.
  29 1.3 Sayohatchi sotuvchi muammosini amaliy qo'llash
LC   ning   amalda   aniq   qo'llanilishidan   tashqari,   LC   ni   hal   qilish   uchun
qisqartirilishi mumkin bo'lgan bir qator boshqa vazifalar mavjud.
Bo'yoq   ishlab   chiqarish   muammosi   .   Turli   rangdagi   n   bo'yoq   ishlab
chiqarish  uchun ishlab  chiqarish  liniyasi   mavjud ;   Bu  ranglarni  1,2...  n raqamlari
bilan   belgilaymiz   .   Biz   butun   ishlab   chiqarish   liniyasini   bitta   protsessor   deb
hisoblaymiz.. Shuningdek, protsessor  bir vaqtning o'zida faqat bitta bo'yoq ishlab
chiqaradi,   shuning   uchun   bo'yoqlar   qandaydir   tartibda   ishlab   chiqarilishi   kerak,
chunki   ishlab   chiqarish   tsiklik   bo'lgani   uchun,   bo'yoqlar   ishlab   chiqarilishi   kerak
siklik tartib    =(  j  
1   , j  
2   ,.., jn , j1  
)   .   Bo'yoq   i ishlab chiqarishni  tugatgandan so'ng va
bo'yoq j ishlab chiqarishni boshlashdan oldin jihozlarni bo'yoq i dan yuvish kerak .
Bu   C   [   i   ,   j   ]   vaqtini   talab   qiladi.   Ko'rinib   turibdiki,   C   [   i   ,   j   ]   ham   i   ,   ham   j   ga
bog'liq va umuman olganda, C [ i  , j  ]≠  C [  j , i  ]. Muayyan tanlangan buyurtma
bilan siz bo'yoq ishlab chiqarish tsikliga vaqt sarflashingiz kerak bo'ladi
Qayerda tk
 -  k . bo'yoqning aniq ishlab chiqarish vaqti (o'zgarishlarni hisobga
olmaganda). Shu bilan birga, o'ng tomondagi ikkinchi yig'indi doimiydir, shuning
uchun   umumiy   ishlab   chiqarish   davri   vaqti   umumiy   o'zgarish   vaqti   bilan   birga
minimallashtiriladi.
Shunday   qilib,   ZK   va   almashtirish   vaqtini   minimallashtirish   muammosi
faqat bitta muammodir, faqat uning variantlari turli so'zlar bilan tavsiflanadi.
Matbuotni   bosish   muammosi   .   Teshik   pressi   ko'p   sonli   bir   xil   panellar   -
metall  plitalar  ishlab  chiqaradi,  ularda  turli   shakl  va  o'lchamdagi   teshiklar  birma-
bir   teshiladi.   Sxematik   ravishda   matbuotni   x   ,   y   koordinatalari   bo'ylab   mustaqil
ravishda   harakatlanadigan   stol   va   stol   ustida   aylanadigan   disk   sifatida   tasvirlash
mumkin,   uning   perimetri   bo'ylab   turli   shakl   va   o'lchamdagi   teshik   ochuvchi
asboblar  mavjud. Har bir asbob  bitta nusxada mavjud. Disk ikki yo'nalishda  teng
ravishda   aylanishi   mumkin   (aylanish   koordinatasi   z   ).   Haqiqatan   ham,   varaqning 30 kerakli   nuqtasi   asbob   ostiga   olib   kelinganida,   uning   ostida   osilgan   asbobni
bosadigan press mavjud.
j- teshikni teshish operatsiyasi raqamlarning to'rt barobari bilan tavsiflanadi (
x 
j  , y 
j  , z 
j  , t 
j  ), bu erda x 
j  , y 
j -  jadvalning kerakli pozitsiyasining koordinatalari, z 
j
- koordinata. diskning kerakli joylashuvi va t 
j -  j- teshikni teshish vaqti .
Panellarni   ishlab   chiqarish   tsiklik   xarakterga   ega:   har   bir   varaqni   qayta
ishlashning boshida va oxirida stol ( x 
0  , y 
0  ) va disk z 
0 holatida bo'lishi kerak  va bu holatda
hech qanday teshik bo'lmaydi. qilingan. Tizimning bu boshlang'ich holatini xayoliy
nol teshikning teshilishi deb hisoblash mumkin. Parametrlar bilan ( x 
0  , y 
0  , z 
0  ,0 ).
J   -chi   teshikni   i   -chi   teshikdan   keyin   darhol   teshish   uchun   siz   quyidagi
amallarni bajarishingiz kerak:
1. Jadvalni x o'qi bo'ylab x 
i  holatidan x 
j  holatiga o'tkazing , vaqtni t  ( x ) 
(| x 
i  - x 
j
|)= t 
i , j  ( x ) o'tkazing.
    
2. y o'qi bo'ylab xuddi shunday qiling , t 
i , j  ( y ) 
vaqtini sarflang.    
3. Boshni ikkita yoyning eng qisqasi bo'ylab z 
i holatidan  z 
j  holatiga aylantirib, t 
i , j  (
z ) 
vaqtini sarflang .
4. t 
j  vaqtini sarflab, j -chi teshikni teshib qo'ying .
t   (   x   )  
,   t   (   y   )  
,   t   (   z   )  
funktsiyalarining   o'ziga   xos   shakli   pressning   mexanik
xususiyatlariga bog'liq va juda og'ir. Bu funktsiyalarni aniq yozishning hojati yo'q
1-3 amallar ( i -teshikdan j -thga o'tish) bir vaqtning o'zida sodir bo'ladi va
zımbalama   bu   harakatlarning   eng   uzuni   bajarilgandan   so'ng   darhol   sodir   bo'ladi.
Shunung uchun
S[  i  ,  j  ] =  maks  (  t  (  x  ) 
,  t  (  y  ) 
,  t  (  z  ) 
)
Endi,   oldingi   holatda   bo'lgani   kabi,   teshikli   press   uchun   optimal   dasturni
tuzish vazifasi ZK ga tushadi (bu erda, nosimmetrik). 31 xulosalar
1. Muammoli   masalalarni   yechishning   evristik,   taqribiy   va   aniq   algoritmlari
o‘rganildi.   Muammoli   muammolarni   hal   qilishning   aniq   algoritmlari   to'liq
qidiruv   yoki   takomillashtirilgan   qidiruvdir.   Grafik   uchlari   soni   ko'p   bo'lsa,
ularning ikkalasi ham, ayniqsa birinchisi samarali emas.
2. Biz konveks ko'pburchakni qurish va unga markaziy uchlarini (shaharlarni)
kiritishga   asoslangan   muammoni   hal   qilish   uchun   o'zimizning   samarali
usulimizni taklif qilamiz.
3. Muammoli muammolarni hal qilishning eng oqilona usullari tahlili o'tkazildi
va   ularning   samarali   harakat   yo'nalishlari   aniqlandi:   oz   sonli   cho'qqilar
uchun   leksik   qidiruvning   aniq   usulidan   foydalanish   mumkin;   ko'p   sonli
cho'qqilar   uchun   filial   va   bog'lash   usuli   yoki   ish   muallifi   (Sergey
Aleksandrovich Anishchenko) usulidan foydalanish yanada oqilona.
4. Boshqarish   tizimining   amaliy   qo'llanilishi   va   boshqaruv   tizimiga
qisqartirilishi   mumkin   bo'lgan   o'zgarishlar   bilan   bog'liq   muammolar
o'rganildi.
5. Turli usullar yordamida muammoli masalalarni hal qilishga imkon beruvchi
dasturlar matnlari berilgan. 32 Adabiyot
1. O.   Ruda   grafiklari   va   ularning   qo'llanilishi.   Per.   ingliz   tilidan   ed.   ULAR.
Yagloma. - M., “Mir”, 1965, 174 b.
2. V.   P.   Sigorskiy.   Muhandisning   matematik   apparati.   -   K.,   “   Texnologiya   ”,
1975, 768 b.
3. Yu.   N.   Kuznetsov,   V.   I.   Kuzubov,   A.   B.   Voloshchenko.   Matematik
dasturlash:   darslik.   2-nashr.   qayta   ishlangan   va   qo'shimcha   -   M.;   Oliy
maktab, 1980, 300 pp., kasal.
4. E. V. Markova, A. N. Lisenkov. Ko'p faktorli eksperimental muammolarda
kombinatsion dizaynlar. – M., Nauka, 1979, 345 b.
5. E. P. Lipatov. Grafik nazariyasi va uning qo'llanilishi. - M., Bilim, 1986, 32
b.
6. V.   M.   Bondarev,   V.   I.   Rublinetskiy,   E.   G.   Kachko.   Dasturlash   asoslari.   –
Xarkov, Folio; Rostov-na-Don, Feniks, 1998, 368 p.
7. F.   A.   Novikov   dasturchilar   uchun   diskret   matematika.   -   Sankt-Peterburg,
Pyotr, 2001, 304 p., kasal. 33 8. Ilovalar 34

Kommivoyajer masalasini hal qilish usullari

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

  • 2001-yil sentabr voqealri va uning xalqaro munosabatlarga
  • 1945-1990-yillarda Buyuk Britaniya
  • 1918-1923 yillarda xalqaro munosabatlar, Versal Vashington siyetemasining tuzilishi
  • Ahmad al-farg‘oniy
  • Almashlab ekishni loyihalashtirish va joriy etish

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

Да Нет

© Copyright 2019-2026.

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