Mitkä ovat tietokonealgoritmit ja miten ne toimivat?
Ellei olet matematiikassa tai ohjelmoinnissa, sana "algoritmi" voi olla sinulle kreikkalainen, mutta se on yksi niistä tekijöistä, joita käytät tämän artikkelin lukemiseen. Tässä on nopea selitys siitä, mitä he ovat ja miten ne toimivat.
Vastuuvapauslauseke: En ole matematiikan tai tietojenkäsittelytieteen opettaja, joten kaikki käyttämäni termit eivät ole teknisiä. Tämä johtuu siitä, että yritän selittää kaiken yksinkertaisella englanniksi, jotta ihmiset eivät ole kovin mukavia matematiikassa. Siitä huolimatta on olemassa jonkin verran matematiikkaa, ja se on väistämätöntä. Matematiikan geeksit, voit vapaasti korjata tai selittää kommenteissa, mutta pidä se yksinkertaisena matemaattisesti hylättyjen joukossa.
Kuva käyttäjältä Ian Ruotsala
Mikä on algoritmi?
Sana "algoritmi" on samanlainen kuin "algebra", paitsi että tämä viittaa arabian matematiikkaan itse, al-Khwarizmi (vain mielenkiintoinen tidbit). Algoritmi ei-ohjelmoijille keskuudessamme on joukko ohjeita, jotka ottavat sisäänmenon, A ja antavat lähdön B, joka muuttaa siihen liittyvää dataa jollakin tavalla. Algoritmeilla on laaja valikoima sovelluksia. Matematiikassa ne voivat auttaa laskemaan toimintoja datapaketin pisteistä paljon kehittyneempien asioiden joukossa. Sen lisäksi, että niitä käytetään ohjelmoinnissa itse, niillä on tärkeä rooli asioissa, kuten tiedostojen pakkaamisessa ja tietojen salaamisessa.
Perusohjeet
Sanotaan, että ystäväsi kohtaa sinut ruokakaupassa ja ohjaa häntä kohti sinua. Sanotte asioita, kuten "tulevat läpi oikeanpuoleisten ovien läpi", "läpäisevät kalalohkon vasemmalla puolella" ja "jos näet meijerin, ohitit minut." Algoritmit toimivat näin. Voimme käyttää vuokaaviota havainnollistamaan ohjeita, jotka perustuvat kriteereihin, joista tiedämme etukäteen tai selvittää prosessin aikana.
(kuva "Jäämurtava rutiini" EDIT: Trigger ja Freewheel)
STARTista päätä polkua alaspäin ja sen mukaan, mitä tapahtuu, seuraa "virtausta" lopputulokseen. Vuorokaaviot ovat visuaalisia työkaluja, jotka voivat ymmärtää paremmin tietokoneiden käyttämiä ohjeita. Samoin algoritmit auttavat tekemään samoja matematiikkaan perustuvilla malleilla.
Käyrät
Käytämme kuvaajan havainnollistamaan eri tapoja, joilla voimme antaa ohjeita.
Voimme ilmaista tämän kaavion yhteydeksi kaikkien sen pisteiden välillä. Tämän kuvan toistamiseksi voimme antaa joukon ohjeita jollekin toiselle.
Menetelmä 1
Voimme edustaa tätä pisteiden sarjana, ja tiedot noudattavat kaavion vakiomuotoa = (x1, y1), (x2, y2),…, (xn, yn).
kaavio = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Jokaisen pisteen piirtäminen on melko helppoa, yksi toisensa jälkeen, ja liittää ne edelliseen kohtaan. Kuvittele kuitenkin kuvaaja, jossa on tuhat pistettä tai useita segmenttejä, jotka kaikki menevät. Luettelolla olisi paljon tietoja, eikö? Ja sitten jokaisen yhdistäminen, yksi kerrallaan, voi olla kipu.
Menetelmä 2
Toinen asia, jota voimme tehdä, on antaa lähtökohta, sen ja seuraavan pisteen viivan kaltevuus, ja ilmoittaa, mistä odottaa seuraavaa pistettä käyttämällä kaavion vakiomuotoa = (lähtöpiste), [m1, x1, h1 ],…, [Mn, xn, hn] Tässä muuttuja 'm' edustaa rivin kaltevuutta, 'x' tarkoittaa suunnan laskemista (x tai y), ja 'h' kertoo, miten Voit myös muistaa piirtää pisteen jokaisen liikkeen jälkeen.
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]
Päätät samaan kaavioon. Näet, että tämän ilmauksen kolme viimeistä termiä ovat samat, joten voimme ehkä leikata sen vain sanomalla "toista, että kolme kertaa" jollakin tavalla. Oletetaan, että kun näet muuttujan 'R', se tarkoittaa toista viimeistä asiaa. Pystymme tähän:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [R = 2]
Entä jos yksittäiset kohdat eivät oikeastaan ole merkityksellisiä, ja vain kuvaaja itse? Voimme yhdistää nämä kolme viimeistä osaa:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]
Se lyhentää asioita hieman siitä, mistä he olivat ennen.
Menetelmä 3
Yritetään tehdä niin.
y = 0, 0
x = 0, 0 y = x, 3 y = 2,5x-7,5, 5 y = -3x + 29, 7 y = -3x + 29, 8 y = -3x + 29, 9
Täällä on se puhdas algebrallinen termi. Jälleen kerran, jos kohdat itse eivät ole tärkeitä ja vain kaavio tekee, voimme yhdistää kolme viimeistä kohdetta.
y = 0, 0
x = 0, 0 y = x, 3 y = 2,5x-7,5, 5 y = -3x + 29, 7
Nyt, mitä menetelmää valitset riippuu kykyistänne. Ehkä olet hyvä matematiikalla ja grafiikalla, joten valitset viimeisen vaihtoehdon. Ehkä olet hyvä navigoimaan, joten valitset toisen vaihtoehdon. Tietokoneiden alueella teet kuitenkin monia erilaisia tehtäviä ja tietokoneen kyky ei oikeastaan muutu. Siksi algoritmit on optimoitu niiden suorittamiin tehtäviin.
Toinen tärkeä huomionarvoinen seikka on, että jokainen menetelmä perustuu avaimeen. Jokainen ohjeiden sarja on hyödytön, ellet tiedä mitä tehdä heidän kanssaan. Jos et tiedä, että sinun pitäisi piirtää jokainen piste ja yhdistää pisteet, ensimmäinen pisteiden joukko tarkoittaa mitään. Ellet tiedä, mitä kukin muuttuja tarkoittaa toisessa menetelmässä, et tiedä, miten niitä voidaan soveltaa, aivan kuten salausavain. Tämä avain on myös olennainen osa algoritmien käyttöä, ja usein tämä avain löytyy yhteisöstä tai "standardin" kautta.
Tiedoston pakkaus
Kun lataat .zip-tiedoston, poistat sisällön niin, että voit käyttää mitä tahansa sen sisällä olevaa. Nykyään useimmat käyttöjärjestelmät voivat sukeltaa .zip-tiedostoihin, kuten ne olivat tavallisia kansioita, jotka tekevät kaiken taustalla. Windows 95 -laitteessani yli kymmenen vuotta sitten minun oli purettava kaikki manuaalisesti ennen kuin voisin nähdä mitään muuta kuin tiedostonimet. Tämä johtuu siitä, että levy, joka oli tallennettu levylle .zip-tiedostona, ei ollut käyttökelpoisessa muodossa. Ajattele ulosvedettävä sohva. Kun haluat käyttää sitä sängynä, sinun on poistettava tyynyt ja avattava se, mikä vie enemmän tilaa. Kun et tarvitse sitä tai haluat siirtää sen, voit taittaa sen taaksepäin.
Pakkausalgoritmit säädetään ja optimoidaan erityisesti niille tiedostotyypeille, joihin ne kohdistetaan. Esimerkiksi äänimuodot käyttävät eri tapaa tallentaa tietoja, jotka dekoodataan audiokoodekilla, ja antaa alkuperäisen aaltomuodon kaltaisen äänitiedoston. Lisätietoja näistä eroista on edellisessä artikkelissamme, mitä eroja kaikkien näiden äänimuotojen välillä on? Lossless-äänimuodoissa ja .zip-tiedostoissa on yksi yhteinen asia: molemmat tuottavat alkuperäiset tiedot tarkassa muodossa dekompressioprosessin jälkeen. Häviävät äänikoodekit käyttävät muita keinoja levytilan säästämiseksi, kuten leikkaustaajuudet, joita ihmisen korvat eivät voi kuulla, ja tasoittaa osien aaltomuotoa eroon yksityiskohtien poistamiseksi. Loppujen lopuksi, vaikka emme ehkä pysty kuulemaan eroa MP3- ja CD-raitojen välillä, on tietysti olemassa alijäämä tietoa edellisessä.
Tiedonsalaus
Algoritmeja käytetään myös datan tai tietoliikenneyhteyksien suojaamisessa. Sen sijaan, että tallennettaisiin tietoja niin, että se käyttää vähemmän levytilaa, se tallennetaan muilla ohjelmilla havaitsemattomalla tavalla. Jos joku varastaa kiintolevyn ja alkaa skannata sitä, he voivat poimia tietoja, vaikka poistat tiedostoja, koska itse data on edelleen olemassa, vaikka välityspaikka on mennyt. Kun data on salattu, mikä tahansa tallennettu ei näytä siltä, mitä se on. Se näyttää yleensä satunnaiselta, ikään kuin pirstoutuminen olisi muodostunut ajan myötä. Voit myös tallentaa tietoja ja tehdä siitä toisen tiedostotyypin. Kuvatiedostot ja musiikkitiedostot ovat hyviä tähän, koska ne voivat olla varsin suuria ilman epäilyksiä. Kaikki tämä tapahtuu käyttämällä matemaattisia algoritmeja, jotka ottavat jonkinlaista sisäänmenoa ja muuntavat sen toiseen, hyvin spesifiseen tulostustyyppiin. Lisätietoja siitä, miten salaus toimii, tarkista HTG Explains: Mikä on salaus ja miten se toimii?
Algoritmit ovat matemaattisia työkaluja, jotka tarjoavat erilaisia käyttötapoja tietojenkäsittelytieteessä. He pyrkivät tarjoamaan johdonmukaisen polun lähtöpisteen ja loppupisteen välille ja antamaan ohjeet sen noudattamiseksi. Tiedä enemmän kuin mitä korostimme? Jaa kommenttisi kommenteissa!