Алгоритм

**Алгоритм** (латин. algorithmi - Дундад Азийн математикч Аль-Хорезмигийн нэрээс) нь тодорхой ангиллын асуудлыг шийдвэрлэх нарийн тодорхойлсон дүрмүүдийн багц эсвэл тодорхой асуудлыг шийдвэрлэхийн тулд гүйцэтгэгчийн үйл ажиллагааны дарааллыг тодорхойлсон зааврын багц гэж ойлгодог.

Алгоритм гэдэг ойлголт нь математикийн анхны, суурь, үндсэн ойлголтуудыг хэлдэг. Алгоритм шинж чанартай тооцоолох үйл явц (бүхэл тоон дээр хийх арифметик үйлдлүүд, хоёр тооны хамгийн том нийтлэг хуваагчийг олох гэх мэт) нь хүн төрөлхтөн эрт дээр үеэс мэддэг болсон. Гэсэн хэдий ч алгоритмын тухай ойлголт 20-р зууны эхээр л тодорхой болсон.

Тооцооллын алгоритмын орчин үеийн албан ёсны тодорхойлолтыг 1930-50-аад онд Алан Тюринг, Эмиль Пост, Алонзо Чёрч (Чёрч-Тюрингийн диссертаци), Норберт Винер нарын бүтээлүүдэд өгсөн байдаг.

Жишээ нь: Чийдэн яаж асаах эсэхийг тодруулах зорилготой блок схем. Өгөгдөл, завсрын хэмжигдхүүнүүдийн утга болон үр дүнг гаргана.
|}
явцад гарах завсрын хэмжигдхүүнүүд дээр хийх үйлдлүүдийн агуулга болон дэс дарааллыг тодорхойлж байгаа зааврыг хэлнэ. Өөрөөр хэлбэл гүйцэтгэгчийн биелүүлж чадах үйлдлүүдийн дараалал юм. Үүнийг хиймэл оюун ухаанд ашигладаг ба аливаа хүний хийдэг үйл ажиллагааг удирдан захирахад зориулагддаг болно.

Хүмүүс өдөр тутмын үйл ажиллагаандаа олон тооны алгоритмыг гүйцэтгэж байдаг боловч үүнийгээ тэр болгон мэддэггүй бөгөөд анзаардаггүй байна. Тухайлбал, тухайн өдрийн ажил төрөл болон тодорхой нэгэн ажлыг хийхдээ тогтсон дэс дарааллыг мөрддөг. Алгоритмын тухай ойлголт нь нэгэн төрлийн бодлогуудыг бодох ерөнхий арга олж тогтоох гэсэн оролдлоготой уялдан математикт анх үүссэн байдаг. Алгоритм гэдэг нэр томъёог арифметикийн 4-н үйлдлийг гүйцэтгэх дүрэм боловсруулсан Персийн математикч Мухаммед Ибн Мусса Аль-Хорезмыннэрнээс гаралтай гэж үздэг. Орчин үед алгоритмын тухай онол нь математикийн шинжлэх ухааны нэг салбар болон хөгжихийн зэрэгцээгээр компьютер дээр бодлого бодоход маш чухал үүрэг гүйцэтгэж байна.
### Дискрет чанар 
Алгоритм нь өгөгдөл эсвэл өмнөх алхмуудын хэмжигдхүүнүүдээр тодорхой дүрмийн дагуу шинэ хэмжигдхүүнүүдийг олох тусгаар алхмуудад хуваагдсан байна. Энэ чанарыг алгоритмын дискрет чанар гэнэ.

### Тодорхой чанар 
Алгоритмын аливаа алхмын үйлдлийг гүйцэтгэгч нэгэн утгатайгаар ойлгохын зэрэгцээгээр гүйцэтгэж чаддаг байна. Энэ нь алгоритмын тодорхой байх чанар юм.

### Төгсгөлөг чанар 
Алгоритм нь төгсгөлөг тооны алхамтай байна.

