Se spune că un program include algoritmi, totuși, dacă ne referim la definiția lor, un algoritm este o secvență de instrucțiuni scrise către efectuați o sarcină specificată și un program de computer este, de asemenea, o secvență de instrucțiuni pentru a efectua o (unele) sarcini cu computerul.

Atunci ce face diferit un program de un algoritm? este și un tip de algoritm? / p>

De fapt, caut definiții formale pentru un algoritm și un program de computer, astfel încât să le pot distinge între ele sau să identific algoritmi în cadrul unui program.

Actualizați : Am observat în Wikipedia printr-o definiție informală (cel puțin sintactic) orice program este un algoritm.

O definiție informală ar putea fi „un set de reguli care definește cu precizie o succesiune de operații.” care ar ar include toate programele de computer , inclusiv programe care nu efectuează calcule numerice. În general, un program este doar un algoritm dacă se oprește în cele din urmă .

Răspuns

Voi da același răspuns ca și când am dat anterior când a apărut această întrebare.

În primul rând, înțelegeți că nu există o definiție formală bună a „algoritmului” la momentul scrierii. Cuvântul cheie aici este „formal”.

Cu toate acestea, există oameni inteligenți care lucrează la el.

Ceea ce știm este că oricare ar fi un „algoritm”, acesta se află undeva între „funcția matematică” și „programul de computer”.

O funcție matematică este noțiune formală a unei mapări de la intrări la ieșiri. Deci, de exemplu, „sortare” este o mapare între o secvență de elemente comandabile și o secvență de elemente ordonabile de același tip, care mapează fiecare secvență la secvența ordonată. Această funcție ar putea să fie implementat folosind diferiți algoritmi (de exemplu, sortare fuzionare, sortare heap). Fiecare algoritm, la rândul său, ar putea fi implementat folosind diferite programe (chiar având același limbaj de programare).

Deci, cel mai bun control pe care îl avem despre ceea ce este un „algoritm” este că este un fel de clasă de echivalență pe programe, unde două programele sunt echivalente dacă fac „în esență același lucru”. Orice două programe care implementează același algoritm trebuie să calculeze aceeași funcție, dar inversul nu este adevărat.

În mod similar, există o clasă de echivalență între algoritmi, unde doi algoritmi sunt echivalenți dacă calculează aceeași funcție matematică. .

Partea dificilă din toate acestea este încercarea de a surprinde ceea ce înțelegem prin „în esență același lucru”.

Există câteva lucruri evidente pe care ar trebui să le includem. De exemplu, două programe sunt în esență aceleași dacă diferă doar prin redenumiri variabile. Majoritatea modelelor de limbaje de programare au noțiuni native de „echivalență” (de exemplu, reducerea beta și conversia eta în calculul lambda), deci ar trebui să le aruncăm și pe acestea.

Indiferent de relația de echivalență pe care o alegem, aceasta ne oferă o anumită structură . Algoritmii formează o categorie în virtutea faptului că sunt categoria de programe. Se știe că unele relații de echivalență interesante dau naștere unor structuri categorice interesante; de exemplu, categoria algoritmilor recursivi primitivi este un obiect universal în categoria categoriilor. Ori de câte ori vedeți o astfel de structură interesantă, știți că această linie de anchetă va fi probabil utilă.

Comentarii

  • Vă mulțumim pentru răspunsul dvs. precis, doar o altă întrebare. Dacă luăm în considerare orice program, indiferent de ceea ce face, aceștia primesc totuși unele intrări și urmează câteva instrucțiuni și dau unele rezultate pe măsură ce sunt executate. Este posibil ca ‘ să nu rezolve nicio problemă (așa cum numim noi), dar este totuși o mapare. ar putea fi algoritm cunoscut, mă refer la vreun program?
  • Dacă ‘ te citesc corect, ‘ Vă întreb dacă o definiție formală a unui algoritm ” ” ar trebui sau nu să prezinte condiția că trebuie să fie ” util „. Aș spune că ” nu „, doar pentru că este mposibil de formalizat ‘ noțiune.
  • îmi pare rău! engleza mea nu este bine, atunci spui ” nu ” la ce? admiteți că este ‘ imposibil să formalizați utilitatea unui program și, prin definiție, orice program este un algoritm? sau spuneți că ‘ este necesar să luăm în considerare utilitatea pe lângă algoritm?
  • Nu ‘ nu cred că o definiție formală a unui algoritm ” ” ar trebui să impună ca acesta să fie util, deoarece ” util ” poate ‘ să fie definit în mod formal.
  • Răspunsul dvs. este cel mai util în acest fir +1. Cred că prin ” în esență același lucru „, vrei să spui ” semantic echivalent „. De asemenea, cred că toate programele sunt în esență algoritmi (așa cum spune OP), deoarece toate programele sunt implementări care mapează o intrare la o ieșire, chiar dacă această mapare este implicită. După cum ați spus, totul depinde de perspectivă.

