Алгоритм

Сайн байцгаан уу? та бүхэнд энэ өдрийн мэндийг хүргэе.

           Алгоритмын талаарх дараах мэдээллийг хүлээн авна уу.
Алгоритм

Хүн ямар нэг үр дүнд хүрэх ажлыг хийхдээ аль болох хялбар, бага зардлаар үнэн зөв үр дүнг гаргаж хийхийг эрмэлздэг. Жишээ нь: Гэрээс сургуульд очих зам, хувцас өмсөх, олон оронтой тоо нэмэх, хасах, анчин чоно, ямаа, байцааг голоор гаргах, самбар арчих гэх мэт үйлдлийг хийхдээ зөв, хялбар аргыг сонгодог. Тухайлбал хүн болгон өглөө босоод хувцаслахдаа өөр өөрийн тогтсон дэс дарааллыг баримталдаг. Байгаль дахь төлөвүүд хүртэл тодорхой зөв дараалалд байдаг. Мөн бодисын хий, шингэн, хатуу төлөв гэж байдаг. Зарим бодис нэг төлөвт дандаа байдаг бол зарим нь нэг төлөвөөс нөгөөд хувирдаг. Жишээ нь: гол мөрөн хөлдөж мөс болох, эргээд хайлж ус болох, ус ууршиж уур болох, ган төмөр хайлах, мод зун ногоорч, намар шарлах, мод нүүрс шатаж утаа, хөө, үнс, тортог болох гэхмэтчилэн олон төлөвүүдийн дараалал байдаг. Өдөр /өглөө, бага үд, үд, их үд, орой/, хоног/өглөө, өдөр, үдэш, шөнө/, долоо хоног/даваа, мягмар, лхагва, пүрэв, баасан, бямба, ням/, жил /нэгдүгээр сар, хоёрдугаар сар,…,арванхоёрдугаар сар/, жил/хавар, зун, намар, өвөл/, билгийн тоолол/хулгана, үхэр, бар, туулай,…,гахай/ хүүхдийн өсөлт хөгжилтийн дараалал/нярай, хөхүүл, балчир, бага, асвөр, идэр/, цэцэгт ургамлын хөгжил/соёололт, бундуужилт, цэцэглэлт, үрлэлт, хагдралт/ гэх мэт. Үйлдлийн дарааллыг зав сонгосноор төлөвлөсөн үр дүнд хүрнэ. Тодорхой үр дүнд хүрэх үйлдлийн дарааллын гишүүн болох үйлдэл тус бүрийг нэг удаа биелүүлдэг бол түүнийг үйлдлийн шугаман дараалал гэнэ. Үйлдлийн шугаман дарааллыг урьдчилан тодорхойлсныг үйлдлийн шугаман төлөвлөгөө гэнэ.Үйлдлийн дараалыг зөв баримтлаагүйгээс алдаа гарч болно. Бид янз бүрийн хууль, дүрэм, зааврыг баримтлан амьдардаг, аливаа төрлийн бодлогыг боддог, асуудлыг шииддэг. Энэ нь алгоритм бидний хувьд өдөр тутам хэрэглэгдэж байдаг ойлголт гэдгийг харуулж байна. Утсаар ярих, шатаар явах, гудамж хөндлөн гарах, өдрийн хуваарь мөрдөх, математикийн бодлогуудыг холбогдох аргаар бодох зэрэг олон ажлыг зохих дүрэм, журам заавраар нь гүйцэтгэдэг. Энэ нь тодорхой үр дүнд хүрэх үйлдлүүдийг биелүүлж байгаа хэрэг юм. Үүнийг алгоритм гэнэ. Хүмүүс өдөр тутмын үйл ажиллагаандаа болон амьдрах хугацаандаа олон тооны алгоритмуудыг төлөвлөн гүйцэтгэж байдаг боловч үүнийгээ тэр болгон мэдэрдэггүй байна. Хүний амьдрал нь тэр чигээрээ алгоритм юм.
Алгоритмын тухай ойлголт нь нэгэн төрлийн бодлогуудыг бодох ерөнхий арга олж тогтоох гэсэн оролдлоготой уялдан Математикт анх үүссэн ба алгоритм гэсэн нэр томъёог арифметикийн дөрвөн үйлдлийг гүйцэтгэх дүрэм боловсруулсан Узбекийн математикч Мухамед Ибн Мусса Аль-Хорезмын араб нэрийг латинаар бичсэн Algorithmi гэсэн үгээс гаралтай гэж үздэг. Дундад зууны үед Европод аравтын тооллын систем болон түүнд үйлдэл хийх дүрмийг алгоритм гэж мөн нэрлэж байжээ. Алгоритмыг дараах байдлаар тодорхойлж болох юм.
Тодорхойлолт 1: Нэгэн утгатай биелэгдэж болох алхам - үйлдлүүдийн төгсгөлөг дарааллыг алхам алхмаар нь гүйцэтгэхэд төгсдөг бол энэ дарааллыг алгоритм гэнэ.
Тодорхойлолт 2: Дэвшүүлсэн зорилгодоо хүрэх буюу өмнөө тавьсан бодлогоо бодохын тулд гүйцэтгэгчийн хийх үйлдлүүдийн дарааллыг түүнд ойлгомжтой байхаар нарийвчлан зааж өгснийг алгоритм гэнэ.
Тодорхойлолт 3: Тодорхой бодлогын хувьд бодлогын шийд-үр дүнг гаргаж авахын тулд бодлогын нөхцөлд өгөгдсөн анхны өгөгдөл болон бодолтын явцад гарах завсрын үр дүн хэмжигдэхүүнүүд дээр хийх үйлдлүүдийн төгсгөлөг дарааллыг уг бодлогыг бодох алгоритм гэнэ. Эдгээр тодорхойлолтуудад бодлого гэдэг нь ихэнх тохиолдолд бодлого гэдэг сонгодог утгаараа хэрэглэгдэхээс гадна дэвшүүлсэн зорилго эсвэл шийдэх асуудал, гүйцэтгэх ажил гэсэн амьдрал практикийн болон шинжлэх ухааны асуудал шийдэх хүртэл маш өргөн утгаар хэрэглэнэ.
Мөн эцсийн тодорхой үр дүнг гарган авах (төгсгөлөг тооны алхмын дараа)-ын тулд ямар нэгэн объект (анхдагч ба завсрын өгөгдлүүд)-ууд дээр гүйцэтгэгчийн хийх үйлдлүүдийн агуулга ба дарааллыг тодорхойлох төгсгөлөг, тов тодорхой дүрмүүдийн системийг алгоритм хэмээн нэрлэнэ. Энэхүү тодорхойлолт нь алгоритм гэдэг үгийн математик утгад харгалзах тодорхойлолт биш бөгөөд зөвхөн алгоритм хэмээх ухагдахууны мөн чанарыг нээн гаргахад чиглэсэн үлэмж дэлгэрэнгүй тайлбарласан тайлбар юм. Алгоритмын тухай ухагдахуун нь анхны тооцоолон бодох машин (ТЭМ) үүсч бий болохоос бүр эрт үндэс суурь нь бүрэлдэн тогтож ирсэн математикийн хийгээд мэдээлэд зүйн шинжлэх ухааны тулгуур ухагдахууны нэг юм. Алгоритмд заасан үйлдлийг буюу ажлыг биелүүлэгчийг алгоритмийг гүйцэтгэгч гэж нэрлэдэг. Аливаа алгоритмыг тодорхой гүйцэтгэгчид зориулан зохиодог. Алгоритмыг зохиогч нь хүн байна, харин гүйцэтгэгч нь хүн, компьютер, робот эсвэл бусад техник хэрэгсэл байж болно.
Гүйцэтгэгчийн хийх үйлдлүүдийн дарааллыг алгоритм заадаг учраас эдгээр үйлдлүүдийн олонлогийг алгоритмын командуудын систем гэж нэрлэдэг. Гүйцэтгэгч тухайн үйлдлүүдийг нэгэн утгатай нарийн зөв гүйцэтгэх бөгөөд энэ нь гүйцэтгэгчийн командуудын систем болно. Алгоритмын гүйцэтгэгчээр хүн сонгогдсон бол түүний эх хэл дээр, эсвэл түүний сайн ойлгох хэл дээр үгээр илэрхийлэх аргаар зохионо. Ман бло схем зургаар болон мөн алгоритмыг дүрслэх хэл болох алгоритм хэл дээр зохиож болно. Харин алгоритмын гүйцэтгэгчээр компьютерийг ашиглах бол компьютерийн ойлгож чадах хэл дээр хүн алгоритмыг бичиж компьютерт оруулдаг. Үүнийг програм бичих гэнэ. Энэ програмыг бичигч нь хүн байх учраас хүн ба клмпьютерийн аль аль нь ойлгодог хэлийг програмчлалын хэл гэнэ. Хүн бодлогын алгоритмыг зохиож түүнийг өөрөө гүйцэтгэдэг тул зохиох, биелүүлэх гэсэн үйл ажиллагааг салангид хийдэггүй ба алгоритмыг тусгайлан бичиж тэмдэглэдэггүй. Бэлэн алгоритмаар бодолтыг хийх нь гүйцэтгэгчээс сэтгэхийг шаарддаггүй цэвэр гүйцэтгэх шинжтэй учир түүнийг автоматчилан машинаар гүйцэтгэх боломжтой. Алгоритмын командуудын систем нь гүйцэтгэгчийн командуудын системийн дэд олонлог байх ёстой. Энэ нь алгоритм гүйцэтгэгдэх зайлшгүй нөхцөл юм.  Алгоритмын тодорхойлтуудад хэлэгдэж байгаа: “гүйцэтгэгчийн хийх үйлдлүүдийн дараалал”, ”нэгэн утгатай биелэгдэх”, ”алхам - үйлдлүүдээс тогтсон”,  ”төгсгөлөг дараалал байх”, “заавал төгсдөг байх” гэсэн нотолгоо бүр нь алгоритм ямар шинжтэй байх ёстойг тодорхойлж байна. Иймд тодорхойлолтонд заагдсан эдгээр шаардлагаас алгоритмын чанар мөрдөн гарна.
Дискрет /тасралттай/ чанар. Аливаа алгоритм нь түний гүйцэтгэгчийн биелүүлж чадах үйлдэл/алхам-уудад хуваагдсан байх ба ийм үйлдлүүдийн дараалал хэлбэртэй байна. Үүнийг дискрет чанар гэнэ. Алхам буюу үйлдэл нь өгөгдөл буюу өмнөх алхмын хэмжигдэхүүнүүдээр тодорхой дүрмийн дагуу шинэ хэмжигдэхүүнүүдийг олно. Энэ үйлдлүүд нь заавал энгийн байх албагүй, харин гүйцэтгэгчийн чадварт тохирсон л бол хичнээн ч ниилмэл байж болно. Ийм учраас алгоритмын үйлдэл гэхээс алгоритмын алхам гэх нь илүү оновчтой байна. Нэг алхам нь хэд хэдэн үйлдлээс тогтсон байж болно. “Биелэгдэж болох” гэдэг нь алгоритмыг биелүүлэх гүйцэтгэгчийн биелүүлж, хийж чадах алхмуудаас алгоритм тогтсон байх ёстой гэсэн шаардлага юм.
Тодорхой байх чанар. Алгоритмын аливаа алхмын үйлдлийг гүйцэтгэгч нэгэн утгатай ойлгохын зэрэгцээгээр гүйцэтгэж чаддаг байна. Энэ нь алгоритмын тодорхой байх чанар юм. “Нэгэн утгатай биелэгдэх” гэдгийн дор алгоритмын алхам бүрийн хувьд түүнээс өмнө биелэгдсэн алхмуудын үр дүн тодорхой байх ба уг алхам биелэгдэхэд түүний үр дүн болоод дараачийн биелэгдэх алхам нь мөн нэгэн утгатай тодорхойлогддог байх ёстой. Алгоритмын алхам бүр нь гүйцэтгэгч хэмжигдэхүүнийг тодорхой нэг төлвөөс тодорхой төлөвт шилжүүлдэг байх ёстой гэсэн шаардлага юм.
Төгслөг байх чанар. Алгоритм нь төгслөг тооны алхамтай байна. Энэ нь алгоритмын төгслөг байх чанар юм. Гүйцэтгэгчийн хувьд биелэгдэж болох алхмын төгсгөлөг дарааллын хувьд түүнийг биелүүлэхэд заавал төгсдөг байх гэсэн шаардлага нь илүү мэт санагдаж болох юм. Гэвч “төгсдөг байх” гэдгийн дор төгсгөлөг тооны алхам биелэгдсэний дараа алгоритмын биелэлт заавал төгсдөг байх ёстой гэсэн шаардлага юм.  
Үр дүнтэй байх чанар. Алгоритмын аливаа алхам болон алгоритмыг бүхэлд нь биелүүлэхэд тодорхой үр дүн гардаг байх ёстой. Үүнийг алгоритмын үр дүнтэй байх чанар гэнэ. Аливаа алгоритм нь төгсгөлөг тооны алхам биелэгдсэний дараа тодорхой бөгөөд нэгэн утгатай үр дүн өгдөг байх ёстой. Тодорхой үр дүн гэдэг нь бодолтын төгсгөлд гарч болох бүх тохиолдолд тохирсон үр дүн байх ёстой гэсэн шаардлага юм.
Алгоритм нийтлэг байх чанар. Тодорхой бодлогын алгоритмыг зохиохдоо энэ бодлоготой ижил төрлийн бүх бодлогыг бодоход хэрэглэж болохоор ерөнхий алгоритмыг зохиох ёстой. Энэ нь нийтлэг /түгээмэл/ байх чанар юм.
Алгоритмыг илэрхийлэх аргууд
· Үгээр дүрслэн бичих (дүрслэлийн бичвэр хэлбэр)
· Блок схем хэлбэрээр дүрслэн илэрхийлэх (алгоритмын блок-схем)
· Алгоритмын ямар нэгэн тодорхой хэл дээр дүрслэн бичих (алгоритмын псевдокод)
· Тьюрингийн эсвэл Постын машин хэлбэрээр алгоритмыг дүрслэх (Тьюрингийн эсвэл Постын машин)гэх мэт олон аргууд оршин байдаг.
Алгоритмын төрөл
· Шугаман алгоритм Хэрвээ Р гэсэн алгоритмын хувьд түүний алхам бүр нэг удаа
хэрэгжигдэх бөгөөд, тэгэхдээ хэрэв i-р алхам нь алгоритмын төгсгөл биш л бол i-р алхам бүрийн дараа (i+1)-р алхам нь биелэгддэг бол Р- алгоритмыг алгоритмын дэс дараалсан бүтцээр зохиомжлогдсон байна гэж нэрлэнэ.
· Салаалсан алгоритм Хэрвээ дараагийн удаа ямар алхмыг биелүүлэх вэ гэдэг нь
оролтын өгөгдлүүдээс хамаарч байвал, өөрөөр хэлбэл алгоритмын алхмуудын биелэгдэх дараалал нь оролтын өгөгдлүүдээсээ хамаарч байвал Р-алгоритмыг салаалсан алгоритм бүтцээр зохиомжлогдсон байна гэж нэрлэнэ.
Давталттай алгоритм Хэрвээ алгоритмын ямар нэгэн бүлэг дэс дараалсан алхмууд нь оролтын өгөгдлүүдээсээ хамаараад хэд хэдэн удаа давтан биелэгдэх боломжтой байвал Р-гэсэн алгоритмыг давталтат алгоритмын бүтцээр зохиомжлогдсон байна гэж нэрлэнэ. Давталтыг өмнөх нөхцөлт, дараах нөхцөлт, параметртэй гэж 3 ангилдаг.
Өмнөх нөхцөлт давталт. Давталтыг төгсдөг болгохын тулд нөхцөл шалгах үйлдлийг ашигладаг. Нөхцөл шалгах үйлдэл ба нөхцөлт биш удирдлага дамжуулах үйлдлээр нийлмэл үйлдлийг зохиож болно. Ийм давталтанд давтагдан биелж байгаа бүлэг үйлдлүүдийгдавталтын бие, давталтыг үргэлжлүүлэх эсэхийг тогтоохоор шалгаж буй нөхцөлийг төгсгөх нөхцөл гэж тус тус нэрлэнэ. Энэ давталтын хувьд түүнийг төгсгөх нөхцөлийг давталтын бие биелэгдэхийн өмнө шалгаж байгаа учраас уг давталыг өмнөх нөхцөлт давталт гэнэ.
Дараах нөхцөлт давталт Энэ давталтын хувьд түүнийг төгсгөх нөхцөлийг давталтын бие биелэгдсэний дараа шалгаж байгаа учраас ийм хэлбэрийн давталтыг дараах нөхцөлтдавталт гэнэ. Энэ давталтанд давталтын биеийг биелүүлээд дараа нь төгсгөх нөхцөлийг шалгаж хэрэв “худал” утгатай байвал давталтыг үргэлжлүүлэн биелүүлдэг.
Параметртэй давталт Параметрийн тодорхой утганд давтах ийм төрлийн давталт маш өргөн хэрэглэгддэг учраас параметрт давталт гэж нэрлээд програмчлалын бүх хэлэнд тусгай оператор (команд)-аар бичдэг. Иймээс алгоритмын хэлэнд уг давталтыг дорх ерөнхий хэлбэртэй бичнэ.