Бу таърифни оддий схема ёрдамида кўрсатиш мумкин (1.1-расм)
1.1-расм. Алгоритм тушунчасини кўрсатилиши
Юқорида келтирилган таърифдаги “кўрсатмалар” сўзини ёдга
олиш билан биз бу
кўрсатмаларни таний оладиган ва уларда ёзилган ҳаракатларни бажара оладиган қандайдир
абстракт (мавҳум) қурилма мавжудлигини кўзда тутдик. 1.1-расмда бу қурилма “ҳисоблаш
қурилмаси” дейилган. Лекин, назарда тутиш керакки, компьютерлар пайдо бўлгунича “ҳисоблаш
қурилмаси” атамаси деганда сонли ҳисоблашларни бажарадиган инсон тушунилган. Табиийки, гап
замонавийлик ҳақида бораяпди, “ҳисоблаш қурилмаси” атамаси деганда компьютерлар, яъни
бизнинг ҳаётимизга деярли ҳамма жойда кириб келган оммавий электрон қурилма тушунилади.
Шунга қарамай,
эътибор берингки, алогоритмларнинг катта қисми якунда компьютерда
ишлатилишига мўлжалланган бўлсада, алогритм тушунчасининг ўзи бу фаразга ҳеч қандай боғлиқ
эмас.
Бу бўлимда алгоритм тушунчасини кўрсатадиган мисоллар сифатида биз ўша бир – иккита
бутун сонлардан ЭКУБни қидириш масаласини ечишнинг учта усулини кўриб чиқамиз. Бу мисоллар
қуйида санаб ўтилган муҳим моментларни кўрсатиш учун бизга ёрдам беради:
Алгоритмнинг ҳар бир қадами аниқ ва бир хил аниқланиши керак. Бу талаб мажбурий
ҳисобланади ва ҳеч қандай ҳолларда бузилмаслиги керак.
Алгоритм ёрдамида қайта ишланадиган кириш маълумотлари қийматларининг йўл
қўйиладиган дипазони аниқ кўрсатилган бўлиши керак.
Ўша бир алгоритмни бир неча турли усулларда тақдим этиш мумкин.
Ўша бир масалани ечилиши учун бир неча турли алгоритмлар бўлиши мумкин.
Ўша бир масалани ечилиши учун алгоритмлар асосига мутлақо турли принциплар қўйилиши
мумкин, бу мазкур масалани ечилиши тезлигига сезиларли таъсир қилиши мумкин.
Иккита номанфий бутун m ва n сонлар учун ЭКУБни қидириш функциясини gcd(m,n) "greatest
common divisor" билан белгилаймиз (чунончи, m ва n сонлар бир вақтда нолга тенг бўлиши мумкин).
Аниқланиши бўйича бу функция ҳам m га, ҳам n га қолдиқсиз бўлинадиган энг катта бутун сонни
топиши керак. Александриялик қадимги юнон математиги Евклид (эрамизгача III аср) шу
билан
шухрат қозонганки, у биринчи марта геометрия фанини тизимли тавсифлади, ўзининг ишларидан
бири бўлган Бошланиш дейиладиган асарида бу масалани ечилишининг алгоритмини тавсифлади.
Замонавйи тилди айтганда,
Евклид алгоритми қуйидаги тенгсизликни рекуррент ҳисоблашга
асосланган:
gcd (m, n) = gcd (m mod n )
Бу ерда (m mod n ) ифода m ва n га бўлишдан қолдиқ ҳисобланади. Алгоритмнинг
бажарилиши (m mod n ) ифода нолга тенг бўлганида тугайди.
Бинобарин, ged (m, 0) = (негалиги
тушунарли?), охирги олинган m қиймат ҳам дастлабки m ва n сонларга ЭКУБ ҳисобланади.
Масалан, (60, 24) жуфт сонларга ЭКУБни ҳисоблаш қуйидаги тарзда бажарилиши мумкин:
gcd (60, 24) = gcd (24, 12) = gcd (12, 0) = 12.
(агар бу алгоритм сизда таасурот қолдирмаган бўлса, масалан, 1.1-амалиётдаги 4-масалада
ишлатиладиган иккита катта сонларга ЭКУБни аниқлашга уриниб кўринг).
Масала
Do'stlaringiz bilan baham: