Kas ir datoru algoritmi un kā tie darbojas?
Ja vien neesat iesaistījies matemātikā vai programmēšanā, vārds „algoritms” varētu būt grieķis, bet tas ir viens no vissvarīgākajiem elementiem, ko izmantojat, lai izlasītu šo rakstu. Šeit ir ātrs paskaidrojums par to, kas viņi ir un kā viņi strādā.
Atruna: es neesmu matemātikas vai datorzinātņu skolotājs, tāpēc ne visi lietotie termini ir tehniski. Tas ir tāpēc, ka es cenšos paskaidrot visu vienkāršā angļu valodā cilvēkiem, kas nav gluži apmierināti ar matemātiku. Tas nozīmē, ka ir iesaistītas dažas matemātikas, un tas ir neizbēgami. Math geeks, justies brīvi labot vai labāk izskaidrot komentāros, bet, lūdzu, paturiet to vienkāršu, lai matemātiski nepieklātu starp mums.
Attēls pēc Ian Ruotsala
Kas ir algoritms?
Vārdam "algoritms" ir līdzīga "algebra" etimoloģija, izņemot to, ka tas attiecas uz arābu matemātiķi, al-Khwarizmi (tikai interesantu tidbītu). Algoritms, kas nav starp mums paredzētajiem programmētājiem, ir instrukciju kopums, kas ņem ieeju A un nodrošina izeju B, kas kaut kādā veidā maina datus. Algoritmiem ir plašs lietojumu klāsts. Matemātikā tās var palīdzēt aprēķināt funkcijas no datu kopas punktiem, kas ir daudz uzlabotas lietas. Neatkarīgi no to izmantošanas programmēšanā, tās spēlē nozīmīgas lomas tādās lietās kā failu saspiešana un datu šifrēšana.
Pamata instrukciju kopa
Pieņemsim, ka jūsu draugs jūs satiek pārtikas preču veikalā un jūs viņu vadāt. Jūs sakāt, ka tādas lietas kā “ienest pa labās puses durvīm”, „iziet zivju sadaļu pa kreisi,” un „ja redzat piena produktu, tu izturēja mani.” Algoritmi darbojas tā. Mēs varam izmantot plūsmas shēmu, lai ilustrētu instrukcijas, pamatojoties uz kritērijiem, par kuriem mēs zinām, kas ir pirms laika, vai uzzināt procesa laikā.
(attēls ar nosaukumu “Icebreaking rutīnas” EDIT: pieklājīgi no Trigger un Freewheel)
No START, jūs galvu uz leju pa ceļu, un atkarībā no tā, kas notiek, sekojat „plūsmai” līdz gala rezultātam. Plūsmas diagrammas ir vizuāli rīki, kas saprotamāk attēlo datoru komplektu. Tāpat algoritmi palīdz darīt to pašu ar vairākiem matemātiskiem modeļiem.
Grafiki
Izmantojiet grafiku, lai ilustrētu dažādos veidus, kā mēs varam dot norādījumus.
Šo diagrammu varam izteikt kā saikni starp visiem tās punktiem. Lai atveidotu šo attēlu, mēs varam dot instrukciju kopumu kādam citam.
1. metode
Mēs to varam attēlot kā punktu virkni, un informācija atbilstu grafiskajai formai = (x1, y1), (x2, y2),…, (xn, yn).
grafiks = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Tas ir diezgan vienkārši, lai katram punktam izkārtotu vienu pēc otra un savienotu tos ar iepriekšējo punktu. Tomēr iedomājieties grafiku ar tūkstoš punktiem vai vairākiem segmentiem, kas iet pa visu ceļu. Šim sarakstam būtu daudz datu, vai ne? Un tad katram no tiem ir nepieciešams savienot vienu reizi, un tas var būt sāpes.
2. metode
Vēl viena lieta, ko mēs varam darīt, ir sniegt sākuma punktu, līnijas slīpumu starp to un nākamo punktu, un norādīt, kur gaidīt nākamo punktu, izmantojot standarta grafiku = (sākuma punkts), [m1, x1, h1 ],…, [Mn, xn, hn] Šeit mainīgais “m” ir līnijas slīpums, “x” ir virziens, kādā jāaprēķina (vai x vai y), un “h” jums norāda, kā Jūs varat arī atcerēties, ka pēc katras kustības ir jānorāda punkts.
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 galu galā ar to pašu grafiku. Jūs varat redzēt, ka pēdējie trīs termini šajā izteiksmē ir vienādi, tāpēc mēs varam to apcirpt, tikai sakot, „atkārtojiet trīs reizes”. Pieņemsim, ka jebkurā laikā, kad redzat mainīgo "R", tas nozīmē atkārtot pēdējo. Mēs varam to darīt:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [R = 2]
Ko darīt, ja atsevišķie punkti patiesībā nav svarīgi, un tikai pats grafiks? Mēs varam apvienot šīs pēdējās trīs sadaļas, piemēram:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]
Tā saīsina lietas mazliet no tā, kur tās bija agrāk.
3. metode
Pamēģināsim to darīt citādi.
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
Šeit mēs to darām tīrā algebriskā izteiksmē. Vēlreiz, ja paši punkti nav svarīgi, un tikai grafiks, mēs varam konsolidēt pēdējos trīs posteņus.
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
Tagad, kāda metode ir atkarīga no jūsu spējām. Varbūt tu esi liels ar matemātiku un grafiku, tāpēc izvēlaties pēdējo iespēju. Varbūt jūs labi braucat, tāpēc izvēlaties otro iespēju. Tomēr datoru jomā jūs veicat daudzus dažādus uzdevumus, un datora spēja tiešām nemainās. Tāpēc algoritmi ir optimizēti uzdevumiem, kurus tie ir pabeiguši.
Vēl viens svarīgs punkts ir tas, ka katra metode ir balstīta uz atslēgu. Katra instrukciju kopa ir bezjēdzīga, ja vien jūs nezināt, ko darīt ar viņiem. Ja jūs nezināt, ka katram punktam ir jāpielāgo un jāpievieno punkti, pirmais punktu kopums nenozīmē neko. Ja vien jūs nezināt, ko katrs mainīgais nozīmē otrajā metodē, jūs nezināt, kā tos piemērot, līdzīgi kā atslēga atslēgai. Šī atslēga ir arī neatņemama algoritmu izmantošanas sastāvdaļa, un bieži vien šī atslēga ir atrodama sabiedrībā vai ar “standarta” palīdzību.
Failu saspiešana
Lejupielādējot .zip failu, jūs ekstrakts saturu tā, lai jūs varētu izmantot visu, kas ir tā iekšpusē. Mūsdienās lielākā daļa operētājsistēmu var ienirt .zip failos, piemēram, parastajās mapēs, darot visu fonā. Manā Windows 95 mašīnā pirms vairāk nekā desmit gadiem man bija jāiegūst viss manuāli, pirms es redzēju neko vairāk nekā iekšpusē esošos failu nosaukumus. Tas ir tāpēc, ka tas, kas tika saglabāts diskā kā .zip fails, nebija izmantojamā formā. Domājiet par izvelkamu dīvānu. Ja jūs vēlaties to izmantot kā gultu, jums ir jānoņem spilveni un jāatklāj tā, kas aizņem vairāk vietas. Ja jums tas nav nepieciešams vai vēlaties to transportēt, varat to salocīt atpakaļ.
Kompresijas algoritmi tiek pielāgoti un optimizēti tieši tiem failu tipiem, kuriem tie ir paredzēti. Piemēram, audio formātos tiek izmantots cits veids, kā saglabāt datus, kas, dekodējot ar audio kodeku, sniegs līdzīgu sākotnējo viļņu formu. Lai iegūtu vairāk informācijas par šīm atšķirībām, skatiet mūsu iepriekšējo rakstu, kādas ir atšķirības starp visiem šiem audio formātiem? Bezzudumu audio formātos un .zip failos ir viena kopīga iezīme: abi dekompresijas procesā iegūst sākotnējos datus precīzā formā. Zaudētie audio kodeki izmanto citus līdzekļus, lai ietaupītu vietu diskā, piemēram, apgriešanas frekvences, kuras nevar dzirdēt ar cilvēka ausīm, un izlīdzināt viļņu formu sadaļās, lai atbrīvotos no detaļām. Galu galā, lai gan mēs, iespējams, nespēsim dzirdēt atšķirību starp MP3 un CD dziesmu, ir skaidrs, ka informācijas trūkums ir bijušajā.
Datu šifrēšana
Algoritmi tiek izmantoti arī datu vai sakaru līniju nodrošināšanā. Tā vietā, lai saglabātu datus, lai tā izmantotu mazāk vietas diskā, tā tiek glabāta tādā veidā, kas nav nosakāms citās programmās. Ja kāds nozog jūsu cieto disku un sāk to skenēt, viņi var uzņemt datus pat tad, kad izdzēšat failus, jo paši dati joprojām ir tur, pat ja pāradresācijas vieta ir pagājusi. Kad dati tiek šifrēti, viss, kas tiek glabāts, neizskatās kā tas ir. Tas parasti izskatās nejauši, it kā laika gaitā sadrumstalotība. Varat arī saglabāt datus un padarīt to redzamu kā cita veida failu. Attēlu faili un mūzikas faili tam ir piemēroti, jo tie, piemēram, var būt diezgan lieli, neradot aizdomas. Tas viss tiek darīts, izmantojot matemātiskos algoritmus, kas veic sava veida ievadi un pārvērš to par citu, ļoti specifisku izejas veidu. Plašāku informāciju par to, kā darbojas šifrēšana, skatiet HTG Explains: Kas ir šifrēšana un kā tas darbojas?
Algoritmi ir matemātiski instrumenti, kas nodrošina dažādus lietojumus datorzinātnēs. Viņi strādā, lai konsekventi nodrošinātu ceļu starp sākuma punktu un beigu punktu un sniegtu norādījumus, kā to ievērot. Uzziniet vairāk par to, ko mēs izcēlām? Koplietojiet savus paskaidrojumus komentāros!