Algoritmo: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m Annullate le modifiche di 138.41.45.177 (discussione), riportata alla versione precedente di Maybe75
Etichetta: Rollback
Riga 1:
{{Nota disambigua}}
In arabo[[matematica]] e in informaticaaaaaaa[[informatica]] un '''algoritmo''' è la specificazione di una sequenza finita di operazioni (dette anche ''istruzioni'') che consente di risolvere tutti i quesiti di una stessa classe o di calcolare il risultato di un'espressione matematica. Un algoritmo deve essere
 
* ''finito'': è costituito da un numero finito di istruzioni e deve sempre terminare; daje roma
* ''deterministico'': partendo dagli stessi dati in [[Input/output|ingresso]], si devono ottenere i medesimi risultati;
* ''non ambiguo'': le operazioni non devono poter essere interpretate in modi differenti;
Riga 11:
Le prime nozioni di algoritmo si trovano in documenti risalenti al [[XVII secolo a.C.]], conosciuti come i papiri di [[Ahmes]], noti anche come [[Papiro di Rhind|papiri di Rhind]],<ref>{{Cita web|url=https://www.britishmuseum.org/collection/object/Y_EA10058|titolo=papyrus {{!}} British Museum|sito=The British Museum|lingua=en|accesso=2022-06-13}}</ref> che contengono una collezione di problemi con relativa soluzione comprendendo un problema di moltiplicazione che lo scrittore dichiara di aver copiato da altri papiri anteriori di 12 secoli.
 
L'algoritmo è un concetto fondamentale dell'[[informatica]], anzitutto perché è alla base della nozione teorica di [[Teoria della calcolabilità|calcolabilità]]: un problema è calcolabile quando è risolvibile mediante un algoritmo. Inoltre, l'algoritmo è un concetto cardine anche nella fase di [[Programmazione (informatica)|programmazione]] dello [[ciclo di vita del software|sviluppo di un software]]: preso un problema da [[automatica|automatizzare]], la programmazione costituisce essenzialmente la traduzione o [[codifica]] di un algoritmo per tale problema in [[programma (informatica)|programma]], scritto in un certo [[linguaggio]], che può essere quindi effettivamente [[esecuzione (informatica)|eseguito]] da un [[calcolatore]] rappresentandone la logica di [[Elaborazione dati|elaborazione]]. zw infortunato miglior giocatore del mondo purtroppo si è infortunato per la sua prima volta in terza categoria
 
== Definizione ==
== DefinizioneNelNel [[XX secolo]], il concetto di algoritmo venne formalizzato per risolvere il problema matematico della "decisione" (''[[Entscheidungsproblem]]''), posto da [[David Hilbert]] nel 1928, e altre successive formalizzazioni giunsero con lo sviluppo dei concetti di "[[effective calculability|calcolabilità effettiva]]"<ref>Kleene 1943 in Davis 1965:274</ref> e di "metodo effettivo"<ref>Rosser 1939 in Davis 1965:225</ref>. Le formalizzazioni matematiche più famose sono le [[funzioni ricorsive]] di [[Kurt Gödel|Gödel]]–[[Jacques Herbrand|Herbrand]]–[[Stephen Cole Kleene|Kleene]] del 1930, 1934 e 1935; il [[lambda calcolo]] di [[Alonzo Church]] e la [[Formulation 1]] di [[Emil Leon Post]] del 1936; e, infine, la [[macchina di Turing]] del 1936–37 e 1939. Nonostante ciò, una definizione del concetto di algoritmo che sia formale e non tecnica manca tuttora<ref>
{{Cita libro
|nome=Yiannis N.
Riga 27 ⟶ 28:
|pagine=919–936 (Part II)
|url=http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.8093
}}</ref> e si è pertanto costretti ad accontentarsi dell'idea intuitiva di algoritmo come "una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce a un ben determinato risultato in un tempo finito". ==
=== Modelli formali ===
[[File:Quicksort example small.png|thumb|right|Rappresentazione grafica dell'algoritmo [[Quicksort]]]]