16Aug

Kas ir datora algoritmi un kā tie darbojas?

Ja vien jūs neesat matemātikā vai programmēšanā, vārds "algoritms" varētu būt jums grieķu valodā, bet tas ir viens no visbūtiskākajiem elementiem, ko izmantojat, lai izlasītu šo rakstu.Š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 pēc 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 kādā 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.

Pamatnoteikumu komplekts

Pieņemsim, ka jūsu draugs tikās ar jums pārtikas preču veikalā un jūs novirzījāt viņu uz 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)

Sākot ar START, jūs dodies uz ceļa un atkarībā no tā, kas notiek, jūs sekojat "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.

diagrammas

Izmantosim grafiku, lai ilustrētu dažādus virzienus.

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 diagrammas standarta 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 viegli, lai gabals katru punktu, vienu pēc otra, un savienot 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 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 grafikas standarta formu ={ (sākumpunkts), [m1, x1, h1],. .., [mn, xn, hn]}. Šeit mainīgais "m" apzīmē līnijas slīpumu, "x" norāda virzienu, uz kuru jāatskaitās( vai nu x vai y), un h"norāda, cik daudz ir jāuzskaita minētajā virzienā. Varat arī atcerēties, ka pēc katras kustības ir jāuzraksta 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ā saņemsitJūs varat redzēt, ka pēdējie trīs termini šajā izteiksmē ir vienādi, tādēļ mēs varam to sagriezt, vienkārši sakot, ka "atkārtojiet to trīs reizes" kaut kādā veidā. Pieņemsim, ka jebkurā laikā jūs redzat mainīgo "R"parādās, 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 nav īsti svarīgi, un tikai pats grafiks? 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 ir tas tīri algebriskos terminos. 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 izvēlētā 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 aspekts 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 arī 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

Kad lejupielādējat. zip failu, jūs iegūstat saturu, lai jūs varētu izmantot jebkuruir tā iekšpusē.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 saziņas 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 ieguldījumu un pārvērš 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!