Un algoritmo è una sequenza di passi di elaborazione che consentono di trasformare un input dato in un determinato output. La natura dell'input e dell'output di un algoritmo dipendono strettamente dalla natura del problema che si vuole risolvere tramite l'algoritmo. Ad esempio, l'input e l'output di un algoritmo che risolve problemi matematici avranno una natura numerica, mentre l'input e l'output di un telaio meccanico che tesse una tela con un particolare disegno saranno rispettivamente rocchetti di filo e tessuti.Un passo di elaborazione (o, nel contesto informatico, passo computazionale) consiste in una singola operazione di trasformazione dei dati che può essere eseguita da un opportuno calcolatore (un essere umano, uno strumento meccanico, un calcolatore elettronico, ecc...) e che non è necessario (o ragionevole) suddividere in una sequenza di operazioni più semplici. Ad esempio, le operazioni aritmetiche di base possono essere passi computazionali validi per un essere umano o un calcolatore elettronico, mentre il movimento di un ingranaggio può essere un passo di elaborazione valido per uno strumento meccanico. Una proprietà che solitamente (non sempre) ci si aspetta che valga per un algoritmo è che esso sia deterministico, ossia che eseguendo l'algoritmo stesso ripetutamente sullo stesso input si ottenga sempre lo stesso output. Il determinismo è una caratteristica che ci consente di fidarci degli algoritmi: se calcolando più volte l'area dello stesso rettangolo potessimo ottenere risultati diversi, come potremmo fidarci dell'algoritmo che effettua quel calcolo nel progettare la struttura di un ponte o di un palazzo?
Temi
Computazione naturale
di Paolo Milazzo
30.06.2014
Questo articolo descrive il Natural Computing, un campo di ricerca interdisciplinare in cui la natura è fonte di ispirazione di nuove metodologie informatiche. Tale campo di ricerca è molto ampio e include temi anche molto diversi tra loro per finalità e mezzi utilizzati. Ad esempio, si hanno temi di ricerca in cui si usa la teoria dell'evoluzione delle specie per risolvere problemi di matematica computazionale, altri in cui si usa il DNA per eseguire algoritmi molto complessi con prestazioni fuori dalla portata di un calcolatore elettronico, e altri in cui si usano i modelli matematici e computazionali per comprendere i meccanismi alla base del funzionamento delle cellule. I temi trattati nell'ambito del Natural Computing possono essere raggruppati in due categorie principali: (i) nuovi modelli e metodi informatici ispirati da fenomeni naturali, e (ii) applicazione di modelli e metodi informatici per lo studio di fenomeni naturali. L'obiettivo della ricerca sui temi della prima categoria è quindi far progredire l'informatica utilizzando la natura come fonte di ispirazione, mentre la ricerca sui temi della seconda categoria mira a far progredire le scienze naturali tramite l'utilizzo di strumenti informatici. Lo scopo di questo articolo non è descrivere i temi del Natural Computng in maniera esaustiva, ma fornire al lettore una descrizione concreta di cosa si voglia e si possa ottenere in questo campo di ricerca focalizzandosi su due temi specifici ma rappresentativi: "Evolutionary Computation" e "DNA Computing".