Algoritmo: In informatica e matematica, il termine algoritmo indica un procedimento che risolve un determinato problema

In matematica e 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.

Algoritmo: Definizione, Approccio matematico, Strutture di dati Disambiguazione – Se stai cercando altri significati, vedi Algoritmo (disambigua).

Un algoritmo deve essere

  • finito: è costituito da un numero finito di istruzioni e deve sempre terminare;
  • deterministico: partendo dagli stessi dati in ingresso, si devono ottenere i medesimi risultati;
  • non ambiguo: le operazioni non devono poter essere interpretate in modi differenti;
  • generale: deve essere applicabile a tutti i problemi della classe a cui si riferisce, o ai casi dell'espressione matematica.

Il termine deriva dalla trascrizione latina del nome del matematico persiano al-Khwarizmi, vissuto nel IX secolo d.C., che è considerato uno dei primi autori ad aver fatto riferimento a questo concetto scrivendo il libro: ‘Regole di ripristino e riduzione’.

Le prime nozioni di algoritmo si trovano in documenti risalenti al XVII secolo a.C., conosciuti come i papiri di Ahmes, noti anche come papiri di Rhind, 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 due secoli.

L'algoritmo è un concetto fondamentale dell'informatica, anzitutto perché è alla base della nozione teorica di calcolabilità: un problema è calcolabile quando è risolvibile mediante un algoritmo. Inoltre, l'algoritmo è un concetto cardine anche nella fase di programmazione dello sviluppo di un software: preso un problema da automatizzare, la programmazione costituisce essenzialmente la traduzione o codifica di un algoritmo per tale problema in programma, scritto in un certo linguaggio, che può essere quindi effettivamente eseguito da un calcolatore rappresentandone la logica di elaborazione.

Definizione

Nel 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 "calcolabilità effettiva" e di "metodo effettivo". Le formalizzazioni matematiche più famose sono le funzioni ricorsive di GödelHerbrandKleene 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 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

Algoritmo: Definizione, Approccio matematico, Strutture di dati 
Rappresentazione grafica dell'algoritmo Quicksort
Algoritmo: Definizione, Approccio matematico, Strutture di dati  Lo stesso argomento in dettaglio: Teoria della calcolabilità § Che cos'è un algoritmo.

La definizione di algoritmo appena riportata è piuttosto informale, mentre era necessario disporre di una definizione più rigorosa per trattare il concetto di algoritmo con strumenti matematici. Al tal fine sono stati definiti alcuni modelli matematici di algoritmo, fra i quali uno dei più celebri è la macchina di Turing. Essa rappresenta una sorta di computer ideale corredato di un programma da eseguire, ma, rispetto a un computer reale, la macchina di Turing ha un funzionamento estremamente più semplice che possa essere facilmente descritto con termini matematici, facendo uso di concetti come insieme, relazione e funzione.

La macchina di Von Neumann, che è il modello di architettura primigenio di tutti i computer attuali, è equivalente, in termini di potere di calcolo, alla macchina di Turing. In altre parole, è stato dimostrato che un certo problema può essere risolto da un computer (opportunamente programmato) se e solo se esso può essere risolto anche da una macchina di Turing. Oltre alla macchina di Turing, proposta da Alan Turing nel 1936, nello stesso periodo altri matematici hanno elaborato diverse rappresentazioni formali del concetto di algoritmo, fra i quali ricordiamo, per esempio, il lambda calcolo. Dopo alcuni anni, emerse che tutti questi modelli erano equivalenti: i problemi che una macchina di Turing poteva risolvere erano gli stessi che poteva risolvere una macchina di von Neumann e anche gli stessi che poteva risolvere una funzione costruita col lambda calcolo[senza fonte].

