Algoritmi


In prima approssimazione, diciamo subito che il concetto di algoritmo ha a che vedere  con un "insieme di norme da seguire per fornire una corretta risposta a una specifica domanda". In realtà, si tratta di particolari procedure di calcolo, ben definite e determinate, che prevedono una serie di operazioni matematiche in rigorosa successione temporale ,in modo tale che se si prendono alcuni valori di entrata si riesce a produrre altri dati di uscita che soddisfano determinate caratteristiche precedentemente prefissate. In un certo senso un algoritmo è «un modello matematico deterministico», nel senso che esso presuppone una ben precisa e rigorosa catena di eventi, del tipo di causa ed effetto, che deve portare a un risultato prevedibile e certo. Esso è, pertanto, uno strumento matematico per risolvere un definito problema computazionale. 

Realizzare un algoritmo significa, quindi, inventare un "procedimento di calcolo" attraverso il quale da alcuni dati in entrata (input) si ottengono altri dati in uscita (output) che soddisfano delle condizioni previste ed esplicitate nella definizione del problema. 

Il termine è stato introdotto alla fine degli anni '60  in relazione all'utilizzo dei calcolatori elettronici che permettevano di realizzare per la prima volta nella storia della Matematica, in modo veloce e sicuro, catene di operazioni ben definite mediante le quali ottenere un risultato previsto e prevedibile.  

Non vi è una vera e propria etimologia del termine, perchè la sua origine proviene dal nome del famoso matematico arabo  Muhammed ibu Musa (IX secolo)  che si occupò di "procedimenti di calcolo" nel campo delle operazioni matematiche. "Al-Khuwurizmi" visse nel Medioevo, intorno al IX secolo, e pubblicò un libro dal titolo Hisab al-jabr w'al-umqabala nel quale descrisse alcuni processi algoritmici.

Un algoritmo è rappresentato, dunque, da una «successione finita di passi, chiamati istruzioni, che indicano le operazioni da compiere sui dati al fine di risolvere una classe generale di problemi». 

È prassi costante caratterizzare un algoritmo mediante alcune proprietà matematiche ben precise che sono:

Facciamo un semplice esempio. Consideriamo un algoritmo di ordinamento di una serie di numeri. Partendo dalla serie di numeri disordinati

1, 77, 3, 54, 37

si opera per ottenere la stessa serie di 5 numeri questa volta però ordinati in modo crescente:

1, 3, 37, 54, 77

o in modo decrescente:

77, 54, 37, 3, 1 .

Per togliere ambiguità alle singole frasi, dove una stessa parola può assumere significati diversi a seconda del contesto in cui si trova inserita, spesso si ricorre a una normalizzazione della struttura algoritmica, mediante simboli o diagrammi grafici che non lasciano dubbi o diverse interpretazioni e, nello stesso tempo, visualizzano il susseguirsi delle operazioni che trasformano i dati iniziali d'entrata del problema nei risultati finali desiderati in modo sintetico.

A questo proposito, un esempio classico di algoritmo è l'uso di diagrammi a blocchi o diagrammi di flusso. Presentiamo un esempio famoso e molto utilizzato nel campo dell'Algebra per la risoluzione di una equazione di 2° grado a un'incognita. Cioè, presentiamo di seguito l'algoritmo, inteso come una successione deterministica di istruzioni di calcolo per la risoluzione di una equazione di secondo grado a un'incognita che rappresenta il problema da risolvere.

Questo significa che scelti tre numeri reali a, b e c in entrata, l'algoritmo permette di dare la soluzione di una equazione di 2° grado a un'incognita fornendo i valori della soluzione,  costituita da una coppia di numeri x1 e x2. Ecco di seguito la traduzione in diagramma a blocchi dell'algoritmo scelto.

 

 


Torna alla pagina precedente