Шта је алгоритам?

Откријте како алгоритми покрећу свет

Алгоритам је скуп инструкција. Дефиниција је стварно тако једноставна. Алгоритам може бити једноставан као давање упутстава попут овога:

  1. Иди низ улицу
  2. Узми прво десно
  3. Нађите другу кућу с леве стране
  4. Куцај на врата и
  5. Испоручите пакет.

Али, док је дефиниција алгоритма једноставна, стварно значење и начин на који утиче на наш живот може бити прилично сложен.

Пример алгоритма

Чести пример алгоритма који користимо у свакодневном животу је рецепт. Овај сет инструкција нам даје све састојке које ће нам требати и упутства о томе шта да радимо са тим састојцима. Звучи лако, зар не?

Али шта ако не знате где се држи мерни чаша? Требао би вам алгоритам да га пронађете. Можда вам је и потребан алгоритам како се користи мјерна чаша.

Дакле, иако је алгоритам скуп инструкција, такође треба узети у обзир ко или шта ће тумачити та упутства. На примјер, ако дају упутства пријатељу о детаљима како доћи из своје куће у најближу продавницу, ваш пријатељ ће знати само како доћи до те продавнице ако знају гдје се налази ваша кућа. Они нису способни (још) да пронађу ту одређену продавницу хране од речи, кућу другог пријатеља.

Овако алгоритам може бити једноставан и сложен. А када говоримо о компјутерским алгоритмима, разумевање онога што рачунар може да уради је основни део формулисања алгоритама.

Како се развијали алгоритми сортирања

Један од најранијих алгоритама који је створен био је рутина. Буббле сорт је метода за сортирање бројева, слова или речи помоћу петље кроз скуп података, упоређујући сваки сет вредности један поред другог и њихово замењивање када је потребно.

Ова петља се понавља док се алгоритам не креће кроз целу листу, без потребе за промјеном било чега, што значи да су вриједности сортиране исправно. Овакав алгоритам се често назива рекурзивним алгоритмом, јер се понавља све док не заврши задатак.

Алгоритам може изгледати једноставно као:

  1. Идите на прву вредност.
  2. Провјерите ту вриједност у односу на сљедећу вриједност и замијените позиције ако је потребно
  3. Идите на следећу вредност и поновите поређење.
  4. Ако смо на крају листе, вратите се на врх ако је било која вриједност замијењена током петље.

Међутим, буббле није био најефикаснији начин сортирања вриједности. Како је време трајало и рачунари су постали способнији за обављање сложених задатака, појавили су се нови алгоритми сортирања.

Један такав алгоритам скенира кроз прву листу и креира другу листу сортираних вредности. Овај метод врши само један пролаз кроз првобитну листу, а са сваком вредношћу ће се пребацити кроз другу листу док не пронађе исправно место за постављање вредности. Обично је ефикасније него кориштење метода сортирања балона.

Овде алгоритми могу постати стварно луди. Или стварно занимљив, зависно од тога како га гледате.

Иако се метода сортирања балона сматра на једном од најефикаснијих начина сортирања вриједности на много начина, ако је изворна листа правилно презорирана, сорта балона може бити једна од најефикаснијих. То је зато што ће, у том случају, алгоритам сортирања мехурића проћи кроз листу једном и одредити да је исправно сортиран.

Нажалост, не знамо увек да ли је наша листа преформирана, па морамо одабрати алгоритам који ће бити најефикаснији за кориштење у великом броју листи.

Шта научимо из буббле сорте

Фацебоок алгоритми и више у свакодневном животу

Алгоритми су на послу који помажу људима сваког дана. Када претражујете Веб, алгоритам је на послу покушавајући да пронађе најбоље резултате претраге. Питајте свој паметни телефон за упутства, а алгоритам одлучује о најбољем путу за вас. А када претражујете Фацебоок, алгоритам одлучује који су наши пријатељи Фацебоок-а најважнији за нас. (Надајмо се да наши пријатељи не сазнају који Фејсбук мисли да нам се највише свиђа!)

Али размишљање алгоритмички може нам помоћи далеко изван живота рачунара. Може нам помоћи да направимо и бољи сендвич.

Рецимо да започињем са два резина хљеба, шприцањем сенфа на једној парчићи и мајонезу на другом делу. Ставио сам парче сира на хљеб са мајонезом, мало шунке на врху, мало салате, два парадајза парадајза, а затим га с том резом поклопити с сенфом на њој. Добар сендвич, зар не?

Дефинитивно ако га једем одмах. Али, ако оставим на столу неко време, тај горњи део круха може бити гњусан од намотавања неког од тог парадајза. То је проблем који нисам очекивао и могао бих да направим сендвиче годинама пре него што запамтим, али кад једном учиним, могу почети размишљати о начинима промене мог алгоритма како бих изградио бољи сендвич.

На пример, могао бих се ослободити парадајза. Али не желим да изгубим тај укус парадајза. Уместо тога, могу да ставим парадајз на сендвич после хлеба и зелене салате. Ово омогућава да зелена салата формира заштитну препреку између парадајза и хлеба.

Овако се развија алгоритам. А алгоритам не мора да управља рачунар као алгоритам. Алгоритам је процес, а сви процеси су око нас.