Алгоритм гэж юу вэ?

Дэлхий ертөнцийг хэрхэн алгоритмаар удирддаг болохыг олж мэдэх

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

  1. Гудамжинд оч
  2. Эхний эрхийг ав
  3. Зүүн талд хоёр дахь байшинг олоорой
  4. Хаалган дээр тогш
  5. Багцыг хүргэх.

Гэвч алгоритмын тодорхойлолт нь энгийн боловч бодит утга, энэ нь бидний амьдралд хэрхэн нөлөөлдөг нь нэлээн төвөгтэй юм.

Алгоритмын жишээ

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

Хэрвээ чи хэмжих аяга хаана байгааг мэдэхгүй бол яах вэ? Танд олох алгоритм хэрэгтэй болно. Хэмжих аягаыг хэрхэн ашиглах талаар алгоритм танд хэрэгтэй байж болох юм.

Иймээс алгоритм нь зааварчилгааны багц байдаг бол тэдгээр зааврыг хэн, юу тайлбарлах вэ гэдгийг анхаарч үзэх хэрэгтэй. Жишээлбэл, хэрэв та байшингаасаа хамгийн ойрхон хүнсний дэлгүүр рүү хэрхэн яаж хүрэхийг зааж өгвөл найз тань байшингаа хаана байрлаж байгаагаа мэддэг бол тэр дэлгүүрт хэрхэн яаж орохыг мэддэг болно. Тэд өөр нэг найзынхаа гэрт хэлэх гэж байгаа хүнсний дэлгүүрийг олж чаддаггүй (гэхдээ).

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

Хөгжүүлэлтийн алгоритмууд хэрхэн хөгжсөн бэ?

Үүсгэсэн анхны алгоритмуудын нэг нь хөөсийн ангилалын хэв маяг байв. Bubble sort нь өгөгдлийн багцаар давтаж, тоо, үсэг эсвэл үсгийг эрэмбэлж, утгын багц бүрийг хооронд нь харьцуулах, шаардлагатай үед солилцох арга юм.

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

Энэ алгоритм нь энгийнээр харагдаж байна:

  1. Эхний утга руу очих.
  2. Шаардлагатай бол тэрхүү үнэ цэнийг дараагийн утга болон swap байрлалаас шалгана
  3. Дараагийн утгыг олох ба харьцуулалтыг давт.
  4. Хэрэв бид жагсаалтын төгсгөлд байгаа бол давталтын хугацаанд ямар нэгэн утга солигдсон бол дээрээсээ буцаж очно уу.

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

Иймэрхүү алгоритм нь эхний жагсаалтаар дамжиж, эрэмбэлсэн утгуудын хоёр дахь жагсаалтыг үүсгэдэг. Энэ арга нь зөвхөн анхны жагсаалтаар дамжуулан нэг нэвтрэлтийг гаргадаг бөгөөд утга бүрээр хоёр дахь жагсаалтаар давтах болно. Ихэвчлэн бөмбөлөг хэлбэрийн аргыг ашиглахаас илүү үр дүнтэй байдаг.

Энд алгоритмууд үнэхээр галзуу болж болох юм. Эсвэл та үүнийг яаж харснаас хамаарч сонирхолтой юм.

Bubble ангиллын арга нь олон төрлийн аргаар ялгах хамгийн үр дүнгүй аргуудын нэг гэж тооцогддог бол анхны жагсаалт зөв байрлуулсан бол бөмбөлөг хэлбэр нь хамгийн үр дүнтэй байх болно. Яагаад гэвэл, энэ тохиолдолд бөмбөлөг хэлбэрийн алгоритм нь жагсаалтаар нэг удаа яваад, үүнийг зөв дарааллаар нь тодорхойлно.

Харамсалтай нь, бидний жагсаалт байнга байдаг эсэхийг бид мэдэхгүй учраас олон тооны жагсаалтад дунджаар ашиглах хамгийн үр дүнтэй алгоритмыг сонгох хэрэгтэй.

Бидний мэдэх зүйлээс ялгаатай зүйл

Facebook Алгоритмууд ба Өдөр тутмын амьдралдаа илүү

Алгоритмууд нь өдөр бүр хүмүүст тусалдаг. Вебийг хайх үед алгоритм нь хамгийн сайн хайлтын үр дүнг олохыг оролдож байна. Ухаалаг гар утсаа чиглэлээс нь асууж, алгоритм нь танд хамгийн тохиромжтой маршрутыг шийддэг. Мөн та Facebook-ыг үзэх үед алгоритм нь бидний найзын Facebook-ийн бичлэг аль нь бидэнд хамгийн чухал болохыг шийдэх болно. (Бидний хамгийн их таалагдсан Facebook нэг найзыг мэдэхгүй гэдэгт итгэлтэй байна!)

Гэвч алгоритмийг бодох нь бидний компьютерийн амьдралаас хол давахад тусална. Энэ нь бидэнд илүү сайн сэндвич барихад тусалж чадна.

Хоёр зүсэм талх, нэг зүсмэл болон майонезаас гичийг тарааж, өөр зүсмэл дээр тарааж эхэлнэ гэж бодъё. Би майонезийн талх дээр нь бяслаг зүсэж тавьсан, дээр нь зарим хумс, зарим шанцайны ургамал, улаан лоолийн хоёр зүсмэл дээр тавьж, тэр зүсмэл дээр нь гичтэй хамт тавина. Сайн сэндвич, тийм үү?

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

Жишээ нь, би улаан лоолийг салгаж болно. Гэхдээ би улаан лоолийн амтыг алдахыг хүсэхгүй байна. Харин оронд нь би талх, шанцайны дараа талхыг улаан лооль дээр тавьж болно. Энэ нь шанцайны ургамал, талх хоёрын хооронд хамгаалалтын хаалт үүсгэх боломжийг олгодог.

Энэ нь алгоритм нь хэрхэн өөрчлөгддөгийг харуулдаг. Мөн алгоритм нь компьютераар алгоритм байх ёстой. Аль алгоритм нь процесс бөгөөд процесс нь бидний эргэн тойронд байдаг.