NP to'liq masalalarni hal qilish uchun evrestik 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.
Odatda 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.
Evristika (boshqa yunon tilidan: εὑρίσκω - "qidiraman", "kashf qilaman") - bu bilim sohasi, ijodiy faoliyatning o'ziga xos xususiyatlarini o'rganadigan ilmiy soha. Evristika deganda kognitiv, konstruktiv, amaliy masalalarni hal qilishni osonlashtiradigan sodda usullar va uslublarning umumlashgan majmuasi tushuniladi.
Evristik algoritm (evristik) - bu masalani hal qilish algoritmi, shu jumladan aniq yoki optimal bo'lishi kafolatlanmagan, ammo qo’yilgan masalani hal qilish uchun yetarli bo'lgan amaliy usul. Aniq yechimni topa olmagan holatlarda muammoni hal qilishni tezlashtirishga imkon beradi.
Evristik algoritm - bu barcha mumkin bo'lgan holatlarda uning to'g'riligi isbotlanmagan, ammo ko'p hollarda juda yaxshi yechim topishi ma'lum bo'lgan masalani hal qilish algoritmi. Aslida, hatto evristik algoritm rasman noto'g'ri ekanligi ham ma'lum bo'lishi mumkin (ya'ni isbotlangan). Agar u bir vaqtning o'zida noto'g'ri natijani faqat alohida, juda kam uchraydigan va alohida ajratilgan hollarda bersa yoki noaniq, ammo baribir maqbul natijani beradigan bo'lsa, undan foydalanish mumkin.
Oddiy qilib aytganda, evristika mutlaqo matematik asoslangan emas (yoki "umuman to'g'ri emas"), ammo bu amaliy foydali algoritmdir. Masalani hal qilishning aniq algoritmidan farqli o'laroq, evristik algoritmlar quyidagi xususiyatlarga ega ekanligini tushunish muhimdir:
yaxshiroq yechimni kafolatlamaydi.
garchi u aniq mavjud bo'lsa ham, yechimni topishga kafolat bermaydi.
Ba'zi hollarda u noto'g'ri qaror qabul qilishi mumkin.
Hisoblash murakkabligi yuqori bo’lgan masalalarni hal qilish uchun evristik algoritmlardan keng foydalaniladi. Ya’ni ko’p vaqt talab qiladigan va ba’zan texnik jihatdan imkonsiz barcha variantlarni to’liq qayta ko’rib chiqadigan algoritm o’rniga ancha tezroq, ammo yetarlicha nazariy asoslanmagan algoritm qo’llaniladi.
Taqribiy va evristik usullar - yechim elementlarini tanlash uchun evristikadan foydalanish.
Psevdopolinomial algoritmlar - dinamik dasturlash sinfiga oid algoritmlar.
Local yahshilash usuli - ba'zi bir mavjud yechim atrofida eng maqbul yechim izlash.
Tarmoqlar va chegaralar usuli - ba'zi baholashga ko'ra maqbul bo'lmagan yechimlarning barcha sinflarini bekor qilish.
Tasodifiy qidiruv usuli - tanlovni tasodifiy tanlovlar ketma-ketligi bilan ifodalash.
Yaqinlashtiruvchi(approksimatsion) algoritmlar polinomial vaqt ichida bajariladi va optimal darajaga yaqin bo'lish kafolati bo'lgan yechimlarni topadi.
Algoritmlarni ishlab chiqish uchun to'rtta umumiy metodologiya:
Birinchi umumiy metodologiya tez va oson bajariladigan ochko'z algoritmlardir. Asosiy muammo bu optimalga yaqin maqbul yechimlarga olib keluvchi ochko'z algoritm qoidalarini topishdir.
Ikkinchi umumiy metodologiya – narxlarni belgilash usuli - iqtisodiy asoslangan; masaladagi har bir cheklovga rioya qilish uchun to'lanishi kerak bo'lgan narxni ko'rib chiqiladi.
Uchinchi umumiy metodologiya – Butun sonli chiziqli dasturlash usulidir. Butun sonli dasturlash masalasi ham chiziqli dasturlash masalasidek qo’yilib, optimal yechim o’zgaruvchilarning qiymati butun musbat son bo’lsin, degan qo’shimcha talab qo’yiladi.
To’rtinchi umumiy metodologiya – dinamik dasturlash usuli bo’lib, optimallashtirish muammolarini hal qilishda, ma'lum cheklovlarni hisobga olgan holda, maksimal yoki minimal echimni qidiradigan muammolar uchun foydali usuldir, chunki u barcha mumkin bo'lgan kichik muammolarni ko'rib chiqadi va hech qachon biron bir sub-muammoning yechimini qaytarmaydi.
Yaqinlashtiruvchi(approksimatsion) algoritmlarning tasnifi:
kafolatlangan faoliyat ko’rsatuvchi algoritmlari;
lokal optimallashtirish algoritmlari va evristik protseduralar;
lokal optimallashtirish algoritmlari va evristik protseduralardan foydalanuvchi birlashtirilgan algoritmlar;
taqribiy yechimlarga erishish uchun aniq usullarning elementlaridan foydalanuvchi algoritmlar;
"tarmoqlar va chegaralar" kabi birlashtirilgan algoritmlar, katta o'lchamdagi masalalarni hal qilish algoritmlari.
Masala: Saper o’yini. O’yin sharti: n x n o’lchamdagi elementlari 0 va 1 lardan tashkil topgan yopiq matritsa beriladi. Matritsa indekslarini kiritganingizda “0” chiqsa yana urinish bor, agar bir chiqsa yutqazasiz.
Do'stlaringiz bilan baham: |