Što je algoritam?

Otkrijte kako algoritmi vode svijet

Algoritam je skup uputa. Definicija je doista tako jednostavna. Algoritam može biti tako jednostavan kao daje slijedeće upute:

  1. Idite niz ulicu
  2. Uzmi prvo pravo
  3. Pronađite drugu kuću s lijeve strane
  4. Kucajte na vrata i
  5. Isporučite paket.

Ali dok je definicija algoritma jednostavna, stvarni smisao i način na koji utječe na naše živote može biti prilično složen.

Primjer algoritma

Zajednički primjer algoritma koji koristimo u našem svakodnevnom životu je recept. Ovaj skup uputa daje nam sve sastojke kojima trebamo i upute o tome što učiniti s tim sastojcima. Zvuči jednostavno, zar ne?

Ali što ako ne znate gdje se čuva mjernica? Trebao bi vam algoritam kako bi ga pronašao. Vi svibanj čak trebati algoritam o tome kako koristiti mjerni šalicu.

Dakle, dok je algoritam skup uputa, također treba uzeti u obzir tko ili što će tumačiti te upute. Na primjer, ako uputite prijateljima u detalje o tome kako doći do kuće do najbliže trgovine, vaš prijatelj će samo znati doći do te trgovine ako znaju gdje se nalazi vaša kuća. Nisu sposobni (još) pronaći takvu trgovinu od kuće, prijatelja.

Na taj način algoritam može biti jednostavan i složen. A kad govorimo u smislu računalnih algoritama, razumijevanje onoga što računalo može raditi je temeljni dio formuliranja algoritama.

Kako su evoluirali algoritmi sortiranja

Jedan od najranijih algoritama koji su nastali bio je rutinsko rješavanje mjehurića. Mjehurić sortiranje je metoda za sortiranje brojeva, slova ili riječi petljanjem kroz skup podataka, uspoređivanjem svakog skupa vrijednosti usporedno i zamjenom ih kada je to potrebno.

Ova petlja se ponavlja dok se algoritam ne može kretati kroz cijeli popis bez potrebe za zamjenom ništa, što znači da su vrijednosti ispravno razvrstane. Ova vrsta algoritma često se naziva rekurzivnim algoritmom, jer se to ponavlja sve dok ne dovrši zadatak.

Algoritam može izgledati kao jednostavan kao:

  1. Idite na prvu vrijednost.
  2. Provjerite vrijednost prema sljedećoj vrijednosti i zamijeni položaje, ako je potrebno
  3. Idite na sljedeću vrijednost i ponovite usporedbu.
  4. Ako smo na kraju popisa, vrati se na vrh ako je bilo koja vrijednost zamijenjena tijekom petlje.

Ali vrsta mjehurića nije pokazala najučinkovitiji način razvrstavanja vrijednosti. Kako je vrijeme prolazilo, a računala su postala sposobnija složene zadatke brzo, novi algoritmi sortiranja pojavili su se.

Jedan takav algoritam skenira kroz prvi popis i stvara drugi popis sortiranih vrijednosti. Ova metoda samo jedan put prolazi kroz izvorni popis, a sa svakom vrijednošću će se provući kroz drugi popis sve dok ne pronađe točno mjesto za postavljanje vrijednosti. Obično je učinkovitiji od korištenja metode sortiranja mjehurića.

Ovo je mjesto gdje algoritmi mogu dobiti stvarno ludo. Ili stvarno zanimljivo, ovisno o tome kako to gledaš.

Iako se metoda sortiranja mjehurića smatra jednim od najneefinkovitijih metoda sortiranja vrijednosti na mnoge načine, ako je izvorni popis pravilno izveden, vrsta mjehurića može biti jedna od najučinkovitijih. To je zato što, u tom slučaju, algoritam sortiranja mjehurića će proći kroz popis samo jednom i utvrditi da je ispravno razvrstan.

Nažalost, ne znamo uvijek je li naš popis predodređen, pa moramo odabrati algoritam koji će biti najučinkovitiji za upotrebu u prosjeku preko velikog broja popisa.

Ono što naučavamo od mjehurićkog sortiranja

Facebook algoritmi i više u svakodnevnom životu

Algoritmi su na poslu koji pomažu ljudima svaki dan. Kada pretražujete web, algoritam je na poslu koji pokušava pronaći najbolje rezultate pretraživanja. Pitajte svog pametnog telefona za upute i algoritam odlučuje o najboljoj ruti koju trebate poduzeti. A kad pregledavate Facebook, algoritam odlučuje koji su od naših prijatelja Facebook postovi najvažniji za nas. (Nadajmo se da naši prijatelji ne shvaćaju koji Facebook misli da nam se sviđa!)

No algoritamski razmišljanje može nam pomoći daleko izvan našeg životnog vijeka računala. Može nam čak pomoći da napravimo bolji sendvič.

Recimo da počnem s dvije kriške kruha, raspršujući senf na jednoj kriški i majonezu na drugom slasu. Na kruh stavljam krišku s kruhom s majonezom, pršut na vrhu toga, zdjela, dvije kriške rajčice, a zatim ga pokupite s tom komadom s senfom na njoj. Dobar sendvič, zar ne?

Definitivno, ako ga odmah pojede. Ali ako ga neko vrijeme ostavim na stolu, taj gornji sloj kruha može biti pomalo nalijevanje nekog od onog rajčice. Problem je što nisam predvidio, a ja bih mogao davati sendviče već godinama prije no što primijetim, ali kad jednom to učinim, mogu početi razmišljati o načinima promjene algoritma kako bih izgradio bolji sendvič.

Na primjer, mogao bih se riješiti rajčice. Ali ne želim izgubiti taj okus rajčice. Umjesto toga, umjesto toga, mogu staviti rajčicu na sendvič nakon kruha i salate. To omogućuje da salata stvara zaštitnu barijeru između rajčice i kruha.

Tako se evoluira algoritam. I algoritam ne mora biti pokrenut od strane računala da bi bio algoritam. Algoritam je proces, a procesi su oko nas.