Da questi risultati, tra l'altro, scaturì la tesi di Church-Turing, che afferma che qualsiasi algoritmo sia modellabile con una macchina di Turing. In altri termini, questa tesi sostiene che è sostanzialmente impossibile cercare di immaginare un modello di algoritmo più potente e, di conseguenza, che nessuna macchina potrà mai risolvere problemi che una macchina di Turing non possa risolvere in linea di principio. Non si tratta di un teorema dimostrato matematicamente, poiché la tesi stabilisce l'eguaglianza di due concetti, l'algoritmo e la macchina di Turing, ma il primo non possiede una definizione formale. La tesi è oggi generalmente condivisa, sebbene i progressi nelle ricerche nel settore dell'ipercomputazione sembrino talvolta metterla in discussione.

Vi è anche l'algoritmo di Hirschberg, dal nome del suo creatore, Dan Hirschberg, di programmazione dinamica che trova l'allineamento ottimale della sequenza tra due stringhe.

Proprietà fondamentali degli algoritmi

Dalla precedente definizione di algoritmo si evincono alcune proprietà necessarie, senza le quali un algoritmo non può essere definito tale:

  • i passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili (atomicità);
  • i passi costituenti devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale (non ambiguità);
  • l'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza)
  • l'esecuzione deve avere termine dopo un tempo finito (terminazione);
  • l'esecuzione deve portare a un risultato univoco (effettività).
Algoritmo: Definizione, Approccio matematico, Strutture di dati 
Esempio di diagramma di flusso di un algoritmo del metodo Detto, fatto!

Così, ad esempio, "rompere le uova" può essere considerato legittimamente un passo elementare di un "algoritmo per la cucina" (ricetta), ma non potrebbe esserlo anche "aggiungere sale quanto basta" dato che l'espressione "quanto basta" è ambigua, e non indica con precisione quali passaggi servano per determinare la quantità necessaria.

All'istruzione non elementare di preparazione della crema potrebbe, però, essere associato un opportuno rimando a un'altra sezione del ricettario, che fornisca un sotto-algoritmo apposito per questa specifica operazione. Questo suggerisce che, per comodità d'implementazione, gli algoritmi possano essere modulari, ovvero orientati a risolvere specifici sotto-problemi, e gerarchicamente organizzati. Inoltre, una ricetta che preveda la cottura a microonde non può essere preparata da un esecutore sprovvisto dell'apposito elettrodomestico; questo rimanda al problema della realizzabilità degli algoritmi, ovvero della loro compatibilità con le risorse materiali e temporali a disposizione. Infine, possono darsi più algoritmi validi per risolvere uno stesso problema, ma ognuno con un diverso grado di efficienza.

L'algoritmo viene generalmente descritto come "procedimento di risoluzione di un problema". In questo contesto, i "problemi" che si considerano sono quasi sempre caratterizzati da dati di ingresso (input) variabili, su cui l'algoritmo stesso opererà per giungere fino alla soluzione. Per esempio, il calcolo del massimo comune divisore fra due numeri è un esempio di "problema", e i suoi dati di ingresso, variabili di volta in volta, sono i due numeri in questione. A un non matematico questa potrebbe apparire come una "famiglia di problemi" (il problema di calcolare il massimo comune divisore fra 10 e 15, il problema di calcolarlo fra 40 e 60, fra 35 e 95, e così via). Il matematico e l'informatico identificano con la parola "problema" l'intera famiglia e con "istanza" o "x" ciascuno dei quesiti specifici ottenuti fissando due particolari valori. Data questa premessa, un algoritmo risolve un problema se per qualunque istanza del problema esso produce in un tempo finito la soluzione desiderata, ovvero un certo risultato o dato in uscita (output) a partire da dei dati in ingresso (input).

Se questa idea aveva già una certa importanza per il calcolo matematico, l'avvento dell'informatica l'ha arricchita di una nuova importanza, ed è infatti con l'informatica che il termine "algoritmo" ha iniziato a diffondersi. Difatti, se per ottenere un certo risultato (risolvere un certo problema) esiste un procedimento infallibile, che può essere descritto in modo non ambiguo fino ai dettagli, e conduce sempre all'obiettivo desiderato in un tempo finito, allora esistono le condizioni per affidare questo compito a un computer, semplicemente introducendo l'algoritmo in questione in un programma scritto in un opportuno linguaggio comprensibile alla macchina.

