If-Koubou

Kas ir datora algoritmi un kā tie darbojas?

Kas ir datora algoritmi un kā tie darbojas? (Kā)

Ja vien jūs neesat matemātikā vai programmēšanā, vārds "algoritms" varētu būt grieķu valoda, taču tas ir viens no visa šī raksta elementu nolasīšanas elementiem. Šeit ir īss izskaidrojums par to, ko 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 manis izmantotie termini ir tehniski. Tas ir tāpēc, ka es cenšos izskaidrot visu vienkāršā angļu valodā, jo cilvēki nav apmierināti ar matemātiku. Tas tiek teikts, ir iesaistīti daži matemātiski, un tas ir neizbēgams. Matemātika geeks, jūtieties brīvi labot vai labāk izskaidrot komentāros, bet, lūdzu, saglabājiet to vienkāršu matemātiski neapmierinātas starp mums.

Attēls ar Ian Ruotsala

Kas ir algoritms?

Vārdam "algoritms" ir etimoloģija, kas līdzinās "algebrai", izņemot to, ka tas attiecas uz pašu arābu matemātiķi, al-Khwarizmi (tikai interesants tidbit). Algoritms mūsu vidū, kas nav programmētāji, ir instrukciju kopums, kas ņem ievadi A un nodrošina izvadi B, kas zināmā veidā maina attiecīgos datus. Algoritmiem ir daudz dažādu pielietojumu. Matemātikā tie var palīdzēt aprēķināt funkcijas no datu kopas punktiem, starp daudz progresīvākajām lietām. Neraugoties uz to izmantošanu programmēšanas laikā, tās spēlē lielas lomas tādās lietās kā failu saspiešana un datu šifrēšana.

Pamata instrukciju kopums

Pieņemsim, ka jūsu draugs tiekas ar jums pārtikas veikalā, un jūs virzāt viņu pret tevi. Jūs sakāt tādas lietas kā "ieiet caur labās puses durvīm", "pa kreisi ievietojamo zivju sadaļu" un "ja redzat piena produktus, mani izturējāt". Algoritmi darbojas tieši tāpat. Mēs varam izmantot blokshēmu, lai ilustrētu instrukcijas, pamatojoties uz kritērijiem, kurus mēs zinām pirms laika vai arī noskaidrojam procesa laikā.

(attēls ar nosaukumu "Icebreaking Routine" EDIT: pieklājīgi no Trigger un Freewheel)

No START jūs dodies ceļā uz leju un, atkarībā no tā, kas notiek, sekojiet "plūsmai" līdz gala rezultātam. Flowcharts ir vizuāli rīki, kas var saprotamāk atspoguļot virkni instrukciju, ko izmanto datori. Tāpat algoritmi palīdz veikt to pašu ar vairākiem matemātikas modeļiem.

Grafiki

Izmantosim diagrammu, lai ilustrētu dažādus norādījumus.

Mēs varam izteikt šo grafiku kā savienojumu starp visiem tā punktiem. Lai reproducētu šo attēlu, mēs varam sniegt instrukciju kopiju kādam citam.

1. metode

Mēs varam to uzrādīt kā punktu virkni, un informācija atbilstu grafikam = (x1, y1), (x2, y2), ..., (xn, yn) standarta veidlapai.

diagramma = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)

Katrs punkts ir diezgan viegli salikti, viens pēc otra, un savieno tos ar iepriekšējo punktu. Tomēr iedomājieties grafiku ar tūkstoš punktiem vai vairākiem segmentiem, kas visi notiek katrā veidā. Šim sarakstam būtu daudz datu, vai ne? Un pēc tam katram, katram atsevišķi, var būt sāpes.

2. metode

Vēl viena lieta, ko mēs varam darīt, ir norādīt sākuma punktu, līnijas slīpumu starp to un nākamo punktu un norādīt, kur gaidīt nākamo punktu, izmantojot grafikas standarta formu = (sākumpunkts), [m1, x1, h1 ], ..., [mn, xn, hn]. Šeit mainīgais "m" ir līnijas slīpums, "x" norāda virzienu, uz kuru jāuzskaita (vai x vai y), un "h" stāsta jums, kā daudzi var saskaitīt iepriekšminētajā virzienā. Varat arī atcerēties, ka pēc katras kustības tiek parādīts 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 saņemsit 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, iespējams, varam to salabot, tikai daļēji sakot "atkārtot trīs reizes". Pieņemsim, ka jebkurā laikā, kad redzat mainīgo lielumu "R", tas nozīmē atkārtot pēdējo lietu. Mēs to varam izdarī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šķi punkti patiešām nav svarīgi, un tikai pati grafika pati par sevi? Mēs varam apvienot pēdējās trīs sadaļas šādi:

graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]

Tas saīsina lietas nedaudz no vietas, kur tās bija agrāk.

3. metode

