Educaţie

Ce este algoritmul? »Definiția și sensul său

Cuprins:

Anonim

În matematică, informatică și alte doctrine conexe, algoritmul este definit ca un set de precepte stabilite și fără echivoc, găsite metodic și într-un mod limitat care permit efectuarea calculelor, procesarea anumitor informații, oferirea de soluții la probleme și desfășurarea diverselor activități.. Odată ce începeți de la o stare inițială și o intrare, urmând procedurile solicitate, starea finală este atinsă și se obține un rezultat. Algoritmii fac obiectul cercetării algoritmicii și, deși mulți s-ar putea să nu creadă, pot fi folosiți și în toate aspectele vieții de zi cu zi.

Ce este un algoritm

Cuprins

În calcul este de obicei definit ca o succesiune de instrucțiuni secvențiale, în care unele procese sunt efectuate pentru a răspunde anumitor decizii sau nevoi. În același mod, algoritmii sunt frecvent utilizați în logică și matematică, precum și baza pentru elaborarea manualelor de utilizare, broșuri ilustrative, printre altele. Unul dintre cei mai distinși în matematică este cel atribuit geometristului Euclides, pentru a obține cel mai mare divizor comun al a două numere întregi pozitive și binecunoscuta „metodă Gaussiană” pentru a determina sisteme de ecuații liniare.

În raport cu informatica, acest calcul poate fi cunoscut ca secvența de îndrumări de urmat pentru determinarea unei probleme prin utilizarea unui computer.

Prin urmare, algoritmica este înțeleasă ca o disciplină care se concentrează pe analiza și proiectarea algoritmilor. Având în vedere primul, acesta caută să examineze proprietăți precum corectitudinea și eficacitatea sa în ceea ce privește timpul și spațiul, pentru a înțelege problemele care pot fi rezolvate algoritmic. În ceea ce privește al doilea, acesta caută să studieze paradigmele deja stabilite și propune noi exemple.

Algoritmul este situat în centrul progresului de calcul și este important în diferitele zone ale acestuia. În acest fel, ar fi imposibil ca serviciile la fel de reușite ca Facebook și Google să gestioneze amploarea informațiilor pe care le au fără colaborarea algoritmilor sau a structurilor de date specializate. Cu toate acestea, în viața de zi cu zi se folosesc și algoritmi, un exemplu în acest sens este aprinderea aragazului, deoarece acesta începe în momentul în care persoana merge la bucătărie, o observă și își are sfârșitul, atunci când continuă să o aprindă..

Caracteristicile unui algoritm

Deși algoritmul este cunoscut ca setul ordonat și finit al diferiților pași care duc la rezolvarea unei probleme, se spune că natura acestor dificultăți variază în funcție de contextul în care se găsesc, în acest fel, există probleme chimice, matematice, filosofice, printre altele. Astfel, se poate spune că natura sa este variată și că execuția sa de către computer nu este necesară. Dincolo de tot ceea ce s-a explicat anterior, algoritmii au caracteristici elementare pentru a determina ce sunt astăzi și vor fi menționați mai jos.

  • Liniile directoare conținute într-un algoritm trebuie să fie specifice pentru a evita lăsarea locului pentru orice tip de confuzie, aceasta înseamnă că instrucțiunile corespunzătoare trebuie respectate în mod corespunzător sau, dimpotrivă, reprezentarea grafică a fluxului în care vă înscrieți nu va facilita soluția. corect.
  • Trebuie să fie într- o definiție perfectă, încercând cât mai mult posibil să-l urmeze de câte ori este necesar, pentru a obține același rezultat și în cazul în care se întâmplă contrariul, algoritmul nu va fi fiabil și nu va servi drept ghid la luarea unei decizii.
  • Sunt cunoscuți pentru particularitatea de a fi finit, de obicei se termină la un moment dat și mai târziu aruncă un rezultat la sfârșitul fiecărui pas. Dacă algoritmul se extinde la nesfârșit, revenind la un punct inițial care nu poate fi rezolvat niciodată, există prezența unui paradox sau binecunoscuta „buclă” a repetărilor.
  • În cele din urmă, se spune că lizibilitatea algoritmilor este elementul cheie, deoarece dacă argumentul său este de neînțeles, instrucțiunile corespunzătoare nu ar putea fi urmate, în plus, implică o formulare directă, clară și laconică a textului găsit în fiecare.

Părți ale unui algoritm