Inizialmente un algoritmo può essere descritto attraverso l'uso di un diagramma di flusso o ricorrendo a uno pseudocodice. Successivamente, nella fase di programmazione l'algoritmo così scritto verrà tradotto in linguaggio di programmazione a opera di un programmatore sotto forma di codice sorgente dando vita al programma che sarà eseguito dal calcolatore, eventualmente dopo un'ulteriore traduzione in linguaggio macchina. Particolare rilevanza teorica in tale ambito assume il teorema di Böhm-Jacopini che afferma che qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza, la selezione e il ciclo (iterazione), da applicare ricorsivamente alla composizione di istruzioni elementari. Nella pratica corrente il programmatore professionista nel suo lavoro svolge automaticamente questo processo di traduzione scrivendo direttamente il codice sorgente necessario nelle suddette modalità avendo già trovato la soluzione al problema dato.

Approccio matematico

Esistono numerosi modelli matematici di algoritmo. In generale, un algoritmo riceve un insieme di valori (dati) in input e ne genera uno in output (chiamato soluzione). Dato dunque un algoritmo A si denota con fA la funzione che associa a ogni ingresso x di A la corrispondente uscita.

Questa corrispondenza tra input e output non rappresenta il problema risolto dall'algoritmo. Formalmente, un problema è una funzione Algoritmo: Definizione, Approccio matematico, Strutture di dati  definita su insieme Di di elementi che chiameremo restanze, a valori su un insieme Ds di risoluzioni.

Lo studio di un algoritmo viene suddiviso in due fasi:

  1. sintesi (detta anche disegno o progetto): dato un problema A, costruire un algoritmo f per risolvere A, cioè tale che f=fa.
  2. analisi: dato un algoritmo f e un problema A, dimostrare che f risolve A, cioè f=fa (correttezza) e valutare la quantità di risorse usate da f (complessità concreta).

Formalizzazione di un problema

A ogni problema Algoritmo: Definizione, Approccio matematico, Strutture di dati  si ha che: Algoritmo: Definizione, Approccio matematico, Strutture di dati  dove Algoritmo: Definizione, Approccio matematico, Strutture di dati  sono le istanze del problema e Algoritmo: Definizione, Approccio matematico, Strutture di dati  sono le soluzioni e Algoritmo: Definizione, Approccio matematico, Strutture di dati  sia una soluzione al problema per l'istanza x.

Studio della complessità computazionale di un algoritmo

Algoritmo: Definizione, Approccio matematico, Strutture di dati  Lo stesso argomento in dettaglio: Teoria della complessità computazionale.

Un'ampia porzione della teoria degli algoritmi è lo studio della complessità, computazionale e spaziale. Vogliamo cioè sapere, al crescere della complessità del problema, in che modo cresce il tempo necessario a eseguire l'algoritmo e lo spazio di memoria occupato in un calcolatore.

La complessità di un algoritmo si misura asintoticamente. Vi sono quattro metodi per calcolare la complessità di un algoritmo:

Si definisce asintotica per due motivi

  • poiché ogni calcolatore può implementare algoritmi in modo differente, non si può stimare il tempo preciso
  • si vuole dare un'idea quantitativa di come l'algoritmo possa crescere in consumo di tempo all'aumentare dell'input, per valori sempre maggiori.

Presa una funzione associata a un algoritmo del tipo:

Algoritmo: Definizione, Approccio matematico, Strutture di dati 

si può definire la funzione peso come

Algoritmo: Definizione, Approccio matematico, Strutture di dati 

che esprime la dimensione dei dati in ingresso, ossia il numero di bit che servono per codificare i dati in input all'algoritmo. Ad esempio su un vettore la lunghezza dello stesso determinerà il numero di bit necessari a codificarlo e sulle matrici il numero dell'ordine, ossia presa ad esempio una matrice quadrata l'ordine della stessa è determinata da una delle due dimensioni (orizzontale oppure verticale).