Mēģināsim to izdarīt citā veidā.

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 mums tas ir tīrā algebriskā izteiksmē. Vēlreiz, ja paši punkti nav svarīgi, un tikai grafiks, mēs varam apvienot 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, kura izvēlēta metode ir atkarīga no jūsu spējām. Varbūt jūs esat lieliski ar matemātiku un grafiku, tāpēc izvēlaties pēdējo iespēju. Varbūt jums ir labi navigācija, tāpēc jūs izvēlaties otro iespēju. Tomēr datoru valstībā jūs veicat daudz dažādu uzdevumu veikšanu, un datora spējas patiešām nemainās. Tādēļ algoritmi ir optimizēti uzdevumiem, kurus tie pabeidz.

Vēl viens svarīgs fakts ir tas, ka katra metode balstās uz atslēgu. Katrs norādījumu komplekts ir bezjēdzīgs, ja vien jūs nezināt, ko darīt ar viņiem. Ja jūs nezināt, ka jums vajadzētu ielīmēt katru punktu un savienot punktus, pirmais punktu kopums neko nedara. Ja vien nezināt, ko otrajā metodē nozīmē katrs mainīgais, jūs nezināt, kā tos pielietot, tāpat kā atslēgu šifrēšanai.Šis atslēga ir neatņemama algoritmu izmantošanas sastāvdaļa, un bieži vien šī atslēga ir atrodama kopienā vai ar "standarta" palīdzību.

Failu saspiešana

Lejupielādējot .zip failu, jūs iegūstat saturu, lai jūs varētu izmantot visu, kas atrodas tajā. Mūsdienās lielākā daļa operētājsistēmu var ienirt .zip failos, piemēram, tie bija parastās mapes, darot visu fonā. Pirms desmit gadiem manā Windows 95 ierīcē man bija manuāli jāiegādājas viss, pirms es redzēju kaut ko vairāk nekā iekšējos failu nosaukumus. Tas ir tāpēc, ka tas, kas tika saglabāts diskā kā .zip fails, nebija izmantojamajā formā. Padomājiet par izvelkamo dīvānu. Ja jūs vēlaties to izmantot kā gultu, jums ir jānoņem spilveni un jāatver tas, kas aizņem vairāk vietas. Ja jums to nav nepieciešams vai vēlaties to pārvadāt, to varat salocīt atpakaļ.

Kompresijas algoritmi tiek pielāgoti un optimizēti tieši to veidu failiem, uz kuriem tie ir vērsti. Piemēram, audio formātos tiek izmantots atšķirīgs veids, kā saglabāt datus, kurus, dekodējot ar audio kodeku, nodos skaņas failu, kas ir līdzīgs oriģinālam viļņu formai. Plašāku informāciju par šo atšķirību skatiet mūsu iepriekšējā rakstā. Kādas ir atšķirības starp visiem šiem audio formātiem? Neizraides audio formātos un .zip failos ir viena kopīga iezīme: tās abas iegūst oriģinālos datus precīzā formā pēc dekompresijas procesa. Zaudētie audio kodeki izmanto citus līdzekļus, lai ietaupītu diska vietu, piemēram, apgriežot frekvences, kuras cilvēka ausis nevar izdzirdēt, un izlīdzinot viļņu formu sadaļās, lai atbrīvotos no detaļām. Galu galā, kamēr mēs, iespējams, nevarēsim patiešām dzirdēt atšķirību starp MP3 un kompaktdisku dziesmu, pirmajā ir noteikti informācijas trūkums.

Datu šifrēšana

Algoritmi izmanto arī, nodrošinot datu vai sakaru līnijas. Tā vietā, lai uzglabātu datus tā, ka tas izmanto mazāk diska vietas, tas tiek glabāts veidā, kas nav nosakāms citām programmām. Ja kāds nozog jūsu cieto disku un sāk skenēt to, tas var iegūt datus pat tad, ja izdzēšat failus, jo pašlaik dati joprojām ir, kaut arī pāradresācijas vieta uz to ir pazudusi. Kad dati ir šifrēti, neatkarīgi no tā, kas tiek glabāts, tas nešķiet, kā tas ir. Tas parasti izskatās izlases veidā, it kā laika gaitā izveidojās fragmentācija. Varat arī saglabāt datus un padarīt to parādītu kā cita veida failu. Attēlu faili un mūzikas faili tam ir labi, jo, piemēram, tie var būt diezgan lieli, neradot aizdomas. Tas viss tiek darīts, izmantojot matemātiskos algoritmus, kas ņem zināmu veidu un pārveido to citā, ļoti specifiskajā produkcijas izteiksmē. Lai iegūtu papildinformāciju par to, kā šifrēšana darbojas, skatiet HTG Explains: Kas ir šifrēšana un kā tā darbojas?

Algoritmi ir matemātiskie rīki, kas nodrošina dažādus pielietojumus 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, lai to sekotu. Uzziniet vairāk par to, ko mēs izcēlām? Kopīgojiet savus paskaidrojumus komentāros!