Fiecare operație algoritmică are trei părți diferite care sunt supuse structurii de bază a unui sistem și acestea sunt:

  • Intrare: numită și antet sau punct de plecare, este instrucțiunea inițială care reprezintă geneza algoritmului și cea care motivează citirea acestuia.
  • Proces: denumit și declarație, este elaborarea precisă oferită de algoritm și este în esență trunchiul cheilor sale pentru formularea instrucțiunilor.
  • Ieșire: în această ultimă fază sunt instrucțiunile specifice determinate de algoritm, de exemplu, comenzile sau rezoluțiile sale.

Exemple de algoritmi

Exemple obișnuite de calcule matematice includ 2 + 3 = 5 pentru adunare și 15-9 = 6 pentru scădere. O altă modalitate de a vizualiza algoritmi simpli este în rețetele din bucătărie, deoarece acestea descriu un proces specific și ordonat, de exemplu, „mai întâi ar trebui să plasați o jumătate de oală de apă pentru a încălzi, apoi ar trebui să adăugați un vârf de sare și, în final, ardeiul va fi împărțit pentru a extrage semințele și venele. " În acest model sunt prezentate un început, un proces și un sfârșit, care sunt practic ceea ce definește algoritmii.

Tipuri de algoritmi

Dintre diferitele tipuri de algoritmi existenți în întreaga lume, se pune accent pe cei care sunt clasificați în funcție de un sistem de semne și altele în funcție de funcția lor. Algoritmul este în esență cea mai cunoscută soluție pentru rezolvarea oricărei probleme și, în funcție de strategiile și funcțiile sale, există diferite tipuri de acestea, printre care sunt dinamice, inverse, forța brută, oportuniste, marcare, aleatoriu etc. În plus față de algoritmii menționați mai sus, există mii dintre acestea care sunt potrivite pentru rezolvarea dificultăților din orice domeniu.

Conform sistemului dvs. de semne

Calitativ și cantitativ sunt situate în această categorie.

  • Algoritmii calitativi se caracterizează prin faptul că au elemente verbale, un exemplu dintre acestea sunt instrucțiunile sau „pas cu pas” recunoscute care sunt conferite oral, cum ar fi rețetele pentru artele culinare sau procedurile pentru efectuarea lucrărilor manuale.
  • Algoritmii cantitativi sunt complet opusul celor calitative, datorită prezenței anumitor elemente numerice și a utilizării matematicii pentru efectuarea calculelor, de exemplu, atunci când se găsește rădăcina pătrată sau se rezolvă ecuațiile.

În cadrul acestei clasificări există și algoritmi computaționali și necomputaționali. Cele de calcul sunt realizate prin intermediul unui computer și se caracterizează prin faptul că sunt atât de complexe până la punctul de a necesita realizarea unei mașini, pe lângă acestea, sunt algoritmi cantitativi care pot fi optimizați. Cele necomputaționale nu au obligația de a fi executate cu ajutorul unei mașini sau computer; un exemplu clar în acest sens este programarea unui televizor.

După funcția sa

Următoarele sunt situate în această clasificare.

1. Algoritm de marcare

Aceasta se caracterizează prin utilizarea automatizării pentru a stabili prețurile într-un mod sârguincios, concentrându-se pe factori precum comportamentul utilizatorilor și este, de asemenea, cunoscută sub numele de capacitatea de a determina automat prețurile pentru devalorizarea componentelor, pentru a crește profiturile utilizatorilor. vânzători. A jucat un rol foarte important în practicile comune ale industriilor aeriene de la începutul anilor '90.

Algoritmul de marcare se distinge prin faptul că este una dintre cele mai frecvente practici în industriile extrem de competitive, referindu-se la agențiile de turism sau la acele unități online. Acest tip de algoritm poate deveni extrem de complex sau relativ simplu, deoarece în multe cazuri se observă că sunt optimizați sau autodidacti cu continuitatea anumitor teste. Dincolo de toate acestea, algoritmii de etichetare pot deveni și nepopulari pentru clientelă, deoarece indivizii tind să aprecieze atât stabilitatea, cât și corectitudinea.

2. Algoritmi probabilistici

Sunt acelea în care modul în care se obțin rezultatele depinde de probabilități, acestea sunt cunoscute în mod obișnuit ca algoritmi aleatori.

În unele aplicații, gestionarea acestui tip de operație este obișnuită, de exemplu, atunci când comportamentul oricărui sistem existent sau conceput este simulat în timp, în care se obține o soluție fortuită ca o consecință. În alte circumstanțe, problema de rezolvat este de obicei deterministă, dar există posibilitatea de a o transforma într-una fortuită, pentru a o rezolva prin aplicarea algoritmului de probabilitate. Pozitivul întâmplării este că aplicarea sa nu necesită studii matematice foarte sofisticate.

