Atsakomybės apribojimas: aš nesu matematikos ar kompiuterių mokslo mokytojas, todėl ne visi mano vartojami terminai yra techniniai. Taip yra todėl, kad bandau paaiškinti viską paprastąja anglų kalba, nes žmonėms matematika nėra visiškai patogi. Tai sakant, yra keletas matematikos, ir tai neišvengiama. Matematikos geeksai, pasistenkite ištaisyti ar geriau paaiškinti komentaruose, bet prašome palikti jį paprastą matematiškai nepasitikėję tarp mūsų.
Vaizdas pagal Ian Ruotsala
Kas yra algoritmas?
Žodis "algoritmas" turi etimologiją, panašią į "algebra", išskyrus tai, kad tai yra pats arabų matematikas, al-Khwarizmi (tiesiog įdomus tibetas). Algoritmas tarp mūsų esančių neprogramuotojų yra instrukcijų rinkinys, kuris imasi įvesties, A ir pateikia išvestį B, kuris tam tikru būdu pakeičia duomenis. Algoritmai turi platų programų spektrą. Matematiškai jie gali padėti apskaičiuoti funkcijas iš taškų duomenų rinkinyje, tarp daug daugiau pažengusių dalykų. Nepaisant to, kad jie naudojami programuojant save, jie atlieka pagrindinius vaidmenis tokiose srityse kaip failų suspaudimas ir duomenų šifravimas.
Pagrindinis instrukcijų rinkinys
Tarkime, kad jūsų draugas susitinka su tavo parduotuvių parduotuvėje ir nukreipi jį į tave. Jūs sakote tokius dalykus kaip "eikite per dešinę pusę", "praeikite žuvų sekciją kairėje" ir "jei pamatysite pieną, tu mane išlaikei". Tokie algoritmai veikia taip. Mes galime naudoti srautų schemą, kad iliustruotume instrukcijas, paremtas kriterijais, kuriuos žinome anksčiau, arba išsiaiškinome proceso metu.
Nuo START galite nukristi į kelią ir, priklausomai nuo to, kas atsitiks, atlikite "srautą" iki galutinio rezultato. Diagrama yra vizuali priemonė, kuri suprantamesnė gali būti kompiuterių instrukcijų rinkinys. Panašiai algoritmai taip pat padeda atlikti daugiau matematikos modelių.
Grafikai
Leiskite naudoti diagramą, kad pademonstruotume įvairius būdus, kaip galėtume duoti nurodymus.
1 metodas
Mes galime atstovauti tai kaip taškų seriją, o informacija atitiks standartinę diagramos formą = {(x1, y1), (x2, y2), …, (xn, yn)}.
graph = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}
Kiekvienas taškas yra gana lengvas, vienas po kito, ir prijunkite juos prie ankstesnio taško. Tačiau įsivaizduokite grafiką su tūkstančiais taškų arba keliais segmentais, kurie visi vyksta kiekvienu būdu. Tame sąraše būtų daug duomenų, tiesa? Ir tada, prijungti kiekvieną iš jų, po vieną, gali būti skausmas.
2 metodas
Kitas dalykas, kurį mes galime padaryti, yra atspirties taškas, linijos nuolydis tarp jo ir kito taško ir nurodykite, kur tikėtis kito taško, naudodamas standartinę diagramos formą = {(pradinis taškas), [m1, x1, h1 ], …, [mn, xn, hn]}. Čia kintamasis "m" žymi linijos nuolydį, "x" reiškia skaičiavimo kryptį (ar x arba y), o "h" nurodo, kaip daugelis gali suskaičiuoti šia kryptimi. Taip pat galite prisiminti, kad po kiekvieno judesio suplanuokite tašką.
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]}
Jūs pateksite į tą pačią diagramą. Galite matyti, kad paskutiniai trys šio išraiško terminai yra vienodi, todėl galime juos sumažinti, tiesiog sakydami "pakartokite tris kartus" tam tikru būdu. Tarkime, kad visada, kai pasirodys kintamasis "R", tai reiškia pakartoti paskutinį dalyką. Mes galime tai padaryti:
graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}
Ką daryti, jei atskiri taškai iš tiesų nėra svarbūs, ir tik pati schema? Galime sustiprinti tuos paskutinius tris skyrius taip:
graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}
Tai sutrumpina dalykus šiek tiek nuo to, kur jie anksčiau.
3 metodas
Pabandykime tai padaryti kitu būdu.
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
Čia mes turime tai gryna algebrine prasme. Dar kartą, jei patys punktai nesvarbu, ir tik grafika, galime sujungti tris paskutinius elementus.
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
Dabar, koks pasirinktas metodas priklauso nuo jūsų sugebėjimų. Galbūt jūs puikiai naudojate matematiką ir grafiką, todėl pasirenkate paskutinę parinktį. Galbūt jūs gerai naršate, todėl pasirenkate antrą variantą. Tačiau kompiuterių srityje jūs atliekate daugybę įvairių užduočių, o kompiuterio galimybės iš tikrųjų nesikeičia. Todėl algoritmai yra optimizuoti užduotims, kurias jie baigia.
Kitas svarbus dalykas yra tai, kad kiekvienas metodas remiasi raktu. Kiekvienas instrukcijų rinkinys yra nenaudingas, nebent jūs žinote, ką daryti su jais. Jei nežinote, kad jūs turėtumėte suplanuoti kiekvieną tašką ir sujungti taškus, pirmasis taškų rinkinys nereiškia nieko. Jei nenorite žinoti, kas antrasis metodas reiškia kiekvieną kintamąjį, jūs nežinote, kaip juos taikyti, taip pat kaip ir šifro raktą. Šis raktas taip pat yra neatsiejama algoritmų naudojimo dalis, ir dažnai šis raktas randamas bendruomenėje arba per "standartą".
Failų suspaudimas
Kai atsisiųsite.zip failą, ištrauksite turinį, kad galėtumėte naudoti viską, kas yra jo viduje.Šiuo metu dauguma operacinių sistemų gali pasinerti į.zip failus, kaip jie buvo įprasti aplankai, daro viską fone. Mano "Windows 95" aparate prieš dešimtmetį turėjau viską išgauti rankiniu būdu, kol aš negalėjau pamatyti daugiau nei failų pavadinimai. Tai, nes tai, kas buvo saugoma diske kaip.zip failas, nebuvo naudojama forma. Pagalvokite apie ištraukiamą sofą. Jei norite jį naudoti kaip lovą, turite pašalinti pagalvę ir ją atsukti, kad užtruks daugiau vietos. Kai jums to nereikia arba norite jį perkelti, galite jį sulankstyti.
Suspaudimo algoritmai yra koreguojami ir optimizuojami konkrečiai tų failų tipams, kuriems jie skirti. Pavyzdžiui, garso formatais naudojamas kitoks būdas saugoti duomenis, kurie, dekoduojami garso kodeku, duos garso failą, panašų į pradinę bangos formą. Norėdami gauti daugiau informacijos apie šiuos skirtumus, peržiūrėkite ankstesnį straipsnį, kokie skirtumai tarp visų šių garso formatų? Lossless garso formatais ir.zip failais yra vienas bendras dalykas: jie abu pradinius duomenis pateikia tikslia forma po dekompresijos proceso. Trūkstami garso kodekai naudoja kitas priemones, kaip taupyti disko vietos, pvz., Dažnius, kuriuos galima išgirsti žmogaus ausis, ir išlyginti skirsnyje esančią bangų formą, kad atsikratytų kai kurių detalių. Galų gale, nors mes galbūt negalėsime išgirsti skirtumo tarp MP3 ir kompaktinių plokštelių, tikrai yra informacijos trūkumas pirmojoje.
Duomenų šifravimas
Algoritmai yra matematiniai įrankiai, kurie teikia įvairius dalykus informacinių technologijų srityje. Jie stengiasi nuosekliai pateikti kelią tarp pradinio taško ir pabaigos taško ir pateikti instrukcijas, kaip jį sekti. Sužinok daugiau nei tai, ką paryškinome? Pasidalykite savo paaiškinimais komentaruose!