### Үр дүнтэй чанар 
Алгоритмын аливаа алхам болон алгоритмыг бүхэлд нь биелүүлэхэд тодорхой үр дүн гардаг байх ёстой. Үүнийг алгоритмын үр дүнтэй байх чанар гэнэ.

### Нийтлэг чанар 
Алгоритм нь зөвхөн тухайн өгөгдөлд төдийгүй уг өгөгдөлтэй ижил төрлийн бүх өгөгдөлд хүчинтэй байна. Энэ чанарыг нийтлэг чанар гэнэ.

## Алгоритмын төрлүүд 
Алгоритмыг дараах 4 төрөлд хуваадаг:
* Шугаман
* Салаалсан -энгийн,
*Давталттай 
*Холимог гэж  4 хуваагддаг

## Алгоритм дүрслэх 
Алгоритмыг янз янзаар дүрсэлж болно.

# Хүмүүсийн харилцааны ердийн хэл - алгоритмын алхам бүрийг үг ба өгүүлбэрээр бичнэ.
# Блок схем -  алгоритмын бүтцийг нүдэнд харагдахуйц байдлаар харуулан алгоритмыг графикаар дүрслэх хэлбэр юм. Блок-схемд алгоритмын алхам бүрийг геометрийн нөхцөлт дүрсээр тэмдэглэх бөгөөд уг дүрс дотор тухайн алхмын товч утгыг томъёогоор бичнэ.
# Програмчлалын хэл - программчлалын ямар нэгэн хэл сонгон авч тухайн хэлнийхээ үгзүй, өгүүлбэрзүйн дүрмүүдийг баримтлан алгоритмыг тэр хэлээрээ бичнэ.

## Алгоритмыг зохиох аргачлал 
Алгоритм зохионо гэдэг нь тухайн бодлогыг бодох үйл ажиллагааг гүйцэтгэгчийг үйлдлүүдээр нарийвчлан задалж, уг үйлдлүүдийг ямар дэс дарааллаар гүйцэтгэхийг тодорхойлж өгнө гэсэн үг юм. Бодлогын алгоритмыг зохиоход алгоритмыг алхам алхмаар боловсруулах аргыг ихэвчлэн хэрэглэдэг. Энэ аргын үндсэн санаа нь бодлогыг сайтар задлан шинжилсний эцэст таньж мэдсэн түүний өвөрмөц шинж чанарыг үндэслэн эхлээд бодлогын алгоритм ямар ямар хэсгүүдээс тогтохыг харуулсан бүдүүвч алгоритм зохиож цаашаа түүнийгээ шат дараалан гүйцэтгэгчийн үйлдлүүдээр нарийвчлан задлах явдал юм.

Бодлогын хариуг гаргахын тулд бодлогыг өгөгдөл ба бодолтын явцад гарах завсрын хэмжигдхүүнүүд дээр хийх үйлдлүүдийн агуулга болон дэс дарааллыг тодорхойлж байгаа зааврыг алгоритм гэнэ. Алгоритмаар заасан бодлогыг бодох үйл ажиллагааг биелүүлэгчийг алгоритмыг гүйцэтгэгч гэнэ. Аливаа алгоритмыг тодорхой гүйцэтгэгчид зориулж зохионо. Алгоритмыг гүйцэтгэгч нь хүн эсвэл компьютер байна.

## Алгоритмын үндсэн алхмууд 
### Мэдээллийг оруулах алхам 
Мэдээллийг боловсруулахын тулд түүнийг компьютерийн санах ойд урьдчилан бичсэн байх шаардлагатай. Иймээс алгоритмд хувьсагчдын анхны утгуудыг машинд оруулах алхам зайлшгүй байх ба үүнийг компьютерийн гарын тусламжтайгаар хийдэг. Компьютерт оруулж байгаа мэдээллийн санах ойд хадгалагдах хаягыг мэдээллийг оруулах алхамдаа зааж өгнө. Энэ алхам биелэгдэхэд хувьсагчийн утга нь хэрэг болно.

