Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Informatica e Computazione, Dispense di Informatica

Informatica e calcolo computazionale

Tipologia: Dispense

2018/2019

Caricato il 10/12/2019

raffaele1967
raffaele1967 🇮🇹

5

(2)

18 documenti

1 / 17

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Breve Panoramica Terminologica ......................................................................................................................1
SISTEMA...........................................................................................................................................................2
PROCESSO........................................................................................................................................................3
MODELLO ........................................................................................................................................................3
AUTOMA ..........................................................................................................................................................4
LINGUAGGI REGOLARI.................................................................................................................................5
ELABORATORE...............................................................................................................................................5
Modelli Computazionali: la MACCHINA di TURING.....................................................................................6
ALGORITMO....................................................................................................................................................8
SCHEMA A BLOCCHI.....................................................................................................................................8
PROGRAMMAZIONE STRUTTURATA.......................................................................................................9
Sviluppo TOP-DOWN .......................................................................................................................................9
IMPLEMENTAZIONE....................................................................................................................................10
LINGUAGGI di PROGRAMMAZIONE.........................................................................................................10
INTELLIGENZA ARTIFICIALE....................................................................................................................11
ROBOTICA......................................................................................................................................................13
RETI NEURALI...............................................................................................................................................14
Algoritmi GENETICI e Logica FUZZY ..........................................................................................................16
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Anteprima parziale del testo

Scarica Informatica e Computazione e più Dispense in PDF di Informatica solo su Docsity!

  • Breve Panoramica Terminologica ......................................................................................................................
  • SISTEMA...........................................................................................................................................................
  • PROCESSO........................................................................................................................................................
  • MODELLO ........................................................................................................................................................
  • AUTOMA ..........................................................................................................................................................
  • LINGUAGGI REGOLARI.................................................................................................................................
  • ELABORATORE...............................................................................................................................................
  • Modelli Computazionali: la MACCHINA di TURING.....................................................................................
  • ALGORITMO ....................................................................................................................................................
  • SCHEMA A BLOCCHI .....................................................................................................................................
  • PROGRAMMAZIONE STRUTTURATA .......................................................................................................
  • Sviluppo TOP-DOWN .......................................................................................................................................
  • IMPLEMENTAZIONE ....................................................................................................................................
  • LINGUAGGI di PROGRAMMAZIONE.........................................................................................................
  • INTELLIGENZA ARTIFICIALE ....................................................................................................................
  • ROBOTICA......................................................................................................................................................
  • RETI NEURALI...............................................................................................................................................
  • Algoritmi GENETICI e Logica FUZZY ..........................................................................................................

Breve Panoramica Terminologica

INFORMAZIONE L'informazione è la conoscenza di una certa realtà. L'informazione può essere pensata composta dalla PERCEZIONE (rilevamento fisico del fenomeno) e dal MESSAGGIO (comunicazione ). Le informazioni si comunicano mediante un linguaggio, delle immagini, dei suoni, etc. Più in generale si può dire che esse vengono comunicate con dei messaggi che le rappresentano, che i simboli rappresentano i significati da trasmettere. Ogni disciplina ha proprie codifiche per esprimere, conservare ed elaborare l'informazione ad essa inerente. In matematica, ad esempio, le cifre sono dei simboli che servono per rappresentare dei numeri, cioè dei significati, delle nozioni astratte.

SISTEMA

Un sistema è un insieme organico di elementi, associati secondo un criterio di interazione-legge, che concorrono alla composizione di un'unica entità e/o al perseguimento di un fine comune. Ciascun elemento è separabile ed indipendente e può a sua volta essere un SOTTOSISTEMA.

MODELLO

Un modello è la rappresentazione (descrizione) semplificata di un sistema o di un processo che viene fatta allo scopo di facilitarne l'analisi e la valutazione (senza dover realizzare fisicamente il sistema). Costruire un modello ha l'effetto collaterale di semplificare la realtà che si vuol rappresentare, di impoverirla. Possono esistere più modelli che rappresentano lo stesso sistema.

PROCESSO

Un processo è una azione complessa composta da una sequenza di azioni semplici, cioè una serie di azioni che concorrono al raggiungimento di un certo risultato.