Răspuns

În cele din urmă, diferența este una de perspectivă . Un program este un program: o secvență de enunțuri într-un anumit limbaj, poate un limbaj de programare sau instrucțiuni la nivel de mașină. Algoritmii sunt de obicei descriși la un nivel mai înalt decât instrucțiunile mașinii sau instrucțiunile de limbaj de programare, dar cât de înalt este un nivel destul de flexibil. De exemplu, în unele circumstanțe, „Sortează matricea, apoi privește elementul $ k $ th” este o descriere perfect bună a unui algoritm pentru găsirea celui mai mare obiect $ k $ th dintr-o matrice; în alte circumstanțe, poate doriți să specificați mai multe detalii despre modul în care are loc sortarea.

După cum spuneți, un algoritm este ceva de genul „un proces sau un set de reguli care trebuie urmate în calcule sau în altă problemă -rezolvarea operațiunilor, în special de către un computer. ” Deci, vorbind literalmente, fiecare program este un algoritm. De obicei, totuși, vorbim despre algoritmi de implementare a programelor. De obicei, atunci când descriem un algoritm, evităm detaliile la nivel scăzut despre modul în care lucrurile sunt implementate, presupunând că un programator competent ar putea să-l implementeze în limba dorită.

Comentarii

  • Cred că algoritmul precis este legat de conceptul de matematică, lambda-calcul sau Turing machine, încă nu ‘ nu știu ce este asta limbaj de abstractizare? matematică sau un limbaj natural cu multe afirmații fuzzy
  • Algoritmul @ Ahmad este un concept informal. Nu are o definiție formală. Într-un sens, ‘ seamănă cu o dovadă matematică, care este diferită de o dovadă formală într-un sistem de dovadă formală. Credem că dovezile informale pot fi ” completate ” la dovezi formale în orice sistem de dovadă formal ales (suficient de puternic), la fel ca orice algoritmul poate fi complet implementat în orice limbaj de programare (Turing-complet).

Răspuns

Algoritmi în Turing – mentalitatea completă este de obicei specificată prin intrare și ieșire. Programele reale fac mai mult; ele

  • comunică cu utilizatorul,
  • comunică cu alte mașini,
  • reacționează la mediu,
  • nu încetează și sunt încă utile,

și multe altele. Aceste lucruri nu sunt de obicei luate în considerare în algoritmi sau teoria calculelor, dar sunt esențiale pentru majoritatea programelor.

Comentarii

  • Acesta este un punct foarte bun. Dar vrei să spui ceva de genul ” specificat de obicei ca mijloc de mapare a intrării la ieșire „? Specificarea intrării și a ieșirii nu este suficientă: de exemplu, mergesort și quicksort produc aceeași ieșire din orice intrare, dar nu sunt luate în considerare ‘ să fie același algoritm.
  • @ DavidRicherby Mă gândeam la specificații în sensul PL; nu ‘ nu specificăm altceva, deci este posibil ca algoritmii să nu facă altceva. Desigur, trebuie să oferim mai mult decât specificațiile pentru a descrie un algoritm concret.
  • Puncte bune, dar dacă admitem că, în final, orice program este un algoritm, nu ‘ nu știți cum sunt măsurate acele aspecte pe care le-ați abordat în legătură cu un algoritm. Poate un subiect AI ?!
  • Cine ar admite asta și de ce? Și ce vrei să spui prin măsură aici? (Și cu siguranță nu ‘ nu văd unghiul AI aici.)
  • @Raphael Pot să recunosc (uitându-ne la sintaxă, toate programele arată similar, sunt secvențe de instrucțiuni sau mapare de intrare la ieșire), doar nu ‘ nu știu cum alte caracteristici ale unui program (cele cărora le-ați adresat) pot fi extrase din această definiție. de exemplu, diferența dintre sortare rapidă și MATLAB sau Windows Media Player !!

