Thursday, December 15, 2016

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


Компьютероор ямар нэгэн юм хийлгэхийн тулд компьютерын програм бичих шаардлагатай байдаг. Нэг үгээр компьютерын програм бичихийн тулд хийх зүйлийг нь алхам алхамаар компьютерт зааж өгөх шаардлагатай. Тэгэхэд компьютер тэрхүү алхам бүрийг нэг бүрчлэн “гүйцэтгэсээр” эцэсийн зорилгодоо хүрдэг.

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

Хөдөөнөөс таны нэг найз чинь танайд айлчлан ирэх болж гэж төсөөлье. Найз чинь галт тэрэгний буудалд буугаад танайд таксигаар очихоор болж. Энэ тохиолдолд найз чинь танай гэрт очихын тулд шаардлагатай гурван өөр алгоритмыг та найздаа санал болгожээ гэж бодъё.

Такси алгоритм:
  1. Таксины буудалд очно.
  2. Такси барьна.
  3. Таны гэрийн хаягыг жолоочид өгнө.

Утасаар залгах алгоритм:
  1. Галт тэрэг ирмэгц миний утасны дугаарлуу залга.
  2. Тээш хүлээн авах хэсэг уулзъя.

Автобусанд суух алгоритм:
  1. Буудалд буугаад 18 номерын автобусанд шилжиж сууна.
  2. Төв зам дагуу 4 буудал яваад 14 номерын автобусанд сууна.
  3. Офицерын буудал дээр бууна.
  4. Урагшаа хоёр гудам өнгөрөөд баруун талд хоёр дахь хаалга.
Дээрх 3 алгоритм нь нэг л зорилготой боловч алгоритм бүр өөр өөр арга замаар биелэж байгаа биз. Түүнчлэн алгоритм бүрийн өртөг, туулах зам нь өөр өөр байна. Жишээ нь такси барих нь хамгийн хурдан боловч мөн хамгийн үнэтэй нь болно. Автобусанд суух нь хямдхан боловч илүү удаа, мөн биед төвөгтэй. Энэ үед тухайн нөхцөл байдлаас шалтгаалан та алгоритмаа сонгох ёстой.

Компьютерын програм хангамж бүтээхэд мөн адил өгөгдсөн даалгавараас шалтгаалан маш олон төрлийн алгоритм дундаас тохиромжтойг нь сонгох хэрэгтэй болдог. Өөр өөр нөхцөлд алгоритм бүр давуу болон сул талуудтай байдаг. Эдгээрийн дотроос сортлох буюу ангилах төрлийн алгоритм нь компьютерын хувьд маш их цаг шаардсан ажил байдаг учраас олон жилийн судалгаа шинжилгээний үр дүнд бий болсон юм. Өнөөдөр ангилахад ашиглагдаж байгаа түгээмэл таван арга гэвэл:
  • Бин ангилал (Bin sort)
  • Мерж ангилал (Merge sort)
  • Баббл ангилал (Bubble sort)
  • Шелл ангилал (Shell sort)
  • Фүйк ангилал (Quicksort)
Хэрэв та 1-ээс 10 хүртэлх нэг сая бүхэл тоог сортлох гэж байгаа бол бин сорт хамгийн тохиромжтой алгоритм юм. Хэрэв та сая ширхэг номны нэр сортлох бол фүйксортыг ашигласан нь дээр. Алгоритм бүрийн сул тал, давуу талыг мэдэж байх нь өөрийн хийх гэж буй ажилдаа хамгийн тохиромжтойг нь авч сонгоход хэрэгтэй.

Нэгэн сонирхолтой түүх ярьхад, Билл Гайтс Харвардын их сургуулийн хоёрдугаар курст байхдаа комбинаторикын хичээл дээр профессорынх нь танилцуулсан урьд нь хэн ч шийдэж байгаагүй панкайк сортын алгоритмыг бодож олсон байна. Гайтсын олсон арга бүтэн гучин жилийн турш хамгийн хурдан алгоритм байсан бөгөөд түүний даараа илүү хурдан алгоритм нээсэн хүнийх дөнгөж нэгхэн хувиар л илүү байсан юм. Гайтсын гаргыг хожим томьёо болгон Харвардын компьютерын шинжлэх ухааны сургуулийн сэтгүүлд хэвлүүлсэн байдаг. Үүний дараа Гайтс сургуулиа орхин өөрийн гэсэн програм хангамжийн компанийг байгуулсан нь өнөөдрийн Майкрософт шүү дээ. 



Эх сурвалж: http://www.intechmongolia.blogspot.com