Uploaded by Agabek Husinov

Kommivayajer masalasi

advertisement
Kommivoyajer haqida masala
Reja:
• 1. Masala qo’yilishi
• 2. Evristik algoritmlar
• 3. GTS algoritmini tuzish
• 4. Algoritmni baholash
Masala qo’yilishi. Djek – kompyuterlar sotish bo’yicha
agent (kommivoyajer), uning qaramog’ida 20 ta
shahar bor. ishlayotgan kompaniya yo’l harajatlarining
50% ni to’laydi. Djek uning qaramog’ida bo’lgan
har ikki shahar orasida yo’l harajatini hisoblab chiqqan.
Masala yo’l harajatlarini kamaytirishdan iborat.
Dastlabki ma’lumotlar Djek tasarrufidagi shaharlar
ruyhati va narxlar matrisasi ko’rinishida berilgan.
Bu yerda matrisa i shahardan j shaharga borish narxiga
teng bo’lgan c(i,j) elementlardan tashkil topgan
ikki o’lchamli massiv. Shaharlar soni 20 ta bo’lsa, matrisa
- 20´ 20 bo’ladi.
Biz Djekga yo’l harajatlarini kamaytirishga yordam berishimiz
kerak. Djekning marshruti o’zi
yashagan shahardan boshlanib, qolgan hamma shaharlarni bir
martadan o’tib, yana o’z shahriga qaytib
kelishi kerak. Demak, biz tuzayotgan ruyhatda har bir shahar
faqat bir marta uchrashi kerak, Lekin Djek
yashagan shahar ikki marta uchrab, ruyhatning birinchi va oxirgi
elementlari bo’ladi. Undan tashqari,
ruyhatdagi shaharlar tartibi Djekning marshrutini belgilaydi.
Ruyhatdagi ikkita oxirgi shaharlar orasidagi
yo’l narxi – bu butun marshrut narxi deb hisoblanadi. Demak,
agar biz Djekga eng kichik narxdagi
ruyhatni tuzib bersak, masalani yechgan bo’lamiz.
Evristik algoritmlar.
• Evristika yoki evristik algoritm – algoritm deb ta’riflanishi uchun quyidagi hususiyatlarga
ega bo’lishi
• kerak:
• 1. U odatda shartli ravishda optimal bo’lmasa ham, yahshi yechimlarni topish kerak.
• 2. Uni ixtiyoriy ma’lum aniq algoritmdan ko’ra, amalga oshirish tezroq va soddaroq
bo’lishi
• kerak.
• O datda yahshi algoritmlar evristik bo’lib chiqadi. Faraz qilaylik, biz tez ishlaydigan va
barcha test
• topshiriqlariga javob beradigan algoritmni tuzdik, lekin uning to’g’riligini isbotlab
bilmaymiz. Shunday
• isbot berilmaguncha, algoritm evristik deb tushuniladi.
• Misol tariqasida quyidagi algoritmni ko’rib chiqamiz:
GTS algoritmi: (kommivoyajer). N ta shaharlar va C
narxlar matrisasi berilgan kommivoyajer
masalasi uchun U shahardan boshlab COST narxli TOUR
yaqinlashgan yechimni topish kerak.
Qadam 0: [Insiallashtirish] TOUR:=0; COST:=0; V:=U;
Qadam 1: [Hama shaharlarni o’tish] For k:=1 to N-1 do
qadam 2;
Qadam 2: [Keyingi vektorga o’tish]
Faraz qilaylik, (V,W) – V shahardan W ga olib borayotgan
eng kichik narxli vektor. Unda:
TOUR:=TOUR+(V,W); COST:=COST+C(V,W);
V:=W;
Qadam 3: [Marshrutni tugatish] TOUR:=TOUR+(V,1);
COST:=COST+C(V,1);
M a rshrutni tasvirlash uchun biz matematikada graf
yoki tur deb nomlanayotgan chizmadan
foydalanamiz. Umuman tur – bu nuqtalar va bir nechta
yoki barcha ikki nuqtalarni bog’layotgan chiziqlar
to’plami, undan tashqari chiziqlar ustida qiymatlar ham
berilishi mumkin.
Masalani soddalashtirish uchun beshta shahar uchun
yechim topamiz. Rasm. 1a – narxlar matrisasi.
Rasm. 1b – turli model ko’rsatilgan.
Narxlar matrisasi
To’rsimon model
-
1
2
7
5
1
-
4
4
3
2
4
-
1
2
7
4
1
-
3
5
3
2
3
-
Turlar nazariyasida shaharlar ruyhati bir shahardan
boshlab va o’sha shaharga barcha qolgan
shaharlarni
bir martadan o’tib qaytib kelish jarayonini
belgilaydi. Bunday o’tishni marshrut deb
ta’riflaymiz. Marshrut
narxi chiziqlar ustidagi qiymatlar yig’indisi bilan
aniqlanadi.
Rasm 2 algoritm GTS bo’yicha K marshrutni
shahar1 dan boshlab tuzishni aks ettiradi.
G TS algoritmi bo’yicha marshrut narxi 14 ga teng. Bu yerda algoritm eng
kichik narxli marshrutni
topmaganini ko’ramiz. Masalan, marshrut 1-5-3-4-2-1 narxi
5+2+1+4+1=13.
Odatda yaqinlashgan algoritmlar tez bo’lsa ham, hamma vaqt optimal
yechimni berolmaydilar. GTS
algoritm uchun biz nazoratchi nisol topib bildik. Lekin, yaqinlashgan
algoritm ishlamasligini isbotlash
hamma vaqt ham oson bo’lmaydi.
GTS algoritmi uchun dastur yozish ancha yengil. Lekin uni tezligini tahlil
qilib ko’raylik. Ixtiyoriy
kommivoyajer masalasi uchun (besh shahardan iborat) C narxlar
matrisasini o’qish va tuzishga O(N 2 )
operatsiya kerak. Demak, pastki murakkablik chegara algoritm uchun
O(N 2 ) teng va GTS algoritmini
yahshi evristik algoritm deb qabul qilishimiz mumkin.
Download