Odmietnutie zodpovednosti: Nie som učiteľ matematiky alebo informatiky, takže všetky termíny, ktoré používam, nie sú technické. Je to preto, že sa snažím vysvetliť všetko v jednoduchej angličtine, lebo ľudia sa s matematikou veľmi nepociťujú. Hovorí sa, že matematika je zapletená a to je nevyhnutné. Math geeks, neváhajte opraviť alebo lepšie vysvetliť v komentároch, ale prosím, držte to jednoduché pre matematicky neochvejné medzi nami.
Obrázok podľa Ian Ruotsala
Čo je to algoritmus?
Slovo "algoritmus" má etymológiu podobnú "algebru", okrem toho, že sa vzťahuje na samotného arabského matematika al-Khwarizmiho (len zaujímavého tidbit). Algoritmus pre neprogramujúcich medzi nami je súbor inštrukcií, ktoré majú vstup A, a poskytujú výstup, B, ktorý nejakým spôsobom zmení dáta. Algoritmy majú širokú škálu aplikácií. V matematike môžu pomôcť vypočítať funkcie z bodov v súbore údajov, medzi oveľa pokročilejšie veci. Okrem ich použitia v samotnom programovaní zohrávajú dôležité úlohy v oblasti kompresie súborov a šifrovania dát.
Základná sada pokynov
Povedzme, že váš priateľ sa s vami stretne v obchode s potravinami a budete ho sprevádzať. Povedali ste veci ako "príďte cez pravej strane dverí", "prejdite cez časť ryby vľavo" a "ak uvidíte mlieko, prešla ste mi." Algoritmy fungujú takto. Môžeme použiť vývojový diagram na ilustráciu pokynov na základe kritérií, o ktorých vieme vopred alebo ktoré sa dozvieme počas procesu.
Z START by ste sa pokúsili po ceste a v závislosti od toho, čo sa stane, budete sledovať "tok" na konečný výsledok. Vývojové diagramy sú vizuálne nástroje, ktoré môžu pochopiteľne predstavovať súbor pokynov používaných počítačmi. Podobne algoritmy pomáhajú robiť to isté s viac matematických modelov.
grafy
Použite graf na ilustráciu rôznych spôsobov, ako môžeme dať smer.
Metóda 1
Môžeme to reprezentovať ako sériu bodov a informácie by sa mali riadiť štandardnou formou grafu = {(x1, y1), (x2, y2), …, (xn, yn)}.
graph = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}
Je veľmi ľahké vykresliť každý bod jeden po druhom a pripojiť ho k predchádzajúcemu bodu. Predstavte si však graf s tisíckami bodov alebo viacerými segmentmi, ktoré sa každým spôsobom pohybujú. Tento zoznam by mal veľa údajov, nie? A potom sa musieť spojiť každý jeden, jeden po druhom, môže byť bolesťou.
Metóda 2
Ďalšia vec, ktorú môžeme urobiť, je dať začiatočný bod, sklon línie medzi ním a ďalším bodom a naznačiť, kde môžete očakávať ďalší bod použitím štandardnej formy grafu = {(štartovací bod), [m1, x1, h1 ], …, [mn, xn, hn]}, kde premenná "m" predstavuje sklon riadku, "x" predstavuje smer na započítanie (či x alebo y) a "h" veľa sa počíta do uvedeného smeru. Môžete si tiež zapamätať, že vykreslíte bod po každom pohybe.
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]}
Budete mať rovnaký graf. Môžete vidieť, že posledné tri výrazy v tomto vyjadrení sú rovnaké, takže môžeme byť schopní znížiť to len tým, že hovorí "opakovať, že trikrát" nejakým spôsobom. Povedzme, že kedykoľvek sa zobrazí premenná "R", znamená to opakovať poslednú vec. Zvládneme to:
graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}
Čo ak jednotlivé body naozaj nezáleží, a iba graf sám o sebe? Tieto posledné tri časti môžeme konsolidovať takto:
graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}
Skráti to trochu z miesta, kde boli predtým.
Metóda 3
Skúsme to urobiť iným spôsobom.
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
Tu to máme v čistých algebrických pojmoch. Opäť, ak body samy nezáleží a iba graf robí, môžeme konsolidovať posledné tri položky.
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
Teraz, akú metódu si vyberiete, závisí od vašich schopností. Možno ste skvelý s matematikou a grafovaním, takže si vyberiete poslednú možnosť. Možno ste pri navigácii dobré, takže si vyberiete druhú možnosť. V oblasti počítačov však robíte mnoho rôznych druhov úloh a schopnosť počítača sa naozaj nezmení. Preto sú algoritmy optimalizované pre úlohy, ktoré dokončili.
Ďalším dôležitým bodom je, že každá metóda závisí od kľúča. Každá sada pokynov je zbytočná, ak neviete, čo s nimi robiť. Ak neviete, že by ste mali vykresliť každý bod a pripojiť bodky, prvý súbor bodov neznamená nič. Pokiaľ neviete, čo každá premenná znamená v druhej metóde, nebudete vedieť, ako ich aplikovať, rovnako ako kľúč pre šifru. Tento kľúč je tiež neoddeliteľnou súčasťou používania algoritmov a často sa tento kľúč nachádza v komunite alebo prostredníctvom "štandardu".
Kompresia súborov
Pri preberaní súboru.zip extrahujete obsah tak, aby ste mohli používať všetko, čo je vnútri.V súčasnosti sa väčšina operačných systémov môže ponoriť do súborov.zip, ako sú normálne priečinky, robia všetko na pozadí. Na svojom systéme Windows 95 pred viac ako desiatimi rokmi som musel všetko vytiahnuť manuálne, než som mohol vidieť niečo viac ako názvy súborov vo vnútri. To preto, že to, čo bolo uložené na disku ako súbor.zip, nebolo v použiteľnej forme. Premýšľajte o rozťahovacom gauči. Keď ju chcete použiť ako posteľ, musíte odstrániť podložky a rozvinúť, čo zaberie viac miesta. Keď ho nepotrebujete alebo ho chcete prepravovať, môžete ho zložiť späť.
Kompresné algoritmy sú upravené a optimalizované špecificky pre typy súborov, na ktoré sú zacielené. Zvukové formáty napríklad používajú iný spôsob ukladania údajov, ktoré pri dekódovaní zvukovým kodekom poskytujú zvukový súbor podobný pôvodnému tvaru vlny. Viac informácií o týchto rozdieloch nájdete v našom predchádzajúcom článku Aké sú rozdiely medzi všetkými týmito formátmi zvuku? Lossless audio formáty a.zip súbory majú jednu vec spoločnú: obaja prinášajú pôvodné dáta vo svojej presnej podobe po procese dekompresie. Zneužívajúce zvukové kodeky používajú iné prostriedky na šetrenie miesta na disku, ako sú frekvencie strihania, ktoré nie sú schopné počuť ľudské uši a vyhladzujú krivky v sekciách, aby sa zbavili nejakých detailov. Nakoniec, aj keď pravdepodobne nebudeme môcť naozaj počuť rozdiel medzi skladbou MP3 a CD, v prvom prípade je to určite deficit informácií.
Šifrovanie dát
Algoritmy sú matematické nástroje, ktoré poskytujú rôzne využitia v informatike. Pracujú na tom, aby poskytovali cestu medzi začiatočným bodom a koncovým bodom konzistentným spôsobom a poskytli pokyny na ich sledovanie. Dozvedieť viac, než sme zdôraznili? Zdieľajte svoje vysvetlenia v komentároch!