La complessità di un algoritmo si definisce come:

Algoritmo: Definizione, Approccio matematico, Strutture di dati  che indica per ogni valore intero n (ossia la dimensione del problema) la quantità di tempo e/o spazio impiegata dall'algoritmo per elaborare dati di dimensione n. Un algoritmo può comportarsi in modo sensibilmente differente anche per istanze che abbiano ugual dimensione (ossia lo stesso peso).

Si dimostra che la complessità di un algoritmo è una funzione strettamente crescente, per quale vale Algoritmo: Definizione, Approccio matematico, Strutture di dati 

Infatti è banale dimostrare che Algoritmo: Definizione, Approccio matematico, Strutture di dati  tende all'infinito al crescere di Algoritmo: Definizione, Approccio matematico, Strutture di dati  (cioè del numero di dati da elaborare), perché essa è minorata da Algoritmo: Definizione, Approccio matematico, Strutture di dati  (è un Algoritmo: Definizione, Approccio matematico, Strutture di dati ) in quanto il numero minimo di spazi di memoria per memorizzare un insieme di dati è la sua cardinalità. Si noti che per le matrici sparse si deve considerare come numero di dati gli elementi non nulli.

Due misure per sistemi di calcolo sequenziali sono i valori Algoritmo: Definizione, Approccio matematico, Strutture di dati  e Algoritmo: Definizione, Approccio matematico, Strutture di dati  che rappresentano rispettivamente il tempo e lo spazio di memoria richiesti da un algoritmo Algoritmo: Definizione, Approccio matematico, Strutture di dati  su input Algoritmo: Definizione, Approccio matematico, Strutture di dati . Per la sopra citata proprietà il dominio Algoritmo: Definizione, Approccio matematico, Strutture di dati  deve dunque coincidere con l'insieme Algoritmo: Definizione, Approccio matematico, Strutture di dati . Possiamo pertanto considerare Algoritmo: Definizione, Approccio matematico, Strutture di dati  e Algoritmo: Definizione, Approccio matematico, Strutture di dati  come funzioni intere positive che rappresentano il numero di operazioni (non il tempo di esecuzione effettivo) elementari eseguite e dal numero di celle di memoria utilizzate durante l'esecuzione di Algoritmo: Definizione, Approccio matematico, Strutture di dati  sull'istante Algoritmo: Definizione, Approccio matematico, Strutture di dati .

Descrivere le funzioni Algoritmo: Definizione, Approccio matematico, Strutture di dati  e Algoritmo: Definizione, Approccio matematico, Strutture di dati  può essere molto complicato poiché la variabile Algoritmo: Definizione, Approccio matematico, Strutture di dati  assume valori sull'insieme di tutti gli input. Una soluzione che fornisce buone informazioni su Algoritmo: Definizione, Approccio matematico, Strutture di dati  e Algoritmo: Definizione, Approccio matematico, Strutture di dati  consiste nell'introdurre il concetto di dimensione di un'istanza, raggruppando in tal modo gli input che hanno la stessa dimensione: la funzione dimensione associa a ogni ingresso un numero naturale che rappresenta intuitivamente la quantità di informazione contenuta nel dato considerato. Per esempio la dimensione naturale di un intero positivo Algoritmo: Definizione, Approccio matematico, Strutture di dati  è Algoritmo: Definizione, Approccio matematico, Strutture di dati , cioè il numero di cifre necessario per rappresentare Algoritmo: Definizione, Approccio matematico, Strutture di dati  in notazione binaria. Analogamente la dimensione di un vettore di elementi è solitamente costituita dal numero delle sue componenti, mentre la dimensione di un grafo è data congiuntamente dal numero dei suoi nodi e dei suoi archi. La dimensione di Algoritmo: Definizione, Approccio matematico, Strutture di dati  si denota con Algoritmo: Definizione, Approccio matematico, Strutture di dati .

