Odricanje od odgovornosti: Nisam matematičar ili nastavnik računalnih znanosti, tako da nisu svi uvjeti koje upotrebljavam tehnički. To je zato što pokušavam sve objasniti na običnom engleskom jeziku jer ljudi nisu baš zadovoljni matematikom. To se, rekao je, ima neke matematike uključeni, i to je neizbježan. Math geeks, slobodno ispravite ili bolje objašnjavajte u komentarima, ali molimo vas, držite ga jednostavnim za matematički nesputane među nama.
Slika od Ian Ruotsala
Što je algoritam?
Riječ 'algoritam' ima etimologiju sličnu 'algebri', osim što se to odnosi na samog arapskog matematičara, al-Khwarizmi (samo zanimljiva predodžba). Algoritam, za one koji nisu programeri među nama, skup je instrukcija koje uzimaju input A, i daju izlaz B, koji mijenja podatke na neki način. Algoritmi imaju široku paletu aplikacija. U matematici mogu pomoći izračunati funkcije iz točaka u skupu podataka, među mnogo naprednijim stvarima. Osim njihove upotrebe u samom programiranju, oni igraju glavne uloge u stvarima kao što su kompresija datoteka i enkripcija podataka.
Osnovni set uputa
Recimo da vas se vaš prijatelj susreće u trgovini, a vi ga usmjeravate prema vama. Kažeš stvari poput "ulazeći kroz desnu stranu vrata", "prenesite dio ribe na lijevoj strani" i "ako vidite mliječne proizvode, prošao si mi". Algoritmi tako funkcioniraju. Pomoću dijagrama toka možemo ilustrirati upute na temelju kriterija koje znamo ispred vremena ili saznati tijekom procesa.
Od START-a, krenuli bi niz stazu, a ovisno o tome što se događa slijedite "tok" do krajnjeg rezultata. Dijagrami dijagrama su vizualni alati koji mogu razumljivo predstavljati skup uputa koje koriste računala. Slično tome, algoritmi pomažu u istom postupanju s više matematičkih modela.
grafovi
Koristimo grafikon kako bismo ilustrirali različite načine na koje možemo dati upute.
Metoda 1
To možemo predstavljati kao niz točaka, a informacije će pratiti standardni oblik grafikona = {(x1, y1), (x2, y2), …, (xn, yn)}.
graph = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}
Prilično je lako zapisati 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 popis bi imao puno podataka, zar ne? A onda mora povezati svaki, jedan po jedan, može biti bol.
Metoda 2
Još jedna stvar koju možemo učiniti je dati polaznu točku, padine linije između njega i sljedeće točke i naznačiti gdje se očekuje sljedeća točka pomoću standardnog oblika grafikona = {(početna točka), [m1, x1, h1 ], …, [mn, xn, hn]} Ovdje varijabla 'm' predstavlja padinu linije, 'x' predstavlja smjer za brojenje (x ili y), a 'h' mnogi se mogu računati u navedenom smjeru. Također se možete sjetiti da ste sakupili točku nakon svakog pokreta.
graph = {(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 imati isti grafikon. Možete vidjeti da su posljednja tri izraza u ovom izrazu ista, pa bismo mogli na neki način smanjiti taj iznos samo tako da "na taj način ponovimo tri puta". Recimo da kad god se pojavi varijabla 'R', to znači ponoviti posljednju stvar. Mi to možemo:
graph = {(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 ne zanima, i to samo grafikon? Možemo objediniti ta tri zadnja dijela:
graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}
To skraćuje stvari malo od mjesta gdje su prije.
Metoda 3
Pokušajmo ovo drugo.
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 terminima. Još jednom, ako same točke ne znače, a samo grafikon, možemo utvrditi 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
Sada, koja metoda koju odaberete ovisi o vašim sposobnostima. Možda ste sjajni s matematikom i grafičkim prikazom, tako da odaberete posljednju opciju. Možda ste dobri u navigaciji, tako da odaberete drugu opciju. U području računala, međutim, radite mnogo različitih vrsta zadataka i sposobnost računala se zapravo ne mijenja. Stoga su algoritmi optimizirani za zadatke koje su završili.
Još jedna važna točka u obzir 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 morate crtati svaku točku i povezati točke, prvi skup točaka ne znači ništa. Ako ne znate što svaka varijabla znači u drugoj metodi, nećete znati kako ih primijeniti, baš kao i ključ za šifriranje. Taj ključ je također sastavni dio upotrebe algoritama, a često se taj ključ nalazi u zajednici ili putem "standarda".
Sažimanje datoteka
Kada preuzmete.zip datoteku, izvučete sadržaj kako biste mogli koristiti sve što je unutar njega.Danas, većina operacijskih sustava može zaroniti u.zip datoteke kao da su bile normalne mape, čineći sve u pozadini. Na moj Windows 95 stroj prije više od deset godina, morala sam izdvojiti sve ručno prije nego što sam mogao vidjeti nešto više od naziva datoteka unutar. To je zato što ono što je pohranjeno na disku kao.zip datoteku nije bilo korisno. Razmislite o kauču za izvlačenje. Kada ga želite koristiti kao krevet, morate ukloniti jastuke i razviti ih, što zauzima više prostora. Kada ga ne trebate, ili ga želite premjestiti, možete ga vratiti natrag.
Algoritmi kompresije prilagođeni su i optimizirani specifično za vrste datoteka kojima su ciljani. Audio formati, na primjer, svaki koriste drugačiji način pohranjivanja podataka koji će, kod dekodiranja audio kodekom, 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? Lossless audio formate i.zip datoteke imaju jednu zajedničku stvar: oni oba daju izvorne podatke u svom točnom obliku nakon procesa dekompresije. Lossy audio kodek koristi druge načine kako bi se spasio prostor na disku, kao što su frekvencije rezanja koje se ne mogu čuti ljudskim ušima i izglađivanje valnog oblika u sekcijama kako bi se oslobodili pojedinosti. Na kraju, iako možda nećemo moći stvarno čuti razliku između MP3 i CD zapisa, tu je definitivno manjak informacija u prvom.
Šifriranje podataka
Algoritmi su matematički alati koji pružaju različite primjene u računalnoj znanosti. Oni rade na dosljednom putu između početne točke i krajnje točke i daju upute da ga prate. Znati više od onoga što smo istaknuli? Podijelite svoja objašnjenja u komentarima!