Robotica: capire gli algoritmi

Cifre e Algoritmi: la base dell'informazione

Robotica: capire gli algoritmi

di Sergio Ragaini. Dopo esserci dedicati alla robotica, nella prima puntata, su cosa vuol dire per una macchina elaborare informazione, cerchiamo di capire come questa viene immagazzinata

roboticaNella parte precedente di questo lavoro abbiamo introdotto che cos'è l'automazione ed in che cosa consiste lavorare in maniera automatica. Abbiamo, credo, compreso abbastanza in profondità come automatizzare voglia dire comprendere il processo che si trova dietro un meccanismo di un certo tipo, e renderlo automatico.
La piena comprensione degli elementi ripetitivi che ci sono dietro un processo sarà fondamentale. La cosiddetta “robotica” si basa quindi, prima che su un meccanismo, sullo studio e la comprensione di un processo in tutti quei suoi elementi, in qualche maniera ripetitivi, che sottostanno al meccanismo stesso.
Ora ci preoccuperemo di formalizzare meglio tutto questo, cercando di comprendere come un meccanismo di questo tipo possa agire e funzionare correttamente. Cercheremo, quindi, di passare da un'idea astratta di processo a quei passi che servono per farlo diventare meccanismo. Quindi, cercheremo di comprendere come si può passare da una serie astratta di formalizzazioni alla modalità che queste formalizzazioni astratte hanno di essere messe in pratica e di funzionare correttamente.
Passeremo, quindi, dalla formalizzazione teorica a qualcosa che già ci condurrà sulla strada per l'automazione, verso i robot oggi più avanzati. E verso quelli del divenire, che è già, in parte, oggi iniziato.

È tutta questione di... algoritmi

Muhammad ibn Musa al-Khwarizmi (780-850).

La prima cosa di cui ci occuperemo è del concetto di algoritmo, vale a dire di come un processo possa essere scritto ed elaborato, in maniera da divenire eseguibile. Comprenderne il significato è, in parte, la chiave d'accesso all'automazione e alla robotica.
La parola prende il nome dal matematico persiano (780- 850),  un'importante figura di riferimento della matematica di tutti i tempi. Infatti, è stato l'inventore dei cosiddetti “numeri arabi”, il sistema di numerazione che noi usiamo abitualmente.
E sarà proprio di questo che ora parleremo. Cominciando da una riflessione, le cifre, appunto, alla  base dell'automazione. Cifre molto particolari, che permettono la codifica dell'informazione in maniera  semplice ed immediata.
Torniamo rapidamente alla figura di questo grande matematico persiano, proveniente da una zona del pianeta dove la matematica ha avuto una grandissima fioritura. Ricordiamo, infatti, che i numeri negativi sono dovuti all'indiano Brahmagupta, nel sesto secolo d.C. E che lo stesso numero zero, come etimologia, deriva dalla parola sifr, un vento che spira in India in certi periodi dell'anno. Poiché rappresenta l'annullamento, nell'elaborazione elettronica ha un'importanza fondamentale, perché indica lo stato di “off”,  spento, non attivo. Fondamentale per denotare l'attività.
Ritornando al matematico persiano, a lui si deve il nome Algebra, che deriva da Al Jabr, uno dei metodi indicati da Al Khwarizmi per risolvere le equazioni di secondo grado (l'altro è al muqabala).
A questo matematico si deve, come dicevo, l'invenzione dei cosiddetti “numeri arabi”. La caratteristica di questo sistema numerico è proprio quello che le cifre, a seconda di come sono scritte, hanno un “peso” differente. A dire il vero questo accadeva anche nei numeri romani. Infatti, scrivere un numero a destra o a sinistra di un altro aveva un effetto additivo o sottrattivo (basti pensare ai numeri VI = 6 o IV = 4).
Nel caso dei numeri che usiamo solitamente la struttura è simile, ma tutto questo viene ancora più accentuato. Infatti la posizione del numero sarà fondamentale. A mano a mano che ci spostiamo a sinistra, infatti, il valore delle cifre viene moltiplicato per 10: ad esempio, se scriviamo 123 è come scrivere 3x1 + 2x10 + 1x100.
Da qui si evince anche cosa vuol dire che “contiamo in base 10”. La “base”, dal punto di vista matematico, è un insieme di elementi, che fanno parte di un insieme, tali per cui tutti gli altri possono essere ottenuti “combinando” quegli elementi. Questo concetto è stato reso fondamentale dalla parte della matematica che si chiama “algebra lineare”, dove lo scopo è proprio quello di identificare un numero di elementi (detto “dimensione”) tale per cui tutti gli altri si possono scrivere combinando questi.
Nel caso dei numeri avviene la stessa cosa: possiamo ottenere qualsiasi numero combinando elementi del tipo 1, 10, 100, 1000, e così via. Per scrivere il tutto in maniera più matematica possiamo scrivere: 100, 101, 102, 103,....... Il massimo valore dell'esponente di 10 ci fornirà il valore di riferimento del numero, o il suo ordine. Ad esempio, se questo è 3, avremo un numero dell'ordine delle migliaia. Quindi, la “dimensione” di questi insieme è + dato dal numero delle cifre: un numero dell'ordine delle decine avrà dimensione 2, uno dell'ordine delle centinaia 3 e così via.
Formalizzando matematicamente la cosa, un numero scritto come a0a1.....an potrà essere scritto come somma di elementi del tipo: ak10n-k.

La formalizzazione, data per chiarezza matematica, non è fondamentale per comprendere il discorso generale. Ci serve solo per motivi di tipo matematico.
Ora è interessante notare che tutto questo si può facilmente generalizzare, nel senso che al posto di 10 si può inserire un valore qualsiasi b. Quindi, un numero può diventare una scrittura del tipo: akbn-k. Dove b sarà la nuova “base di numerazione”. La base, quindi, è data dal numero delle cifre a partire dalle quali si costruisce il numero.
Nel caso particolare del Sistema Decimale abbiamo b = 10.infatti utilizziamo le cifre da 0 a 9. In generale, se b è un numero qualsiasi, si utilizzeranno le cifre da 0 a b-1. Infatti, come credo si sarà compreso, lo 0 non deve mai mancare in un sistema di numerazione. E, siccome lo zero da solo non ha significato, occorrerà aggiungere almeno un'altra cifra. Da qui deduciamo che il numero minimo di elementi in una base di numerazione dovrà essere 2. Questo discorso è tutt'altro che avulso dal discorso sull'informazione. Infatti, vi saranno dei numeri, tra quelli scelti, che saranno fondamentali nell'informazione e nella sua codifica.

Robotica: come si scrive un algoritmo
Prima di vedere questi elementi cerchiamo di comprendere cos'è un algoritmo e cosa significhi scriverne uno, anche se in parte questo argomento è già stato trattato nella prima puntata. Ora sarà interessante precisarlo e formalizzarlo ulteriormente. Come dicevamo, per poter formalizzare un processo che poi verrà automatizzato occorre avere elementi che si possono ripetere, elementi molto semplici da poter “spiegare” ad una macchina che, pur essendo molto veloce, sa solo eseguire delle operazioni (anche se poi, quando parleremo di intelligenza artificiale, vedremo che non è sempre vero).
Possiamo quindi definire un algoritmo come un insieme di operazioni che permettono di svolgere una determinata funzione. Operazioni molto semplici, che possono essere formalizzate in maniera molto precisa.
La nostra mente, infatti, lavora a blocchi (ma anche “in parallelo”). Occorre un qualcosa che separi i singoli elementi di un'elaborazione, in modo tale che una macchina, che lavora in “seriale” (un processo dopo l'altro) sia in grado di elaborare.
Anche in questo, vedremo nel proseguo di questo lavoro come come l'elaborazione parallela, almeno in parte, possa già appartenere alla macchina. E forse sarà questo il segreto per “volare” verso macchine che pensino come l'uomo. Un “volo” che, comunque, affronteremo in un'altra puntata e del quale stiamo gettando le basi, costruendo i “motori” per poterlo effettuare al meglio. Anche se questi elementi sembrano distanti dallo scopo che vogliamo raggiungere, vedrete che ci permetteranno di poterlo fare al meglio.