AUTOMA Un automa è un SISTEMA che non necessita di controllo umano, che è autonomo nell'espletamento delle proprie funzioni. Agli stessi INGRESSI risponde con le stesse USCITE.

ELABORATORE L' elaboratore , o computer , è un "automa a stati finiti, deterministico e discreto"

INFORMATICA L' informatica ( informazione automatica ) o scienza dell'informazione , è la scienza sorta con l'avvento degli elaboratori elettronici. Essa studia il TRATTAMENTO ELETTRONICO DELL'INFORMAZIONE, cioè i metodi e gli strumenti che servono a raccogliere, organizzare, elaborare, archiviare e distribuire l'informazione. Per ELABORAZIONE si intende l'uso dell'informazione e dei dati per giungere ad altri dati (o risultati) mediante processi logici, deduttivi o matematici. Per ARCHIVIAZIONE si intende la conservazione organizzata di dati utilizzabili in futuro. Per DISTRIBUZIONE si intende lo smistamento dei dati e delle informazioni a chi servono, dove servono, quando servono.

CIBERNETICA La cibernetica è la scienza che studia i sistemi automatici di controllo e di regolazione (nelle macchine, negli animali, nell'uomo).

INTELLIGENZA ARTIFICIALE L'intelligenza artificiale è la scienza che studia come ottenere dagli elaboratori prestazioni ritenute tipiche dell'intelligenza umana, come giocare a scacchi o fare diagnosi mediche.

PROCESSO

Un processo è una azione complessa composta da una sequenza di azioni semplici, cioè una serie di azioni che concorrono al raggiungimento di un certo risultato. Un processo è sequenziale quando le azioni elementari che lo compongono vengono eseguite in sequenza. Un esempio di processo può essere una serie di calcoli eseguiti secondo un determinato sistema di numerazione per pervenire ad un ben determinato valore del risultato (sommatoria, media aritmetica, etc. etc.).

Si può quindi vedere un SISTEMA come un'entità più o meno complessa atta ad eseguire dei PROCESSI, oppure si può dire che il SISTEMA deve eseguire determinati PROCESSI per conseguire i propri obiettivi.

MODELLO ........................................................................................................................................................

Un modello è la rappresentazione (descrizione) semplificata di un sistema o di un processo che viene fatta allo scopo di facilitarne l'analisi e la valutazione (senza dover realizzare fisicamente il sistema). Costruire un modello ha l'effetto collaterale di semplificare la realtà che si vuol rappresentare, di impoverirla. Possono esistere più modelli che rappresentano lo stesso sistema.

I MODELLI possono essere: o Fisici o Reali (costituiti da elementi del mondo fisico), a loro volta classificabili in

  • Iconici (esempio: plastico di una costruzione)
  • Analogici (esempio: barometro a mercurio) o Astratti o Simbolici (che si servono di un linguaggio matematico, grafico o di programmazione), a loro volta classificabili in
  • Matematici (esempio: formule che descrivono un circuito elettrico, che è un sistema dinamico, continuo, deterministico)
  • Grafici (esempio: schema a blocchi)
  • Logici o Algoritmici (esempio: simulazione di sistemi reali tramite programmi)

Si può costruire un modello seguendo due approcci diversi: costruire un modello che corrisponda in ogni particolare al sistema in esame (studiando accuratamente tutti i dettagli e tutte le componenti del sistema); costruire un modello che non consideri i dettagli del sistema, ma che "simuli" il funzionamento del sistema.

Ricapitolando, un modello, come precedentemente illustrato, può essere fisico - iconico (il classico "modellino"), analogico (riproduce il sistema in scala ridotta) - o astratto/simbolico – matematico (ad esempio i(t)=R-1xE(t) rappresenta il circuito elettrico t con resistenza R e forza elettromagnetica E e S=1/2AT^2 rappresenta il modello del moto di un corpo in caduta libera), grafico (grafo di transazione, schema a blocchi), logico (programmi di simulazione).

Per modelli matematici è sempre possibile definire un ALGORITMO che ne descriva le funzioni. Tale algoritmo, per quanto complesso, sarà sempre risolubile mediante un programma eseguito dall’elaboratore.

AUTOMA ..........................................................................................................................................................

Un automa è un SISTEMA che non necessita di controllo umano, che è autonomo nell'espletamento delle proprie funzioni. Agli stessi INGRESSI risponde con le stesse USCITE. Risponde alle sollecitazioni dell'utente senza che questi sia vincolato a conoscerne il funzionamento interno.

I PROCESSI avviati agli ingressi sono DETERMINISTICI ed il sistema ha un numero finito di STATI INTERNI, di INGRESSI e di USCITE; a ciascun ingresso è associato un nuovo stato interno prodotto da un processo a partire dallo stato interno precedente.

Gli automi possono essere automi A STATI FINITI o automi RICONOSCITORI.

Un AUTOMA A STATI FINITI è un sistema dinamico con:

  • un insieme finito di ingressi
  • un insieme finito di uscite
  • un insieme finito di stati interni
  • una funzione che associa ad ogni coppia INGRESSO/STATO un altro STATO INTERNO
  • una funzione che associa ad ogni STATO una USCITA.

Un AUTOMA è quindi un sistema deterministico, limitato all'esecuzione di una gamma ben precisa di processi, prevedibile in ogni sua uscita per qualunque ingresso.

Un AUTOMA RICONOSCITORE è un tipo particolare di automa in grado di riconoscere se una stringa fa parte o meno di un determinato linguaggio.

Il modello dell'automa è rappresentato mediante un grafo dove i nodi (ovali) rappresentano gli stati interni (attesa di X lire), gli archi (frecce) rappresentano le transazioni o azioni (passaggio da uno stato all'altro in seguito al verificarsi di un evento, cioè all'introduzione di monete), INGRESSO/USCITA rappresenta una azione di ingresso (INGRESSO, monete) e di relativa uscita (USCITA, niente o biglietto [ B ]). Per semplicità non viene considerato il resto.

Esempio di Automa a Stati Finiti : macchinetta emettitrice di biglietti (uscita) di autobus, ogni biglietto (B) costa 500 lire, sono previste monete (ingressi) da 500, 200 e 100 lire.

Attesa 500 Attesa 400

Attesa

Attesa 100 Attesa 200

300

100/

200/ 100/

200/^ 100/

200/

100/

100/ B

200/ B

500/ B

I = { 100, 200, 500 }

U = { B (biglietto) } S = { Attesa 500, Attesa 400, Attesa 300, Attesa 200, Attesa 100 }

Modelli Computazionali: la MACCHINA di TURING.....................................................................................

Un modello computazionale è un formalismo matematico in cui viene rappresentato in modo astratto, ma preciso, un particolare modo di intendere il concetto di input, di output, di passo elementare di computazione e di come organizzare un insieme di passi elementari di computazione in una descrizione di un procedimento effettivo (algoritmo) che permetta di rendere esplicito il contenuto informativo all'inizio presente solo in forma implicita. Un modello computazionale di un qualche processo è, in ultima analisi, niente più che un programma per computer che si vuole che si comporti in modo da riprodurre il comportamento del processo che deve essere modellato La teoria della computabilità si occupa dell’analisi degli algoritmi per decidere sulla loro computabilità (o decidibilità), cioè se siano o meno risolvibili indipendentemente dalla macchina fisica sulla quale saranno eseguiti. I modelli computazionali storicamente sviluppati e studiati mediante modelli matematici sono numerosi: logico, basato sulla logica matematica (Gödel); funzionale, basato sul calcolo delle funzioni, lambda-calcolo (Church), operazionale, basato su una macchina astratta (Turing). Le Macchine di Turing sono automi, ed in particolare automi con la massima potenza computazionale (la "Macchina di Turing" è una macchina astratta, non fisica). Problema della Terminazione: è possibile stabilire a priori se un programma P, dato un ingresso consentito X, terminerà o meno la propria esecuzione in un tempo finit o? Alan Turing ha dimostrato che il problema dell’Arresto è indecidibile.

Macchina di TURING

Nel 1936 il matematico inglese Alan Turing, nel tentativo di formalizzare la nozione di procedura effettiva , analizzò il comportamento di un essere umano quando risolve un problema di calcolo seguendo un metodo meccanico e ne dedusse che una macchina per computare deve disporre di:

  • di un nastro [memoria] infinito , suddiviso in celle, ciascuna capace di contenere un simbolo;
  • di una testina movibile , atta a leggere e/o scrivere quintuple sul nastro;
  • di una scatola nera, nota come controllo finito , per memorizzare lo stato corrente.

Le operazioni elementari che una tale macchina deve essere in grado di eseguire sono:

  • cambiare il simbolo sotto la testina;
  • spostare la testina in modo da agire su una delle celle adiacenti a quella corrente.

Inoltre la macchina deve, a seconda dello stato corrente e del simbolo letto dalla testina:

  • cambiare il simbolo sotto la testina e lo stato corrente e spostare la testina di una cella.

Per consentire alla macchina di scegliere, in base alla situazione corrente, quale azione eseguire, è necessario dotarla di un programma , inteso come insieme di regole, dette quintuple [istruzioni], della forma ( q1, a, b, M, q2 ) da interpretare come segue:

Nello stato q1 , leggendo il simbolo a , passa allo stato q2 e scrivi il simbolo b sul nastro, poi sposta la testina come specificato da M (S -s inistra, D-destra, I-inerte).

Esempio: MdT che verifica se il numero di "1" presenti in una stringa binaria x {0,1} lunga a piacere e terminante con "#" è pari o dispari.

X è del tipo "001010011010#" e viene letta da sinistra a destra, un carattere alla volta.

La MdT, dopo aver letto il simbolo "#" di fine stringa produce il risultato scrivendo sul nastro "P" (numero di 1 pari) o "D" (numero di 1 dispari).

Stati Q = {q 0 ,q 1 } (q 0 stato di parità, q 1 stato di disparità)

q 0 q 0 →→→→ destra q 1 →→→→ destra destra →→→→ output "P" q 1 q 1 →→→→ destra q 0 →→→→ destra destra →→→→ output "D" Funzione di transizione rappresentata con la tabella di transizione

Macchina di TURING UNIVERSALE

Turing definì anche una Macchina di Turing Universale (MdTU) capace di simulare il comportamento di qualsiasi altra macchina di Turing. Tale MdTU ha in ingresso due stringhe, una (S1) è l’insieme delle quintuple che definiscono la specifica MdT da simulare, l’altra (S2) è l’insieme degli input della MdT da simulare. La MdTU si sposterà continuamente dall’una all’altra per eseguire la MdT che sta simulando. Mentre una "normale" MdT (Macchina di Turing) esegue un unico algoritmo incorporato nella tabella di transizione, una MdTU (Macchina di Turing Universale) è una macchina programmabile che può eseguire un qualsiasi MdT, quindi qualsiasi algoritmo. La MdTU può essere considerata la schematizzazione di un computer reale che esegue i programmi (S1) che a loro volta lavorano su dei dati in input (S2).

Computabilità : un problema è risolubile o computabile o calcolabile se, dati in ingresso certi valori, è possibile determinare una funzione f che metta in relazione tali dati con un risultato.

Tesi di Church-Turing : " se un problema è intuitivamente calcolabile, allora esisterà una MdT- Macchina di Turing ( o un dispositivo equivalente, come il computer ) in grado di risolverlo ( cioè di calcolarlo )". Più formalmente si può dire che " la classe delle funzioni calcolabili coincide con quella delle funzioni calcolabili da una MdT ". O ancora: " ogni funzione calcolabile con un algoritmo è calcolabile da una MdT ". O ancora: " per ogni problema calcolabile esiste una MdT che lo risolve " [Alonzo Church, matematico statunitense]

In sostanza, non esiste alcun alcun formalismo capace di risolvere una classe di problemi più ampia di quelli risolti da una macchina di Turing.

PROGRAMMAZIONE STRUTTURATA .......................................................................................................

La stesura dell’algoritmo risolutore è una delle fasi fondamentali della programmazione. Per realizzare algoritmi leggibili e di buon livello di qualità – traducibili poi con i moderni linguaggi di programmazione – si debbono rispettare le regole della "programmazone strutturata" che si riassumono nei tre costrutti principali di SEQUENZA, TEST ed ITERAZIONE secondo i quali realizzare l’algoritmo (e secondo i quali ogni algoritmi deve poter essere scomposto):

Sviluppo TOP-DOWN .......................................................................................................................................

Un buon approccio a problematiche complesse è il metodo dei raffinamenti successivi o sviluppo Top-Down , dall’alto in basso. Tale metodo consiste nel suddividere il problema principale in sottoproblemi – sottoprogrammi – più semplici che possono essere affrontati separatamente. In questo modo inizialmente si concentra l’attenzione sul problema principale e si individuano i sottoproblemi che lo compongono. In un secondo tempo si affrontano, uno alla volta, i singoli sottoproblemi concentrandoci esclusivamente su ciascuno di essi, potendoci astrarre dalla problematica generale precedentemente organizzata. Ogni sottoproblema, a sua volta, può essere scomposto in altri sottoproblemi.

sequenza

A

B

X

A

test

condizione

B

A

condizione

condizione

corpo del ciclo

iterazione

condizione

corpo del ciclo

Sottoproblema

IMPLEMENTAZIONE ....................................................................................................................................

Con il termine implementazione si intende il trasferimento di un problema sul sistema di elaborazione, cioè la realizzazione di un modello/ algoritmo formalizzato in modo tale da poter essere codificato - utilizzando un linguaggio di programmazione - per produrre un programma ( software ) che rappresenti e gestisca il problema sul computer ( hardware ).

Vediamo qui di seguito le fasi principali dell’implementazione.

  • La prima cosa da fare è l’ANALISI della problematica.
  • Il risultato di questa analisi è l’ALGORITMO risolutore, formalizzato con uno dei metodi a ciò preposti, ad esempio mediante Schema a Blocchi.
  • Il passo ulteriore consiste nella CODIFICA di tale algoritmo (utilizzando uno dei LINGUAGGI di PROGRAMMAZIONE esistenti) per produrre il relativo PROGRAMMA ( software ).
  • Il PROGRAMMA, opportunamente tradotto in "linguaggio macchina", viene eseguito ed elaborato dal COMPUTER ( hardware ).

LINGUAGGI di PROGRAMMAZIONE.........................................................................................................

Per realizzare il programma - da eseguire nel computer - che codifica l’algoritmo occorre utilizzare un Linguaggio di Programmazione. Generalmente, per "linguaggio di programmazione" si intende un linguaggio ad alto livello , più vicino al programmatore. Ne esistono moltissimi, tra i quali citiamo Fortran (anni ’50), Cobol (anni ’60), Algol (anni ’60), Basic (anni ’70), Pascal (anni ’70), C (anni ’70), C++ (anni ’80), Java (anni ’90), Delphi (anni 90), Visual Basic (anni ’90). Il linguaggio può essere procedurale, pilotato da eventi, visuale, orientato agli oggetti.

Il computer, basato sulla logica binaria, è in grado di eseguire solamente programmi scritti in linguaggio macchina , un linguaggio composto da istruzioni elementari direttamente in binario { 0, 1 }. Qualunque programma scritto in un qualsiasi linguaggio ad alto livello, per poter essere eseguito dal computer, deve quindi essere tradotto in un equivalente programma in linguaggio macchina. Questa traduzione viene fatta da appositi moduli (programmi) denominati compilatori e interpreti che differiscono tra di loro solamete per la modalità di traduzione, il risultato è lo stesso, è il programma in linguaggio macchina.. Ogni linguaggio di programmazione ad alto livello avrà il proprio compilatore e/o interprete.

problema

analisi

ALGORITMO ....................................................................................................................................................

(schema a blocchi)

codifica (in un linguaggio di programmazione)

programma ( software )

computer ( hardware )

programma in un linguaggio ad alto livello

traduzione (mediante compilatore o interprete )

programma in linguaggio macchina c o m p u t e r ( h a r d w a r e )

Attualmente in Internet è molto utilizzata una variante del Test di Turing, un Test di Turing al contrario , il CAPTCHA ( C ompletely A utomated P ublic T uring test to tell C omputers and H umans A part - Test di Turing completamente pubblico e automatico per distinguere esseri umani e computer )

Si tratta di una procedura antispam che permette di stabilire se l’utente è un umano o un computer (programma), basandosi sulla capacità umana di riconoscimento immediato dei simboli, comunque rappresentati, cosa al momento impossibile per le macchine, che non passano il test e non possono accedere al sito o al modulo.

Le aree di applicazione dell’IA sono molteplici:

o Pianificazione e schedulazioni autonome (es: produzione industriale) o Pianificazione logistica (es: pianificazione delle reti di trasporto merci) o Controllo autonomo (es: controllo droni, missili, automobili, ..) o Giochi (es: dama, carte, scacchi - la IBM ha sviluppato Deep Blue, un programma che gioca a scacchi, in linguaggio C, su sistema AIX, che calcola 100 milioni di posizioni al secondo: tale programma, nel 1997, ha sconfitto il campione mondiale di scacchi Garry Kasparov) o Dimostrazione di teoremi matematici (in ambito aritmetico, geometrico, logico) o Programmazione automatica (l’obiettivo, fornendo le specifiche ad alto livello delle funzioni volute, è quello di generare automaticamente il programma che le implementa) o Robotica (è un campo vastissimo, che comprende IA, architettura informatica, sistemi operativi, controllo automatico, bioingegneria, neuroscienze, telecomunicazioni) o Comprensione del linguaggio naturale (campo estremamente complesso, per ora i risultati si limitano alla traduzione più o meno letterale di semplici frasi da una lingua all’altra; appartengono a quest’ambito anche i problemi di riconoscimento e di sintesi vocale) o Riconoscimento delle immagini (es: riconoscere il numero di targa di un’auto, riconoscimento facciale, riconoscimento degli oggetti rappresentati in un’immagine) o Sistemi esperti (la macchina algoritmica non esegue più algoritmi risolutivi, ma algoritmi inferenziali che, basandosi sulla base di conoscenza, costruiscono altri algoritmi; i campi di applicazione sono molteplici: diagnostica, istruzione, pianificazione, logistica, …) o Domotica (è l’area che si occupa della realizzazione della casa intelligente , mettendo opportunamente in funzione i vari elettrodomestici, attivando la manutenzione, etc.)

ROBOTICA

La robotica è la disciplina che studia e sviluppa metodi che permettano a un robot di eseguire dei compiti specifici riproducendo il lavoro umano. La robotica è una branca dell'ingegneria [meccatronica], ma in essa confluiscono approcci di informatica [IA], elettronica, fisica, matematica, meccanica, linguistica, psicologia. La robotica ha applicazioni in svariati campi (medico, militare, spaziale, industriale, domestico, …)

Il termine robot deriva dal termine ceco robota , che significa lavoro pesante o lavoro forzato , usato per la prima volta dallo scrittore ceco Karel Čapek nel 1920 nel suo dramma teatrale I robot universali di Rossum. Tale termine identificava uomini artificiali organici, ma oggi viene usato per indicare uomini artificiali meccanici, ma anche, soprattutto, meccanismi non antropomorfi. Il termine androide (dal greco anèr, andròs , uomo, e che quindi può essere tradotto a forma d'uomo ) può essere usato in entrambi i casi, mentre un cyborg ( organismo cibernetico o uomo bionico ) indica una creatura che combina parti organiche e meccaniche (uomo bionico). Il termine robotica venne usato per la prima volta nel racconto di Isaac Asimov intitolato Bugiardo! ( Liar! , 1941), presente nella sua famosa raccolta Io, Robot. In esso, egli citava le tre regole della robotica :

1. un robot non può recar danno a un essere umano né può permettere che, a causa del _proprio mancato intervento, un essere umano riceva danno.

  1. un robot deve obbedire agli ordini impartiti dagli esseri umani, purché tali ordini non_ _contravvengano alla Prima Legge.
  2. un robot deve proteggere la propria esistenza, purché questa autodifesa non contrasti con la_ Prima o con la Seconda Legge

Computer e Robot operano nel campo dell’informazione, che può essere classificata in tre tipi: 1.algoritmo, 2.dato, 3.problema. Si possono identificare anche tre tipi di elaborazione: 1.esecuzione di algoritmi, 2.gestione dati (memorizzazione, variazione, cancellazione, lettura dati), 3.risoluzione di problemi (elaborazione inferenziale).

Nel caso della Robotica, però, occorrer aggiungere ai tre tipi di informazione (1.algoritmo, 2.dato, 3.problema) altri due tipi di informazione: 4.modello dei fenomeni prodotti dal robot, 5.modello dei fenomeni percepiti dal robot.

Quindi ci sono due tipi di interazioni con il mondo esterno:

  1. produzione dell’azione del robot attraverso gli attuatori (l’output del robot)
  2. percezione del mondo attraverso i sensori (l’input del robot)

La parte della robotica che è pertinente all’informatica [IA] è la cosiddetta robotica intelligente.

Le reti neurali sono flessibili e adattabili nell’analisi di situazioni complesse, sono particolarmente adatte nei casi in cui non si riescono a individuare i legami tra l’input e l’output, si comportano come un sistema esperto che modifica continuamente le regole sulle quali decide. Le reti neurali sono utilizzabili quando si hanno moltissime variabili da considerare simultaneamente, le relazioni tra gli input e gli output non sono chiaramente definite e le variabili mutano nel tempo in relazione al mutare dell’ambiente.

In un certo senso le reti neurali sono delle scatole nere che non lasciano vedere il procedimento con il quale arrivano a una risposta. Probabilmente in futuro si svilupperà l’interazione tra sistemi esperti e reti neurali. Gli ambiti attuali di applicazione delle reti neurali, affiancate da sistemi esperti, sono quello delle previsioni finanziarie e della documentazione della conoscenza presente in un certo dominio.

Funzionamento

Una rete neurale raccoglie diversi input, li mette in connessione tra loro, li pesa in base alla loro importanza e crea una sorta di media ponderata che rappresenta la risposta della rete relativamente al fenomeno studiato. In questo contesto è molto importante la scelta degli input. Se la somma dei segnali (pesati) in ingresso supera una certa soglia, viene emesso un segnale. Il problema è come modificare i pesi dei segnali in input. Negli anni ’60 Marvin Minsky , un informatico di IA statunitense, utilizza un metodo che confronta il risultato sbagliato con quello corretto e modifica i pesi in funzione dell’errore del neurone. Però occorre mettere più neuroni in cascata, e ci vogliono almeno due strati per avere una qualsiasi funzione. Nel 1984 l’ algoritmo di backpropagation riuscì ad ottenere la correzione automatica dell’errore partendo dagli errori degli strati finali per cambiare il ipesi dei neuroni finali, ma risalendo all’indietro per cambiare anche i pesi dei neuroni intermedi. La rete neurale è progettata per apprendere le caratteristiche del fenomeno che esamina attraverso la modifica dei pesi attribuiti alle connessioni (che all’inizio vengono inizializzati casualmente). Per questo si fa riferimento all’associazione trai dati che descrivono il problema e la soluzione corrispondente; la rete modifica automaticamente i propri parametri e sarà poi in grado di trovare la soluzione anche partendo da nuove classi di dati. Per istruire la rete che effettua previsioni finanziarie, ad esempio, si sono forniti dati del passato sui quali la rete ha effettuato le sue previsioni, poi si sono dati i risultati relativi (conosciuti, perché avvenuti) sui quali la rete ha potuto confrontare l’errore della sua previsione e correggesi per conseguire i risultati certi. A questo punto la rete ha ricalibrato i pesi degli input per avere i risultati attesi e, per il futuro, potrà fare le sue previsioni, minimizzando l’errore, su input opportunamente pesati e calibrati.

In conclusione, le reti neurali rappresentano una significativa innovazione rispetto all’informatica tradizionale (e anche rispetto a strumenti forniti dalle generazioni passate di Intelligenza Artificiale come i Sistemi Esperti) perché rappresentano uno strumento informatico adattivo , che tende cioè a "modellarsi" sul fenomeno studiato. Le reti neurali non si bloccano di fronte a un errore, ma al contrario lo "studiano" per perfezionare le proprie prestazioni. Si può affermare che si tratta del migliore approccio per affrontare problemi di " ottimizzazione dell’approssimazione " quali l’interpretazione dei comandi vocali, l’interpretazione della scrittura, le previsioni finanziarie, le previsioni metereologi che, le previsioni in generale.

Algoritmi GENETICI e Logica FUZZY ..........................................................................................................

(tratto da Informatica 3 , P.Gallo e P.Sirsi, Minerva Scuola, 2014)

I recenti Algoritmi Genetici e i Sistemi di Fuzzy Logic costituiscono il paradigma del cosiddetto soft computing. Il focus si è gradatamente spostato da una tecnologia che formalizzi chiaramente la conoscenza su un determinato dominio (Sistema Esperto) a un’altra in cui si pone l’accento su tecniche di "creazione" e/o di "estrazione" della conoscenza a partire da dati storici, attività questa che in ambito informatico è denominata data mining ( estrazione dei dati ).

Algoritmi Genetici Come in ambito biologico l’evoluzione avviene con la selezione naturale di darwiniana memoria ( Charles Darwin , L’origine della specie , 1859), così gli algoritmi genetici, introdotti da John Holland intorno alla metà degli anni ’70, operano su una popolazione di potenziali soluzioni applicando il principio della "sopravvivenza del più adatto" evolvendo verso una soluzione che si avvicina il più possibile alla reale soluzione del problema. Un algoritmo genetico è un algoritmo iterativo basato sul fitness ( idoneità ) che si articola nelle seguenti fasi:

  1. generazione di una popolazione iniziale con caratteristiche pseudo casuali (cromosomi)
  2. assegnazione a ogni individuo (cromosoma) di un valore di fitness (calcolato da una funzione di fitness appositamente progettata)
  3. selezione delle soluzioni considerate migliori (ordinamento per valore di fitness)
  4. i migliori individui (cromosomi) diventano i "genitori" della prossima generazione
  5. sui alcuni singoli "genitori" si applicano dei cambiamenti casuali ( mutazione ) e/o vengono combinate efficacemente le caratteristiche di una coppia di "genitori" ( crossover , incrocio)
  6. si riparte dal punto 2 (finché non si raggiungono i risultati desiderati)

Un esempio di applicazione di algoritmo genetico è il "Problema del commesso viaggiatore" che deve riuscire a visitare almeno una volta tutte le città presenti in un elenco, sfruttando al meglio i collegamenti tra queste e percorrendo meno strada possibile.

Spesso le tecnologie alla base degli algoritmi genetici sono state applicate anche a popolazioni di reti neurali le quali, come visto, presentano anch’esse proprietà di autoapprendimento.

Fuzzy Logic (logica sfumata ) I sistemi di Fuzzy Logic, teorizzati da Lotfi A.Zadeh nella seconda metà degli anni ’60, sono nati per gestire, all’interno di processi decisionali, informazioni caratterizzate da un basso grado di precisione (molto frequenti nella vita reale).

La logica booleana prevede l’appartenenza o meno a un insieme, mentre la Fuzzy Locic permette anche un’ appartenenza parziale , consentendo la definizione di "ragionamenti" automatizzati più raffinati. La Fuzzy Logic elimina il concetto di "soglia di appartenenza" (o di là o di qua) rigida utilizzando funzioni di appartenenza che indicano il grado di appartenenza (0 non appartiene; 1 appartiene totalmente; 0.X appartiene un po’, appartiene 0.X).

La logica sfumata è uno strumento flessibile che rende possibile la rappresentazione di concetti imprecisi, ma utilizzati correntemente da ciascuno di noi. Per esempio "Luigi è alto" è un’affermazione imprecisa perché non dice quanto esattamente è alto Luigi. Ma con la logica Fuzzy possiamo definire il concetto di "alto" con un insieme del tipo:

{ 0.1/150 | 0.25/160 | 0.5/170 | 0.8/180 | 0.9/190 | 1/200 }

Dove 170 cm è l’altezza media (0.5), sopra si è più alti con diversi gradi - fino al massimo di 200 cm (1) - sotto non si è alti (0.1, 0.25)