Dato un algoritmo Algoritmo: Definizione, Approccio matematico, Strutture di dati  su un insieme di input Algoritmo: Definizione, Approccio matematico, Strutture di dati , può accadere che due istanze Algoritmo: Definizione, Approccio matematico, Strutture di dati , Algoritmo: Definizione, Approccio matematico, Strutture di dati  di ugual dimensione cioè Algoritmo: Definizione, Approccio matematico, Strutture di dati . = Algoritmo: Definizione, Approccio matematico, Strutture di dati . diano luogo a tempi diversi di esecuzione per uno stesso algoritmo. Si parla dunque di complessità dell'input e se ne distinguono tre casi:

  1. complessità nel caso peggiore
  2. complessità nel caso medio
  3. complessità nel caso migliore

Il caso medio permette di studiare l'algoritmo in base alla frequenza Algoritmo: Definizione, Approccio matematico, Strutture di dati  con cui si verificano gli input e alla complessità Algoritmo: Definizione, Approccio matematico, Strutture di dati  dell'algoritmo per ciascuno di essi:

Algoritmo: Definizione, Approccio matematico, Strutture di dati 

Quando i casi sono tutti equiprobabili, il caso medio è calcolato come media aritmetica della complessità calcolata su tutti i possibili input:

Algoritmo: Definizione, Approccio matematico, Strutture di dati 

Ad esempio, in un algoritmo di ricerca lineare, se l'elemento cercato è il primo della lista ci troviamo nel caso migliore, Algoritmo: Definizione, Approccio matematico, Strutture di dati . La complessità nel caso medio è Algoritmo: Definizione, Approccio matematico, Strutture di dati . Nel caso peggiore l'elemento cercato è l'ultimo della lista: in questo caso Algoritmo: Definizione, Approccio matematico, Strutture di dati , ossia sono richiesti tutti gli Algoritmo: Definizione, Approccio matematico, Strutture di dati  passi per trovare la soluzione.

Il caso peggiore è quello che viene solitamente considerato per descrivere la complessità di un algoritmo. In alcuni casi (ad esempio il quicksort) viene considerato il caso medio, poiché il caso peggiore avviene molto raramente o addirittura con probabilità zero.

Complessità e stabilità

Controparte della complessità di un algoritmo, è la sua stabilità numerica: essa stabilisce quanto un algoritmo è "resistente" a degli insiemi di dati particolari. Ovviamente il discorso è generalmente correlato all'analisi numerica, e alle implementazioni di algoritmi su macchine specifiche, tuttavia potrebbero darsi algoritmi prettamente matematici che per alcuni dati forniscono risultati indeterminati, tipo Algoritmo: Definizione, Approccio matematico, Strutture di dati , mentre altri algoritmi equivalenti con gli stessi dati arrivano comunque a dare risposte: i primi sono meno stabili dei secondi. Un esempio sono i limiti calcolati col metodo canonico, oppure col metodo di De l'Hôpital.

Esempio: studio della complessità di risoluzione dei sistemi lineari

Algoritmo: Definizione, Approccio matematico, Strutture di dati  Lo stesso argomento in dettaglio: Sistema di equazioni lineari.

Vogliamo trovare un algoritmo efficiente per risolvere un sistema lineare di Algoritmo: Definizione, Approccio matematico, Strutture di dati  equazioni in Algoritmo: Definizione, Approccio matematico, Strutture di dati  incognite (anche 100, 1000...). Dobbiamo cioè valutare, tra tutti gli algoritmi risolutivi disponibili, quello che impiega meno tempo e consuma meno spazio degli altri. L'Algebra ci offre due importanti metodi risolutivi di enorme interesse ai fini dello studio della complessità degli algoritmi.

    NOTA
    negli esempi si tiene conto che il sistema sia univocamente determinato. In sede di approfondimento è possibile conoscere quali sono le condizioni affinché gli algoritmi che stiamo per esporre sono applicabili
Algoritmo: Definizione, Approccio matematico, Strutture di dati  Lo stesso argomento in dettaglio: Regola di Cramer.