### Бодолтын утга олгох алхам 
Компьютерийн нэг үндсэн үүрэг нь мэдээллийг хувирган боловсруулах явдал юм. Алгоритмд тодорхой нэр томъёогоор хэмжигдхүүний утгыг бодож гаргах алхам зайлшгүй гардаг. Энэ алхмыг бодолтын утга олгох алхам гэнэ. Энэ алхам нь утгыг бодож олох гэж байгаа илэрхийлэл, гарах утгыг хадгалах хаяг гэсэн 2 хэсэгтэй байна. Ямар нэгэн хэмжигдхүүнд утга олгоход хуучин утга нь устдаг гэдгийг анхаарах хэрэгтэй.

### Мэдээллийг бичиж гаргах алхам 
Алгоритм ба программаар олсон үр дүнг компьютераас хүнд мэдээлэх нь зайлшгүй юм. Өөрөөр хэлбэл бодлогын хариуг компьютераас бичиж гаргах хэрэгтэй юм. Мэдээллийг гаргах үйлдэл нь олон хэлбэртэй байна. Бид нар мэдээллийг компьютерийн дэлгэцэн дээр бичиж гаргах хэлбэрийг хэрэглэнэ. Энэ алхамд утгыг нь бичиж гаргах гэж буй хэмжигдхүүнүүдийн хаягийг зааж өгнө.

### Салаалуулах алхам 
Алгоритмын нэгэн алхмаас өөр алхамд шилжин тэр алхмаас бодолтыг үргэлжлүүлэх боломжийг хангасан үйлдлийг удирдлага шилжүүлэх үйлдэл гэнэ. Энэ үйлдлийг хэрэглэснээр хэсэг алхмыг алгасах, ямар нэгэн алхамд буцаж ирэх зэргээр алхмуудын биелэх дарааллыг алгоритм зохиогч удирдаж чадна. Алгоритмчлах явцад тодорхой нөхцөл шалган уг нөхцөл биелэгдэж байгаа эсэхээс хамааруулан бодолтыг ялгаатай замаар үргэлжлүүлэх шаардлага гардаг. Энэ шаардлагыг хангасан алхмыг нөхцөлт удирдлага шилжүүлэх буюу салаалуулах алхам гэнэ. Нөхцөлт удирдлага шилжүүлэх алхам нь шалгах нөхцөл, нөхцөл биелэгдэх болон биелэгдэхгүй байх 2 тохиолдлын тус бүрт нь бодолтыг үргэлжлүүлэх зам гэсэн 3 элементтэй байна.

## Алгоритмыг дүрслэх 
Алгоритмыг дараах 3 хэлбэрээр дүрсэлж болно.
* Хүмүүсийн харилцааны ердийн хэл - Алгоритмыг хүмүүсийн харилцааны ердийн хэлээр дүрслэнэ гэдэг нь алгоритмын алхам бүрийг үг ба өгүүлбэрээр бичнэ гэсэн үг юм.
* Блок-схем - Алгоритмын бүтцийг нүдэнд харагдахуйц байдлаар харуулан алгоритмыг графикаар дүрслэх хэлбэр юм. Блок-схемд алгоритмын алхам бүрийг геометрийн нөхцөлт дүрсээр тэмдэглэх бөгөөд уг дүрс дотор тухайн алхмын товч утгыг томъёогоор бичнэ.
* Программчлалын хэл - Алгоритмыг программчлалын хэлээр дүрслэхэд программчлалын ямар нэгэн хэл сонгон авч тухайн хэлнийхээ үг зүй, өгүүлбэр зүйн дүрмүүдийг баримтлан алгоритмыг тэр хэлээрээ бичнэ. Алгоритмыг ийм байдлаар дүрслэхэд программчлалын хэлний тухай мэдлэг алгоритм зохиогчид зайлшгүй шаардагдана. Иймээс алгоритмыг программчлалын хэлээр дүрслэхийн өмнө урьдчилан программчлалын хэл судлан, эзэмшсэн байх хэрэгтэй юм.Үүнд Энэтхэг,Япон,Дундад Ази,Ази,Түвд зэрэг хэлнүүд байхгүүй байна.