Răspuns

  • Un algoritm este o abordare sistematică pentru rezolvarea unei probleme specifice.

  • Un program este un set de instrucțiuni pe care trebuie să le urmeze un computer.

Prin urmare, un program nici măcar nu trebuie să rezolve o problemă.Sunt sigur că ne putem gândi cu toții la mai multe programe care au cauzat mai multe probleme decât au rezolvat. Un program poate fi o implementare a multor algoritmi sau un algoritm poate fi implementat prin corelarea mai multor programe. Un program nu poate conține nici măcar algoritmi. De exemplu, programul gol care iese pur și simplu, sau poate chiar o Hello World, ar putea fi considerat un program fără algoritm.

Deoarece un algoritm rezolvă o problemă specifică, este concentrat pe un concept întreg specific. Prin urmare, un algoritm oferă pași abstracte pentru procesarea unui set de informații conexe într-un set diferit de informații derivate. Un program nu necesită ca componentele sale să fie deloc legate conceptual. De exemplu, un program poate avea un ou de Paște, dar un lucru numit corect algoritm nu ar trebui. Puteți avea un virus sau troian care se ascunde într-un program, dar nu într-un algoritm. Cel mai apropiat de un algoritm poate ajunge la acest lucru ar fi ceva asemănător unei spate într-un algoritm de criptare, în care defectul planificat face parte din relația de informații stabilită de algoritm.

Și, în sfârșit, un program, așa cum este prescurtare pentru un program de calculator, tautologic necesită un computer. Un algoritm nu. Dacă separ în mod sistematic cămășile, pantalonii și șosetele de rufele mele înainte de a le pune, acesta este un algoritm. Se ocupă de intrările și ieșirile aferente, poate fi descris într-o diagramă de flux și are consecințe calculabile în termeni de eficiență (de exemplu, numărul de piese vestimentare care trebuie comparate pentru a găsi șosete potrivite).

Răspuns

Un algoritm este un concept sau o idee. Este o abordare formală pentru rezolvarea unei probleme. Algoritmii pot fi exprimați sau implementați într-o varietate de limbaj de programare (de obicei, aproape orice limbaj poate implementa orice algoritm). Pentru câteva exemple, ar trebui să citiți Algoritmi de sortare în Wikipedia.

Un program de computer este o secvență specifică de instrucțiuni într-un limbaj de programare specific. . Un program poate conține implementarea multor algoritmi. Excel este un program, dar capacitățile sale de sortare sunt manifestarea unui algoritm.

Răspuns

Un algoritm este un set de operațiuni pas cu pas autonom care trebuie efectuate pentru a rezolva o anumită problemă sau o clasă de probleme.

Un program de computer este o secvență de instrucțiuni care respectă regulile unui limbaj de programare specific, scrise pentru a efectua o sarcină specificată cu un computer.

Algoritmii sunt generali și trebuie traduși într-un limbaj de programare specific (implementat).

Comentarii

  • Dar întregul punct al întrebării este că un program (fie codul său sursă, fie binarul compilat ) este ” un set autonom de operațiuni pas cu pas care trebuie efectuate pentru a rezolva o anumită problemă sau clasă de probleme. ”
  • Dar nu este ‘ t. Un program nu este aceste operațiuni, dar o implementare a acestora: ceva care le execută într-un context particular. De exemplu. utilitarul Unix sort nu este un algoritm de sortare, ci folosește un algoritm de sortare.

Răspuns

Un algoritm exprimă ideea sau soluția noastră pentru o problemă specifică în abordare pas cu pas.este doar rezolvarea problemelor și abordare ușor de înțeles de către om, nu pentru sistemul computerizat

Programul este instrucțiuni pas cu pas implementate pentru rezolvarea problemei de către sistemul computerizat. Trebuie să fie ușor de înțeles nu numai de programator, ci și de computer.

Comentarii

Răspuns

Celelalte răspunsuri aici, cred, pierd un punct important. Definiția „algoritmului” pe care am fost învățată a inclus cerința ca procedura să se oprească pe toate intrările . Bineînțeles, acest lucru face din „program” o clasă mai largă de proceduri decât „algoritmul”, deoarece unele programe se opresc pe toate intrările, iar altele nu.

