Kas yra kompiuterio algoritmai ir kaip jie veikia?
Jei nesate matematikos ar programavimo, žodis „algoritmas“ jums gali būti graikų, bet tai yra vienas iš visų elementų, naudojamų skaityti šį straipsnį. Čia pateikiamas greitas paaiškinimas, ką jie yra, ir kaip jie veikia.
Atsakomybės apribojimas: aš nesu matematikos ar kompiuterių mokslų mokytojas, todėl ne visi vartojami terminai yra techniniai. Taip yra todėl, kad aš stengiuosi viską paaiškinti paprastu anglų kalba, nes žmonės nėra pakankamai patogūs matematikai. Be to, yra matematikos, ir tai yra neišvengiama. Matematiniai geeksai, nedvejodami galite pataisyti ar geriau paaiškinti komentaruose, tačiau prašome, kad matematiniu būdu nepritarėme tarp mūsų..
Vaizdas pagal Ian Ruotsala
Kas yra algoritmas?
Žodis „algoritmas“ yra panašus į „algebros“ etimologiją, išskyrus tai, kad tai reiškia arabišką matematiką, al-Khwarizmi (tik įdomų tidbitą). Mūsų programuotojų programuotojų algoritmas yra instrukcijų rinkinys, priimantis įvestį A, ir pateikiantis išėjimą, B, kuris keičia tam tikrus duomenis. Algoritmai turi daug įvairių programų. Matematikoje jie gali padėti apskaičiuoti funkcijas iš duomenų rinkinio taškų, tarp daug pažangesnių dalykų. Be jų naudojimo programavimo programoje, jie atlieka svarbų vaidmenį tokiuose dalykuose kaip failų suspaudimas ir duomenų šifravimas.
Pagrindinis instrukcijų rinkinys
Tarkime, kad jūsų draugas su jumis susitinka maisto prekių parduotuvėje ir jūs jį vedate. Jūs sakote, kad tokie dalykai, kaip „ateis per dešinės pusės duris“, „praeina žuvų skyrių kairėje“ ir „jei matote pieną, tu praeisi man“. Algoritmai veikia taip. Mes galime naudoti srauto schemą, kad iliustruotume instrukcijas pagal kriterijus, kuriuos žinome iš anksto, arba išsiaiškinti proceso metu.
(Paveikslėlis, pavadintas „Pertrauka„ Icebreaking “):„ Trigger “ir„ Freewheel “sutikimas
Nuo START, jūs galėtumėte žemyn keliu, ir priklausomai nuo to, kas vyksta, sekite „srautą“ iki galutinio rezultato. Srautų schemos - tai vizualūs įrankiai, kurie gali geriau suprasti kompiuterių naudojamų instrukcijų rinkinį. Panašiai, algoritmai padeda daryti tą patį su daugiau matematiniais modeliais.
Grafikai
Naudokime grafiką, kad galėtume iliustruoti įvairius būdus, kuriais galime duoti nurodymus.
Mes galime išreikšti šį grafiką kaip ryšį tarp visų jo taškų. Norint atkurti šį vaizdą, mes galime pateikti kitiems instrukcijas.
1 metodas
Tai galime atstovauti kaip taškų seriją, o informacija atitiktų standartinę grafiko formą = (x1, y1), (x2, y2),…, (xn, yn).
grafikas = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Tai gana paprasta brėžti kiekvieną tašką vienas po kito ir prijungti juos prie ankstesnio taško. Tačiau įsivaizduokite grafiką su tūkstančiais taškų arba keliais segmentais, kurie viskas vyksta. Šis sąrašas turėtų daug duomenų, tiesa? Ir tada, kai reikia prijungti kiekvieną, vieną po vieną, gali būti skausmas.
2 metodas
Kitas dalykas, kurį mes galime padaryti, yra suteikti pradinį tašką, linijos tarp jos ir kito taško nuolydį ir nurodyti, kur tikėtis kito taško, naudojant standartinę grafiko formą = (pradinis taškas, [m1, x1, h1 ],…, [Mn, xn, hn] Čia kintamasis „m“ reiškia linijos nuolydį, „x“ - tai kryptis, į kurią reikia suskaičiuoti (ar x ar y), ir „h“ nurodo, kaip Jūs taip pat galite nepamiršti, kad po kiekvieno judėjimo užrašykite 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 baigsite tą pačią diagramą. Jūs galite matyti, kad paskutinės trys šios išraiškos sąlygos yra tokios pačios, todėl galbūt galime ją supjaustyti tik pasakyti „kartoti tris kartus“. Tarkime, kad bet kada pamatysite kintamąjį „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š tikrųjų nesvarbu, ir tik pats grafikas? Galime konsoliduoti tuos tris paskutinius skyrius, kaip:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]
Tai šiek tiek sutrumpina dalykus, iš kur jie buvo 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 grynai algebriniai terminai. Dar kartą, jei patys taškai nesvarbu ir tik grafikas, galime konsoliduoti paskutinius tris 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, kurį metodą pasirinkote, priklauso nuo jūsų sugebėjimų. Galbūt jūs puikiai matote matematiką ir grafiką, todėl pasirinksite paskutinį variantą. Galbūt jums gerai sekasi, todėl pasirinksite antrąjį variantą. Tačiau kompiuterių srityje atliekate daug įvairių užduočių ir kompiuterio gebėjimas iš tikrųjų nesikeičia. Todėl algoritmai yra optimizuoti atliktoms užduotims.
Kitas svarbus dalykas, kurį reikia pažymėti, yra tai, kad kiekvienas metodas priklauso nuo raktų. Kiekvienas instrukcijų rinkinys yra nenaudingas, nebent žinote, ką daryti su jais. Jei nežinote, kad kiekvienas taškas turi būti užrašytas ir sujungti taškus, pirmasis taškų rinkinys nereiškia nieko. Jei nežinote, ką kiekvienas kintamasis reiškia antrajame metode, jūs nežinote, kaip jas taikyti, panašiai kaip į šifro raktą. Šis raktas taip pat yra neatsiejama algoritmų naudojimo dalis, ir dažnai šis raktas randamas bendruomenėje arba per „standartą“.
Failų suspaudimas
Atsisiųsdami „.zip“ failą, išskleisite turinį taip, kad galėtumėte naudoti viską, kas jos viduje. Šiandien dauguma operacinių sistemų gali pasinerti į .zip failus, tokius kaip jie buvo normalūs aplankai, tai daro viską fone. Mano „Windows 95“ mašinoje prieš dešimtmetį turėjau viską surinkti rankiniu būdu, kad galėčiau pamatyti daugiau nei viduje esančių failų pavadinimų. Taip yra todėl, kad diske saugoma kaip .zip failas nebuvo tinkama forma. Pagalvokite apie ištraukiamą sofą. Jei norite jį naudoti kaip lovą, turite išimti pagalvėlės ir atsiskleisti, o tai užima daugiau vietos. Kai jums to nereikia arba norite jį transportuoti, galite ją atlenkti atgal.
Kompresijos algoritmai koreguojami ir optimizuojami konkrečiai failų tipams, kuriems jie skirti. Pavyzdžiui, garso formatai naudoja skirtingą būdą saugoti duomenis, kurie dekoduojami garso kodeku, suteiks garso failą, panašų į pradinę bangų formą. Daugiau informacijos apie šiuos skirtumus rasite mūsų ankstesniame straipsnyje, kokie yra skirtumai tarp visų šių garso formatų? Be prarastų garso formatų ir .zip failų yra vienas bendras dalykas: jie duoda originalius duomenis tiksliąja forma po dekompresijos proceso. Nuostolūs garso kodekai naudoja kitas priemones, kad būtų galima sutaupyti vietos diske, pvz., Apipjaustymo dažniai, kurie negali būti girdimi žmogaus ausyse, ir išlyginti bangų formą sekcijose, kad atsikratytumėte tam tikros detalės. Galų gale, nors galbūt negalėsime iš tikrųjų išgirsti skirtumą tarp MP3 ir CD takelio, neabejotinai yra informacijos trūkumas buvusiame.
Duomenų šifravimas
Algoritmai taip pat naudojami saugant duomenis ar ryšio linijas. Vietoj to, kad duomenys būtų saugomi taip, kad juose būtų mažiau vietos diske, jis saugomas taip, kad jis nebūtų aptinkamas kitose programose. Jei kas nors pavogia jūsų standųjį diską ir pradeda nuskaityti, jie gali rinkti duomenis netgi tada, kai ištrinate failus, nes duomenys vis dar yra, net jei nukreipimo vieta į ją yra prarasta. Kai duomenys yra užšifruoti, nesvarbu, kas yra saugoma, tai nėra tokia. Paprastai jis atrodo atsitiktinai, tarsi per ilgą laiką susikaupė fragmentacija. Taip pat galite saugoti duomenis ir padaryti juos rodomus kaip kito tipo failą. Vaizdo failai ir muzikos failai yra tinkami tam, nes jie gali būti gana dideli, pavyzdžiui, neįtraukiant įtarimų. Visa tai daroma naudojant matematinius algoritmus, kurie įgauna tam tikrą įvestį ir paverčia jį į kitą, labai specifinį produkcijos tipą. Norėdami gauti daugiau informacijos apie tai, kaip veikia šifravimas, patikrinkite HTG Explains: Kas yra šifravimas ir kaip tai veikia?
Algoritmai - tai matematiniai įrankiai, kurie teikia įvairias galimybes kompiuterių moksle. Jie siekia nuosekliai pateikti kelią tarp pradžios taško ir pabaigos taško, ir pateikia instrukcijas, kaip jį sekti. Sužinokite daugiau nei tai, ką mes pabrėžėme? Pasidalinkite savo paaiškinimais komentaruose!