La Regola di Cramer permette la risoluzione di un sistema lineare nel modo più semplice grazie a una singola definizione:

    Algoritmo: Definizione, Approccio matematico, Strutture di dati 

dove Algoritmo: Definizione, Approccio matematico, Strutture di dati  è la matrice formata sostituendo la i-esima colonna di Algoritmo: Definizione, Approccio matematico, Strutture di dati  con il vettore dei termini noti. Il determinante della matrice può essere calcolato a priori, dunque serve solo il calcolo di Algoritmo: Definizione, Approccio matematico, Strutture di dati  determinanti per risolvere il sistema. Il determinante è solitamente definito tramite lo sviluppo di Laplace, che fornisce direttamente un algoritmo ricorsivo:

    Algoritmo: Definizione, Approccio matematico, Strutture di dati 

dove Algoritmo: Definizione, Approccio matematico, Strutture di dati  è l'elemento di coordinate Algoritmo: Definizione, Approccio matematico, Strutture di dati  e Algoritmo: Definizione, Approccio matematico, Strutture di dati  è il minore ottenuto sopprimendo la Algoritmo: Definizione, Approccio matematico, Strutture di dati -esima riga e la Algoritmo: Definizione, Approccio matematico, Strutture di dati -esima colonna. La complessità di questo algoritmo per il calcolo del determinante è Algoritmo: Definizione, Approccio matematico, Strutture di dati , perché per ogni determinante di ordine Algoritmo: Definizione, Approccio matematico, Strutture di dati  si devono calcolare Algoritmo: Definizione, Approccio matematico, Strutture di dati  determinanti di ordine Algoritmo: Definizione, Approccio matematico, Strutture di dati .

Vengono perciò utilizzati altri algoritmi con complessità migliore. (Incidentalmente, tali algoritmi sono anche alla base di metodi più efficienti per il calcolo del determinante). Uno di questi è il metodo di eliminazione di Gauss, basato su due importanti principi.

Il primo è che due sistemi lineari

    Algoritmo: Definizione, Approccio matematico, Strutture di dati  e Algoritmo: Definizione, Approccio matematico, Strutture di dati 

sono uguali se Algoritmo: Definizione, Approccio matematico, Strutture di dati  si ottiene sostituendo le righe e le colonne di Algoritmo: Definizione, Approccio matematico, Strutture di dati  con loro combinazioni lineari e gli elementi di Algoritmo: Definizione, Approccio matematico, Strutture di dati  sono combinazioni lineari degli elementi di Algoritmo: Definizione, Approccio matematico, Strutture di dati  in base ai coefficienti di Algoritmo: Definizione, Approccio matematico, Strutture di dati .

Il secondo è che per risolvere un sistema triangolare (dove cioè la matrice dei coefficienti gode della proprietà di triangolarità) è sufficiente utilizzare l'algoritmo di sostituzione in avanti o all'indietro (la complessità computazionale è Algoritmo: Definizione, Approccio matematico, Strutture di dati ).

Si dimostra che per trasformare il sistema in triangolare occorre un algoritmo la cui complessità è Algoritmo: Definizione, Approccio matematico, Strutture di dati . Applicando a questo sistema l'algoritmo di sostituzione diretta si trovano le soluzioni esatte del sistema, e si dimostra che la complessità totale dell'algoritmo di Gauss è sempre Algoritmo: Definizione, Approccio matematico, Strutture di dati .

Per quanto riguarda la complessità spaziale:

  • l'algoritmo basato sulla regola di Cramer richiede soltanto una variabile aggiuntiva, dove memorizzare il determinante della matrice dei coefficienti, dunque la sua complessità è minima: Algoritmo: Definizione, Approccio matematico, Strutture di dati  (cioè Algoritmo: Definizione, Approccio matematico, Strutture di dati  per memorizzare la matrice dei coefficienti, Algoritmo: Definizione, Approccio matematico, Strutture di dati  per memorizzare il vettore dei termini noti e le soluzioni, più uno spazio anch'esso pari a Algoritmo: Definizione, Approccio matematico, Strutture di dati  per il calcolo dei determinanti)
  • l'algoritmo di Gauss non richiede altro spazio oltre a quello necessario per memorizzare la matrice dei coefficienti e il vettore dei termini noti. Al termine dell'algoritmo il vettore dei termini noti conterrà la soluzione. Pertanto la sua complessità spaziale è anch'essa minima: Algoritmo: Definizione, Approccio matematico, Strutture di dati .

