Mikä on algoritmi?

Tutki miten algoritmit hallitsevat maailmaa

Algoritmi on joukko ohjeita. Määritelmä on todella yksinkertainen. Algoritmi voi olla yhtä helppoa kuin antaa tällaisia ​​ohjeita:

  1. Mene alas kadulle
  2. Käänny ensimmäisestä oikealle
  3. Etsi toinen talo vasemmalla
  4. Koputus ovelle ja
  5. Toimitetaan paketti.

Mutta kun algoritmin määritelmä on yksinkertainen, todellinen merkitys ja miten se vaikuttaa elämäämme voi olla varsin monimutkainen.

Esimerkki algoritmista

Tavallinen esimerkki algoritmista, jota käytämme jokapäiväisessä elämässä on resepti. Tämä ohje antaa meille kaikki ainesosat, joita tarvitsemme ja ohjeet siitä, mitä näiden ainesosien kanssa tehdään. Kuulostaa helposti, eikö?

Mutta entä jos et tiedä mihin mittakuppi pidetään? Tarvitset algoritmia löytääksesi sen. Saatat jopa tarvita algoritmia mittauskupin käyttämiseen.

Joten vaikka algoritmi on joukko ohjeita, sen on myös otettava huomioon kuka tai mikä aikoo tulkita näitä ohjeita. Esimerkiksi Jos annat ohjeet kaverille, joka kertoo, miten pääset talosi lähimpään ruokakauppaan, ystäväsi tietää vain, miten päästä kauppaan, jos he tietävät, missä talosi sijaitsee. He eivät pysty (vielä) löytämään kyseistä ruokakauppaa sanomasta, toisen ystävän talosta.

Näin algoritmi voi olla sekä yksinkertainen että monimutkainen. Ja kun puhumme tietokonealgoritmeista, ymmärrys, mitä tietokone pystyy tekemään, on olennainen osa algoritmien laatimista.

Miten lajittelualgoritmit kehittyivät

Yksi aikaisimmista algoritmeista oli bubble sort rutiini. Kupla lajittelu on menetelmä numeroiden, kirjainten tai sanojen lajittelemiseksi, joka loopaa tietojoukon läpi, vertailee kunkin arvoryhmän rinnakkain ja vaihtaa ne tarvittaessa.

Tätä silmukkaa toistetaan, kunnes algoritmi voi siirtyä koko listalle tarvitsematta vaihtaa mitään, mikä tarkoittaa, että arvot lajitellaan oikein. Tätä tyyppistä algoritmia kutsutaan usein rekursiiviseksi algoritmiksi, koska se silmukoita itsensä päälle ja uudestaan, kunnes se suorittaa tehtävän.

Algoritmi saattaa näyttää yhtä yksinkertaiselta kuin:

  1. Siirry ensimmäiseen arvoon.
  2. Tarkista, että arvoa seuraavaan arvoon ja vaihda tarvittaessa
  3. Siirry seuraavaan arvoon ja toista vertailu.
  4. Jos olemme luettelon lopussa, palaa takaisin alkuun, jos jokin arvo vaihdettiin silmukan aikana.

Mutta kuplatyyppi ei osoittautunut tehokkaimmaksi tavaksi lajitella arvoja. Ajan myötä ja tietokoneiden kyvyttömyydestä tehdä monimutkaisia ​​tehtäviä nopeasti uusia lajittelualgoritmeja esiin.

Yksi tällainen algoritmi etsii ensimmäisen luettelon ja luo toisen luettelon lajitelluista arvoista. Tämä menetelmä tekee vain yhden läpikulun alkuperäisen luettelon läpi, ja jokaisella arvolla se lukitsee toisen luettelon, kunnes se löytää oikean paikan syöttää arvo. Yleensä se on tehokkaampaa kuin kupla lajittelutapa.

Tässä algoritmit voivat saada todella hullua. Tai todella mielenkiintoinen, riippuen siitä, miten katsot sitä.

Kuplien lajittelutapaa pidetään yhtenä tehokkaimmista arvojen lajittelutavoista monella tapaa, jos alkuperäisen luettelon esiasetus on oikein, kupla lajittelu voi olla yksi tehokkaimmista. Tämä johtuu siitä, että tässä tapauksessa kupla lajittelualgoritmi käy listan läpi kerrallaan ja määrittää, että se on oikein lajiteltu.

Valitettavasti emme aina tiedä, onko listaamme esillä, joten meidän on valittava algoritmi, joka on tehokkain käyttää keskimäärin suuren määrän luetteloita.

Mitä me opimme Bubble Sortista

Facebook-algoritmit ja enemmän arkipäivässä

Algoritmit toimivat auttaen ihmisiä päivittäin. Kun etsit verkkoa, algoritmilla on töitä löytää parhaat hakutulokset. Kysy älypuhelimesi ohjeita ja algoritmi päättää parhaan reitin, jonka voit ottaa. Ja kun selaat Facebookia, algoritmi päättää, kuka ystävämme Facebook-viestit ovat meille tärkeimpiä. (Toivottavasti ystävämme eivät selvitä, mitkä Facebookin mielestä pidämme eniten!)

Mutta ajattelu algoritmisesti voi auttaa meitä paljon kauemmas kuin meidän tietokone elämää. Se voi jopa auttaa meitä rakentamaan parempaa voileipää.

Sanotaan, että aloitan kahdella leipäviipaleella, joka levittää sinappia yhdellä viipaleella ja majoneesia toisella viipaleella. Laitoin leipää leipää majoneesia, noin kinkkua päälle, salaattia, kaksi tomaattia, ja sitten päätä se siipikarjan kanssa sinappiin. Hyvä voileipä, eikö?

Ehdottomasti jos syön sen heti. Mutta jos jätän sen pöydälle jonkin aikaa, se ylhäälle leivän leipä saattaa saada limainen upottamalla joitakin tomaattia. Tämä ongelma en ole aivan ennakoinut, ja voisin tehdä voileipiä vuosia ennen kuin huomaan, mutta kunhan teen, voin alkaa ajatella tapoja vaihtaa algoritmini rakentaa parempi voileipä.

Esimerkiksi voisin päästä eroon tomaatista. Mutta en halua menettää tuota tomaatin makua. Sen sijaan voin laittaa tomaatin voileipäksi leivän ja salaatin jälkeen. Tämä mahdollistaa salaatin muodostavan suojaavan esteen tomaatin ja leivän välillä.

Näin algoritmi kehittyy. Ja algoritmia ei tarvitse käyttää tietokoneella algoritmiksi. Algoritmi on prosessi, ja prosessit ovat kaikki ympärillämme.