Što su računalni algoritmi i kako rade?
Osim ako ste u matematici ili programiranju, riječ "algoritam" može biti grčki, ali to je jedan od temeljnih elemenata svega što koristite za čitanje ovog članka. Evo kratkog objašnjenja o tome što su i kako rade.
Odricanje od odgovornosti: Nisam učitelj matematike ili računalnih znanosti, tako da nisu svi uvjeti koje koristim tehnički. To je zato što pokušavam objasniti sve što je na običnom engleskom jeziku jer ljudi nisu baš zadovoljni matematikom. S obzirom na to, postoji i neka matematika koja je neizbježna. Matematički geeksi, slobodno ispravite ili bolje objasnite u komentarima, ali molim vas, držite ga jednostavnim za matematički nesklon među nama.
Slika po Ian Ruotsala
Što je algoritam?
Riječ 'algoritam' ima etimologiju sličnu 'algebri', osim što se to odnosi na samog arapskog matematičara, al-Khwarizmija (samo zanimljivu poslasticu). Algoritam, za ne-programere među nama, je skup uputa koje uzimaju ulaz, A, i daju izlaz, B, koji na neki način mijenja podatke koji su uključeni. Algoritmi imaju širok raspon primjena. U matematici, oni mogu pomoći izračunati funkcije iz točaka u skupu podataka, među mnogo naprednijim stvarima. Osim njihove uporabe u samom programiranju, oni igraju glavne uloge u stvarima poput kompresije datoteka i šifriranja podataka.
Osnovni skup uputa
Recimo da se vaš prijatelj sastaje s vama u trgovini i vodite ga prema sebi. Kažete stvari poput "uđite kroz vrata s desne strane", "prođite riblju sekciju s lijeve strane" i "ako vidite mljekaru, prošli ste pored mene". Algoritmi rade tako. Možemo koristiti dijagram toka kako bismo ilustrirali upute na temelju kriterija koje znamo unaprijed ili saznati tijekom procesa.
(slika pod nazivom "Ledolomiva rutina" EDIT: zahvaljujući okidaču i slobodnom hodu)
Iz START-a, krenuli biste niz put, a ovisno o tome što se događa, slijedite “tok” do krajnjeg rezultata. Dijagrami toka su vizualni alati koji razumljivo predstavljaju skup uputa koje koriste računala. Isto tako, algoritmi pomažu da se isto učini s više matematičkih modela.
grafovi
Iskoristimo graf koji ilustrira različite načine na koje možemo dati upute.
Ovaj grafikon možemo izraziti kao vezu između svih njegovih točaka. Da bismo reproducirali ovu sliku, možemo dati niz uputa nekom drugom.
Metoda 1
To možemo predstaviti kao niz točaka, a informacija slijediti standardni oblik grafa = (x1, y1), (x2, y2),…, (xn, yn).
graf = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Prilično je lako iscrtati svaku točku, jednu za drugom i povezati ih s prethodnom točkom. Međutim, zamislite grafikon s tisuću bodova ili više segmenata koji idu na svaki način. Taj bi popis imao mnogo podataka, zar ne? A onda povezivanje svakog, jedan po jedan, može biti bol.
Metoda 2
Još jedna stvar koju možemo učiniti je dati početnu točku, nagib linije između nje i sljedeće točke i naznačiti gdje se može očekivati sljedeća točka pomoću standardnog oblika grafa = (polazna točka, [m1, x1, h1] ],…, [Mn, xn, hn] Ovdje varijabla 'm' predstavlja nagib linije, 'x' predstavlja smjer u koji se broji (x ili y), a 'h' vam govori kako Mnogi se mogu računati u navedenom smjeru.
graf = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [-3, x, 1], [-3, x, 1]
Na kraju ćete dobiti isti graf. Možete vidjeti da su posljednja tri termina u ovom izrazu ista, tako da bismo mogli smanjiti to tako da samo na neki način kažemo "ponovite to tri puta". Recimo da kad god se pojavi varijabla 'R', to znači ponoviti posljednju stvar. Mi to možemo:
graf = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [R = 2]
Što ako pojedinačne točke zapravo nisu važne, a samo sam graf? Te posljednje tri odjeljke možemo objediniti na sljedeći način:
graf = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]
Malo skraćuje stvari s mjesta na kojem su bile prije.
Metoda 3
Pokušajmo to učiniti na drugi način.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2,5x-7,5, 5≤x≤7
y = -3x + 29, 7≤x≤8
y = -3x + 29, 8≤x≤9
y = -3x + 29, 9≤x≤10
Ovdje ga imamo u čistim algebarskim pojmovima. Još jednom, ako same točke nisu važne i samo graf ima, možemo objediniti posljednje tri stavke.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2,5x-7,5, 5≤x≤7
y = -3x + 29, 7≤x≤10
Koja metoda odabirete ovisi o vašim sposobnostima. Možda ste sjajni s matematikom i grafičkim prikazom, pa odabirete posljednju opciju. Možda ste dobri u navigaciji, pa odabirete drugu opciju. Međutim, u području računala radite mnogo različitih vrsta zadataka i sposobnost računala se zapravo ne mijenja. Stoga su algoritmi optimizirani za zadatke koje završavaju.
Druga važna stvar koju treba napomenuti je da se svaka metoda oslanja na ključ. Svaki skup uputa je beskoristan ako ne znate što učiniti s njima. Ako ne znate da trebate nacrtati svaku točku i povezati točke, prvi skup točaka ne znači ništa. Osim ako ne znate što svaka varijabla znači u drugoj metodi, nećete znati kako ih primijeniti, baš kao ključ za šifru. Taj je ključ također sastavni dio korištenja algoritama i često se taj ključ nalazi u zajednici ili putem "standarda".
Sažimanje datoteke
Kada preuzmete .zip datoteku, izvučete sadržaj tako da možete koristiti sve što se nalazi unutar njega. Danas većina operativnih sustava može zaroniti u .zip datoteke kao što su normalne mape, radeći sve u pozadini. Na mom Windows 95 stroj prije više od desetljeća, morao sam ekstrakt sve ručno prije nego što sam mogao vidjeti ništa više od datoteka unutar. To je zato što ono što je pohranjeno na disku kao .zip datoteku nije bilo u upotrebljivom obliku. Razmislite o kauču na izvlačenje. Kada ga želite koristiti kao krevet, morate ukloniti jastuke i razviti ih, koji zauzimaju više prostora. Kada je ne trebate ili je želite prenijeti, možete je vratiti natrag.
Algoritmi kompresije se prilagođavaju i optimiziraju posebno za vrste datoteka na koje su ciljane. Primjerice, svi audio formati koriste drugačiji način za pohranu podataka koji će, kada se dekodiraju pomoću audio kodeka, dati zvučnu datoteku sličnu izvornom valnom obliku. Za više informacija o tim razlikama, pogledajte naš prethodni članak, Koje su razlike između svih tih audio formata? Audio formati bez gubitaka i .zip datoteke imaju jednu zajedničku stvar: obojica daju izvorne podatke u točnom obliku nakon procesa dekompresije. Loše audio kodeci koriste druga sredstva kako bi uštedjeli prostor na disku, kao što su frekvencije obrezivanja koje ljudska uši ne mogu čuti i izgladiti valni oblik u dijelovima kako bi se riješili nekih detalja. Na kraju, iako možda nećemo moći čuti razliku između MP3 i CD zapisa, definitivno postoji deficit informacija.
Šifriranje podataka
Algoritmi se također koriste pri osiguravanju podatkovnih ili komunikacijskih linija. Umjesto pohranjivanja podataka tako da koristi manje prostora na disku, pohranjeni su na način koji nije moguće otkriti drugim programima. Ako netko ukrade vaš tvrdi disk i počne ga skenirati, mogu preuzeti podatke čak i kada izbrišete datoteke jer su podaci još uvijek tu, iako je mjesto prosljeđivanja na njega nestalo. Kada se podaci šifriraju, ono što je pohranjeno ne izgleda kao ono što je. Obično izgleda nasumično, kao da se fragmentacija s vremenom izgradila. Također možete pohraniti podatke i učiniti ih prikazanim kao drugu vrstu datoteke. Slikovne datoteke i glazbene datoteke su dobre za to, jer one mogu biti prilično velike, na primjer, bez privlačenja sumnje. Sve se to radi pomoću matematičkih algoritama koji uzimaju neku vrstu inputa i pretvaraju ga u drugu, vrlo specifičnu vrstu izlaza. Za više informacija o tome kako funkcionira šifriranje, pogledajte HTG Objašnjava: Što je šifriranje i kako funkcionira?
Algoritmi su matematički alati koji pružaju različite primjene u računalnoj znanosti. Oni rade na osiguravanju staze između početne točke i krajnje točke na dosljedan način, te daju upute za praćenje. Znate više od onoga što smo istaknuli? Podijelite svoja objašnjenja u komentarima!