Strutture di dati

Algoritmo: Definizione, Approccio matematico, Strutture di dati  Lo stesso argomento in dettaglio: Struttura dati.

La maggior parte degli algoritmi si avvalgono di tecniche per rappresentare ed organizzare i dati utilizzati nel calcolo e tali rappresentazioni, chiamate strutture dati, non sono necessariamente altrettanto sofisticate rispetto all'algoritmo che le usa: algoritmi semplici possono richiedere strutture dati complesse e viceversa.

Per agevolare ed astrarre la gestione e l'interazione di strutture dati complesse, vengono sviluppati appositi algoritmi che implementano le operazioni più comuni da svolgere su di esse. Esempi di strutture dati comuni sono i vettori, le liste, le code, le pile, gli alberi e i grafi.

Catalogazione degli algoritmi

Gli algoritmi vengono raggruppati e catalogati a seconda della loro funzione o delle tecniche utilizzate per realizzarli, tuttavia una catalogazione rigorosa e completa è ormai diventata impossibile

In informatica è possibile catalogare gli algoritmi in:

Molte categorie di algoritmi sono strettamente legate all'organizzazione dei dati in memoria (strutture dati).

Altri algoritmi

Note

Bibliografia

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autoritàThesaurus BNCF 21026 · LCCN (ENsh85003487 · GND (DE4001183-5 · BNE (ESXX527980 (data) · BNF (FRcb119358199 (data) · J9U (ENHE987007293927505171 · NDL (ENJA00560337

Tags:

Algoritmo DefinizioneAlgoritmo Approccio matematicoAlgoritmo Strutture di datiAlgoritmo Catalogazione degli algoritmiAlgoritmo NoteAlgoritmo BibliografiaAlgoritmo Voci correlateAlgoritmo Altri progettiAlgoritmo Collegamenti esterniAlgoritmoInformaticaIstruzione (informatica)Matematica

🔥 Trending searches on Wiki Italiano:

ZendayaFelipe AndersonMonica BertiniStrage di MarzabottoAlessandro BarberoMaurice TilletIl pianeta delle scimmieAnna Nicole SmithEpisodi di NCIS - Unità anticrimine (nona stagione)1970RussiaRoberto SavianoPatrizia ReggianiMattéo GuendouziNotte stellataCoppa del mondo per club FIFAAugustoMiguel de CervantesWayne RooneyAffari tuoiSarasSerie A 2020-2021Alessandro MagnoSpice GirlsCeceniaTokugawa IeyasuEmilia-RomagnaSerie C 2023-2024SiciliaAmadeus (conduttore televisivo)ToscanaMaltaElenoire CasalegnoNapoliGiancarlo SianiLeon FaunAlessandro ManzoniIranPreben Elkjær LarsenDavide CalabriaEdinson CavaniRiddick (film)Unbreakable - Il predestinatoSocietà Sportiva Calcio NapoliJannik SinnerMario CapannaIvan ZazzaroniStella (sport)American pit bull terrierS.W.A.T. (serie televisiva 2017)Silvio BerlusconiConca CasaleAssociazione Sportiva Dilettantistica NoveseJimmy FontanaVolt EuropaGossip Girl (serie televisiva)Napoleone BonaparteFrancesco RengaMarco LanducciBologna Football Club 1909Francesca FagnaniYann Aurel BisseckChecco ZaloneFederico II di SveviaFortapàscWyatt Earp (film)ItaliaHiroyuki SanadaC'è ancora domaniFallout 3LombardiaPallone d'oroDR Automobiles GroupeCristiano MalgioglioNBAPaulette GoddardFallout (serie televisiva)🡆 More