Per fare un algoritmo ditegli tutto, proprio tutto

roboticaTornando al nostro discorso iniziale sulla robotica, un algoritmo è una sequenza di operazioni che una macchina può eseguire in maniera molto veloce. Ma che devono essere spiegate dettagliatamente. È, quindi, un procedimento per fare una cosa in maniera automatica.
Una volta capito un processo che andrà eseguito, costruire un algoritmo è costruire una serie di operazioni che permetteranno di svolgere quella cosa anche a coloro che, di quella cosa, non sanno nulla.
Come si può vedere, tutto questo è fortemente collegato anche alla robotica. Infatti, anche quando vogliamo realizzare un automa, sarà fondamentale dirgli “tutto, ma proprio tutto” quello che deve fare, descrivendo ogni suo singolo movimento.
In questo caso, come ben si può pensare, ogni singolo movimento potrà essere descritto da strutture matematiche, che descrivano accuratamente ogni singolo movimento possibile. Per questo i corsi di robotica implicano notevoli conoscenze fisiche e matematiche. Come visto, infatti, la formalizzazione avviene prima in termini di processi, poi in termini di meccanismi e infine di strutture. Dove, comunque, conteranno molte cose, tra cui i materiali.
È sempre dai processi, in ogni caso, da cui occorre partire. I processi ci diranno moltissime cose su come le strutture di riferimento funzionano. In fondo, la costruzione di robot intelligenti è questione, più che di materiali, proprio di riuscire ad implementare, anche grazie a strutture fisiche di elaborazioni sempre più potenti ed efficaci, un serie di processi sempre più precisi. Oltre che di costruire macchine in grado, in qualche modo, di operare delle scelte.

Sarà proprio questa la chiave: avere macchine in grado di scegliere le operazioni da svolgere. Di prendere, insomma, delle decisioni. Vedremo, anche qui, come fare per avere tutto questo. E tracciare un possibile cammino verso il divenire che ci aspetta, e che ci rivelerà, come spesso accade, le cose più belle.

Per saperne di più sulla robotica:
Un'interessante biografia di Al Kwarizmi: http://www.orientalistica.it/?p=2998
Algoritmi (Università di Torino): http://elearning.moodle2.unito.it/dstf/pluginfile.php/12210/mod_resource/content/1/0A-algoritmi.pdf
Codifica binaria e rappresentazione dell'informazione (Politecnico di Milano): http://home.deib.polimi.it/amigoni/teaching/CodificaBinariaInformazione.pdf

Codifica Binaria (Youtube): https://www.youtube.com/watch?v=x8toYvrggKE
Codifica dell'informazione (Università di Torino): http://www.di.unito.it/~patti/teaching/CodificaInfo1-0405.pdf
Sistemi Digitali (Politecnico di Milano): http://home.deib.polimi.it/silvano/FilePDF/ArchI/Rosti_Sistemi_digitali.pdf

 Articoli correlati sulla robotica: Robot: è già futuro