Comentarii

  • Acest lucru nu este universal. Definiția pe care am fost învățată nu ‘ nu a inclus acea cerință.

Răspuns

Iată câteva moduri de a trasa linia dintre un algoritm și un program:

Scop semnificativ

Programele sunt scrise cu un scop și reprezintă o încercare de a realiza un poartă. Algoritmii pot fi priviți ca instrumente pentru atingerea acestui obiectiv.

De ex. o șurubelniță este un algoritm pentru a modifica starea unui șurub, dar șurubelnița în sine nu are scopul de a face acest lucru.Scopul este în capul operatorului de șurubelniță care deține programul, cum ar fi ridicarea rafturilor.

Logica afacerii

Acest punct se referă puternic la scopul unui program. Deoarece programele au scopuri, ele au în mod inevitabil fragmente de lume reală, cum ar fi date specifice, măsurători, tehnologii, nume etc.

Algoritmii, pe de altă parte, nu conțin nici logică de afaceri, nici biți de lume reală și în loc să funcționeze pe valorile specifice operează pe variabile.

De ex. în acest sens puteți compara o funcție matematică precum f(x) = x^2 care este abstractă și operează pe variabile cu o rețetă de gătit care conține valori precise (cel puțin una pentru referință).

Rezultat

Acest punct se leagă puternic de logica de afaceri a unui program. Un agent (ca un utilizator de browser web) consumă rezultatul unui program, nu rezultatul unui algoritm.

De ex. consumatorul unei rețete de gătit consumă tortul nu rezultatul frisca sau al încălzirii cuptorului.

Comentarii

  • Poate că ar fi mai bine să spunem că șurubelnița nu are ‘ intenția de a roti șuruburile? În limba engleză de zi cu zi, am spune cu siguranță că o șurubelniță are scopul de a întoarce șuruburile: șuruburile de întoarcere este exact ceea ce a fost conceput să facă.
  • De asemenea, eu ‘ nu știu exact ce vrei să spui prin ” logică de afaceri ” (multe programe nu au nimic de făcut cu afaceri) sau spunând că un algoritm ” nu conține nici logică de afaceri, nici biți din lumea reală „. De exemplu, aș putea perfect sintagma un algoritm cu cea mai scurtă cale în ceea ce privește orașele și drumurile, mai degrabă decât vârfurile și marginile. ‘ nu conține algoritmul, apoi ” conține … biți din lumea reală ” ?
  • @DavidRicherby, ai dreptate, expresia mea este ambiguă. Ceea ce am vrut să spun este un scop semnificativ . Întoarcerea șuruburilor pentru a întoarce șuruburile este inutilă, precum și sortarea unei matrice care nu este niciodată folosită. Prin logica afacerii mă refer la toată logica programului, cu excepția logicii utilitare și a tehnologiei stivei boilerplate, adică toată logica care implementează de fapt scopul programului, adică logica de afaceri a coacerii unui tort este amestecarea ingredientelor și coacerea și nu include învățarea de a amesteca sau coace care este logica utilitară reutilizată în acest caz).
  • @DavidRicherby, ca și pentru biți din lumea reală , mă refer la actualizare, adică un program spre deosebire de un algoritm trebuie să comunice într-un fel cu lumea fizică. Un algoritm, pe de altă parte, poate fi un concept pur matematic.

Răspuns

I Sunt destul de sigur că alte răspunsuri sunt suficient de bune pentru a prelua conducerea, dar iată cum văd diferența dintre un algoritm și un program

  • Un algoritm constă pur și simplu din pașii (independenți de mașină) care trebuie urmați într-o anumită ordine pentru a rezolva o problemă.

  • Un program este un set de instrucțiuni pentru un anumit tip de mașină pentru a pune în practică un algoritm .

De exemplu.

Să spunem că aveți un algoritm care are un pas pentru să ajungeți la un anumit loc înainte de a face un alt pas. Acum modul în care va fi realizat acest pas de atingere nu este exact definit. Puteți alege să mergeți sau să alergați sau să luați un autobuz pentru a face acest lucru, dar asta depinde de modul în care alegeți să îl implementați (care este prog ram).

Puteți spune că un algoritm este o abstracție a unui program, adică lipsește detaliile exacte, dar stabilește un plan pentru a face ceva .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *