Алгоритмни кодлаш
Кўплаб алгоритмлар оҳир оқибат компютер дастурларига айланишга мўлжалланган. Дастур
ёзиш жараёнида кўп қийинчиликларга дуч келиш мумкин. Eнг асосий хавф, алгоритмни машина
тилига таржима қилишда вужуга келиши мумкин ёки дастурни ўзи самарасиз яратилган. Шунинг
учун баъзи машҳур мутахасисслар компютер дастури тўғрилиги математик усуллар орқали
текширилмагунча исботланмайди ден ҳисоблашади. Улар, ҳаттоки, шундай баҳолашни амалга
оширувчи махсус методлар ўйлаб топишган. Аммо, бу методлар формал тарзда жуда кичик
дастурларга қўлланилмоқда. Амалиётда ҳанузгача компютер дастурлари тўғрилиги тест орқали
текширилади. Тест жараёни илм соҳасидан кўра кўпроқ санъат соҳаси ҳисобланади, лекин бу
ундан ҳеч нарса ўрганиб бўлмайди дегани эмас. Тест ва тўғирлашга кўплаб китоблар бағишланган,
бироқ уларнинг асосий фикрини шундай умумлаштирса бўлади: программа алгоритмини амалга
оширишда тест ва тўғирлаш синчиклаб ўтказилиши лозим.
Биз бу китобда кирувчи маълумотлар диапазони алгоритм элементлари ҳар доим аввалдан
қўйилган чегараларга кирмайди деб таъкидлаймиз, шунинг учун уни текшириш шарт эмас. Бироқ,
алгоритмларни амалий ишловчи дастурлар кўринишида амалга оширишда бундай текширув
даркордир.
Алгоритмни программа кўринишида тўғри амалга ошириш керак, лекин алгоритм кучи уни
амалга оширишни самарасиз қилиши мумкин. Замонавий компиляторлар бир қанча даражада
бундай ҳавфни олдини олишни, айниқса, кодни оптимизациялаштириш жараёнида таъминлайди.
Шунга қарамасдан, бир қатор стандарт нарсалар, ҳисоблаш операторининг инвариант таъбирини
(сиклда ўзгармайдиган) сикл чегарасидан чиқариш, секин операторлани тезлари билан ўрин
алмашиниши ҳақида билиш лозим. Бундай оптимизациялаш методларини қўллаш программани
амалга оширишда фақат узоқ бўлмаган давомий кенгайишда қўлланилади, самаралироқ
алгоритмни қўллаш, баъзида программани амалга оширишни бир қанча тартибда тезлаштиради.
Алгоритм қатъиян танланганда, программани ишлаб чиқаришини 10- 50% га ошириш яхши натижа
ҳисобланади.
Программани ишловчи версияси яратилгандан сўнг, алгоритм асосида ётувчи қўшимча
эмпирик анализ амалга оширилиши мумкин. Бунинг учун, кирувчи маълумотлар кўрсаткичи
программа амалга ошиш вақтини қайд этиб, олинган натижаларни анализ қилиб чиқиши лозим. 2.6
бўлимида алгоритмларни анализ қилиш ютуқ ва камчиликлари ҳақида гапирилади.
Хулоса ўрнида, яна бир бор алгоритмни лойиҳалаш ва анализ қилиш ғоясини таъкидлаб
ўтамиз.
Идеал кўринишдаги алгоритм яратиш биринчи уринишдан қўлингиздан келган тақдирда ҳам,
барибир, анализ қилиб, янада яхшилашга уриниб кўринг. Бу фикр унчалик ҳам ёмон эмас. Бошқа
тарафдан, вақтида тўхташни ҳам билиш керак. Реал ҳаётда вақт тўхтатувчи омиллар - бу проектни
топшириш вақти ёки бошлиқнинг сабри бўлиши мумкин. Алгоритмни лойиҳалаш инженерлик
вазифаси томонидан қийин ҳисобланади. Бу ҳолат чекланган ресурслар ва проектировшикнинг
вақти билан боғлиқдир.
Академик нуқтаи назардан, бу бўлимда қизиқ ҳамда қийин бўлган алгоритмнинг
оптималлиги ҳақидаги тадқиқот саволи кўтарилган. Бу савол алгоритм самарадорлигига эмас,
балки ечилаётган масала қийинчилик даражасига дахлдордир. Сизнинг олдингизга қўйилган
масалани ихтиёрий алгоритм ёрдамида ишлаш учун қанча минимал миқдорда куч сарф этиш
лозим? Бир қанча масалалар саволига жавоб топилган. Масалан, ҳар қандай саралаш алгоритми
массивда элементларини н лог2н, таққослаш методи орқали амалга оширилади, н - бир ўчовли
массив. Бироқ, содда кўринган матрисаларни кўпайтириш каби масалаларга олимлар томонидан
ҳалигача аниқ жавоб топилмаган.
Алгоритмик масалаларни ечишда пайдо бўладиган яна бир муҳим савол шуки, масалани ҳар
қандай алгоритм ёрдамида ишлаш мумкинми? Бу китобда, биз ечимга эга бўлмаган, манфий
дискриминантга эга бўлган квадрат тенгламалар илдизини қидириш каби масалалар ҳақида сўз
юритмаймиз. Бундай ҳолатларда, алгоритм масала ечимга эга эмас деган махсус маъноли жавобни
қайтариш керак. Ҳар қандай алгоритм ёрдамида ечимни топиш мумкин бўлмаган масалалар
ҳақида гап кетмоқда, лекин уларнинг жавоби оддийгина - ҳа ёки йўқ бўлиши мумкин. Бундай
масалаларга намуна кейинги бўлимларда келтирилган. кўплаб бундай масалалар айрим
алгоритмлар ёрдамида ишланиши мумкин.
Хулоса қилиб айтганда, алгоритмларни ишлаб чиқиш бу ижодий иш, аниқ чизиб қўйилган
қоидалар ҳамма вақт ҳам қўл келавермайди.
Do'stlaringiz bilan baham: |