În plus, în cadrul acestui grup există trei tipuri principale care sunt cunoscute sub numele numerice, Monte Carlo și Las Vegas.

  • Algoritmii numerici pot oferi un rezultat aproximativ al problemei și sunt în general aplicați în inginerie.
  • Algoritmii Monte Carlo pot oferi soluția corectă sau greșită și au o anumită marjă de eroare și în cele din urmă.
  • Algoritmii din Las Vegas se disting prin a nu lăsa niciodată un răspuns incorect, de fapt, găsesc soluția corectă sau pur și simplu vă informează despre posibilul eșec.

Programarea dinamică se referă la metoda în care algoritmul calculează rezultatele. Uneori soluțiile anumitor elemente care au probleme depind de rezultatele altor probleme mai mici. Deci, pentru a rezolva acestea, aceleași valori trebuie recalculate pentru a rezolva cele mai mici subprobleme, cu toate acestea, acest lucru poate crea o risipă de cicluri. Pentru a remedia acest lucru, se poate utiliza programarea dinamică și în acest caz se amintește soluția fiecărei subprobleme, pentru a utiliza aceeași valoare în loc să o repetați de mai multe ori.

3. Algoritmi euristici

Ele se disting prin găsirea de soluții și chiar și așa nu garantează că se va găsi cel mai bun răspuns, din acest motiv, pot fi considerați ca algoritmi aproximativi. Acestea pot fi utilizate atunci când găsirea unei soluții printr-o cale normală este considerată imposibilă. Euristicile oferă utilizările care vor fi explicate mai jos. În planificare, acestea sunt utilizate pentru a programa activități într-o perioadă scurtă de timp, în proiectare sunt utilizate pentru a delimita sistemele electrice sau digitale și în simulare sunt utilizate pentru a verifica anumite proceduri.

4. Algoritmi de backtracking

Sunt cunoscute ca strategii recursive care rezolvă probleme precum puzzle-uri, labirinturi sau piese similare, în care se face o căutare profundă pentru a găsi o posibilă soluție. Numele său se referă la faptul că în anchetele făcute pentru a găsi un rezultat, întotdeauna se întoarce la punctul anterior pentru a putea testa alternative. Acestea sunt de obicei revocate pentru a observa impactul lor asupra economiei, pe piețe, asupra marcării prețurilor, asupra anumitor operațiuni și chiar asupra societății în sine.

5. Algoritm lacom

Este cunoscut sub numele de distrugător sau dinte dulce și este aplicabil în probleme de optimizare, în fiecare etapă a acestui algoritm se face o alegere logică și optimă pentru a ajunge la cele mai bune soluții globale. Cu toate acestea, trebuie luat în considerare faptul că, odată ce se ajunge la o judecată, nu se poate face absolut nimic pentru a o corecta sau a o schimba în viitor. Această operație poartă acest nume, deoarece în fiecare etapă se alege cea mai bună fracție care este capabilă să „înghită” fără să vă faceți griji cu privire la ceea ce se întâmplă mai târziu.

Proprietățile unui algoritm

Diversi autori au încercat să definească algoritmii într-un mod formal în timp ce utilizează modele matematice. Cu toate acestea, aceste specimene sunt strâns legate de un tip particular de informații care includ numere, simboluri și unele grafice, în timp ce operează pe o cantitate mare de distribuție a datelor. În general, cota comună a fiecărei definiții este rezumată în următoarele trei proprietăți:

Declarație problemă

Rezolvarea problemelor prin intermediul unui computer, poate consta în acel proces în care este descrisă o problemă și este permis să fie dezvoltat un program capabil să o rezolve. Acest proces necesită analiza problemei, proiectarea unui algoritm și transformarea acestuia într-un program, precum și performanța și validarea acestuia. Primii doi pași sunt cei mai complecși în acest proces, dar odată ce ați examinat problema și ați obținut un algoritm care o poate rezolva, sarcina dvs. se bazează în principal pe traducerea acesteia în limbajul de programare dorit.

Analiza soluției generale

Odată ce problema este definită, este timpul să analizăm următoarele:

  • Informațiile biletelor pe care ne oferă.
  • Rezultatele dorite.
  • Domeniul de lucru, declarațiile sau alte elemente necesare.

Analiza algoritmilor este cunoscută ca cea mai importantă parte a teoriei complexității computaționale mai largi, deoarece oferă calcule teoretice pentru resursele de care orice algoritm necesită pentru a rezolva o anumită problemă de calcul. Când se efectuează o investigație teoretică, este obișnuit să se calculeze complicațiile sale în sens asimptotic pentru a obține o dimensiune de intrare suficient de mare. Limita superioară asimptotică împreună cu notațiile theta și omega sunt utilizate în acest scop și trebuie remarcat faptul că măsura non-asimptotică poate fi computerizată.

Măsurile precise de eficiență sunt cu adevărat utile pentru cei care folosesc efectiv algoritmii, întrucât au o mai mare precizie și acest lucru le permite să determine timpul necesar pentru executare. Pentru unii indivizi, cum ar fi creatorii de jocuri video, constanta ascunsă poate însemna o mare diferență între succes și eșec. Evaluările de timp pot depinde de modul în care este definit un anumit pas și pentru ca analiza să aibă sens, trebuie garantat că timpul este limitat în mod semnificativ de o constantă.

Elaborarea algoritmului

Pentru a efectua dezvoltarea unei operațiuni, este important ca o serie de proceduri să fie efectuate pentru a se conforma cu rezolvarea problemei în sine. Pentru început, trebuie efectuată o analiză prealabilă a dificultății și acest lucru se face printr-un studiu care demonstrează adevărata funcționare a problemei cu mult înainte de a se efectua orice algoritm. Prin urmare, se evaluează definiția cerințelor, în acest pas trebuie să aveți o idee clară a problemelor de rezolvat, fie că este vorba de suma a două numere, de ordonarea unei liste de numere etc.

Ulterior, se execută identificarea respectivă a modulelor, deoarece implementarea corectă a algoritmilor depinde de aceasta pentru a oferi soluții posibile la cerințele identificate mai sus.

În cele din urmă, calculul este implementat într-un limbaj de programare care este ușor de înțeles de un computer, astfel încât acesta să poată înțelege instrucțiunile pe care le modelează și astfel să le poată realiza, obținând rezultatul scontat. În această ultimă procedură, se poate vorbi deja despre un program care este compus dintr-o serie de instrucțiuni care sunt comandate una după alta și reușesc să rezolve cerințele stabilite.

Este important de menționat că, în timp secvențial, algoritmii își îndeplinesc funcția într-un timp discretizat și caută să definească secvențele stărilor de calcul în fiecare intrare considerată validă. În starea abstractă, aceste operații sunt elemente independente și se consideră că în ele structurile de ordine primordială pot deveni invariante sub izomorfism. În explorarea mărginită, tranzițiile de la o stare la alta sunt complet stabilite printr-o explicație permanentă și finită, în care între o stare și următoarea, se ia în considerare doar numărul limitat de termeni ai stării curente.

Nici nu trebuie trecut cu vederea faptul că algoritmii sunt de obicei exprimați prin limbaje de programare „pseudocoduri” limbajul obișnuit și chiar bine-cunoscutele diagrame de flux. De asemenea, este important de menționat că algoritmii joacă un rol fundamental în calcul datorită reprezentării lor de date ca secvențe de biți. Dintr-un alt unghi, un program este definit ca algoritmul care exprimă computerului acei pași specifici pe care trebuie să-i urmeze pentru a desfășura în mod adecvat anumite activități. Pe de altă parte, învățarea scrierii pseudocodului facilitează programarea și, prin urmare, va fi explicată mai târziu.

Limbajele de programare sunt cunoscute ca limbaj formal sau artificial deoarece au reguli gramaticale bine definite, are capacitatea de a oferi programatorului capacitatea de a textualiza o serie de instrucțiuni sau secvențe de reglementări sub formă de algoritmi cu scopul pentru a menține un control cu ​​privire la comportamentul fizic și logic al computerului, în acest fel, se pot ajunge la diferitele tipuri de informații. Acest set de precepte scrise prin intermediul unui limbaj de programare este desemnat ca program.

Limbajele de programare sunt de obicei alcătuite dintr-un set de simboluri și reguli gramaticale și semantice care definesc structurile actuale ale limbajului și semnificația lor. Dintr-o altă perspectivă, limbajele de computer includ și limbaje de programare, un exemplu clar în acest sens este HTML, care este cel care îndeplinește anumite instrucțiuni pentru a realiza conținutul diferitelor documente. Limbajul de programare poate permite specificarea precisă a acelor date care trebuie să fie operate de un software specific într-o gamă largă de circumstanțe.

Pe de altă parte, pseudocodul este limbajul de descriere algoritmică care folosește convențiile elementare ale unui limbaj de programare real, dar care este conceput pentru citirea umană în loc să citească printr-o mașină, menținând independența față de orice alt tip de limbaj de programare. Pseudo-codul ignoră detaliile care nu sunt considerate esențiale pentru înțelegerea umană a algoritmului, cum ar fi codurile unui sistem, declarațiile variabile și chiar unele subrutine. În acest fel, limbajul de programare caută să fie completat cu descrieri precise în limbaj natural sau cu notații matematice compacte.