Sei sulla pagina 1di 387

Cognome: Nicotra

Nome: Gabriele

La versione accessibile di questo file è stata realizzata


dalla Biblioteca Digitale dell’ Associazione Italiana Dislessia.

Copia concessa per uso personale di studio su concessione


del Gruppo Editoriale Mondadori Education
Tutti i diritti sono riservati.

Ad uso esclusivo e temporaneo per soggetti con D.S.A. o che


rientrano nella legge 104/92
VIETATA LA DUPLICAZIONE

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

5° anno
Piero Gallo
Pasquale Sirsi
Daniela Gallo

app
INFORMATICA

LINGUAGGIO C++,
EXCEL E OCTAVE

ESERCIZI CON
SVOLGIMENTO GUIDATO

FILE SORGENTI
DEGLI ESERCIZI E AUDIO
DELLE SINTESI

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

Piero Gallo Pasquale Sirsi Daniela Gallo

app
INFORMATICA

5° anno

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

HUB Scuola:
per una didattica
digitalmente aumentata
HUB Scuola è la piattaforma digitale per lo studio e l’insegnamento che
permette a studenti e docenti di consultare il libro digitale, esplorare le risorse
multimediali integrate nel libro e condividere i contenuti disponibili.

HUB Campus è l’ambiente in cui HUB Young è l’App per usare il libro
il docente può trovare spunti sempre di testo digitale. Pratica e intuitiva, stimola
originali per programmare la didattica l’apprendimento, favorisce l’inclusione
del futuro e per motivare gli studenti. e potenzia i risultati individuali.

HUB Smart è l’App per guardare HUB Kit raccoglie i contenuti digitali che
i video, ascoltare gli audio del libro di testo espandono il libro di testo: audio, video,
e per consentire agli studenti di allenarsi esercizi interattivi, materiali aggiuntivi
con i test, direttamente dallo smartphone. e contenuti scaricabili, mappe concettuali,
laboratori digitali e gallerie d’immagini.

HUB INVALSI è l’ambiente che permette HUB Test è la piattaforma che permette
di avvicinare l’alunno all’interfaccia della ai docenti di creare verifiche partendo
piattaforma INVALSI consentendogli da un ricco database di quesiti disponibili.
di esercitarsi in modalità Computer Based.

Come accedere a HUB Scarica HUB Young Link utili


Scuola? Vai su hubscuola.it Scarica l’App da HUB Scuola › La piattaforma per la didattica digitale:
e accedi con le tue credenziali o dai principali store online per hubscuola.it
Mondadori Education. conservare il libro e tutte le › Il sito web con le nostre novità:
Non sei registrato? risorse multimediali integrate. mondadorieducation.it
Vai su hubscuola.it, clicca su Lancia l’App, effettua il login e › L’assistenza per tutti:
registrati e compila il form. nella libreria troverai tutti i libri assistenza.hubscuola.it
che hai attivato.

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

NOVITÀ

Il canale YouTube di HUB Scuola è online!


Vai su youtube.com/c/hubscuola
HUB Scuola mette a disposizione i video dell’intera
produzione editoriale, divisi in più di 40 playlist
comodamente fruibili da tutti e condivisibili sui
principali social.
Utili ai docenti per progettare percorsi didattici,
per motivare gli studenti, per insegnare in modo
dinamico trasmettendo la passione per il sapere
e la conoscenza.
Utili agli alunni per studiare in autonomia,
ripassare le lezioni e imparare divertendosi con
contenuti certificati e d’autore, usando un canale
di comunicazione vicino al loro mondo.

La piattaforma La piattaforma dedicata L’App per guardare


per creare verifiche alla preparazione i video, ascoltare gli audio
e mettersi alla prova dell’INVALSI e allenarsi con i test

HUB Test è la piattaforma semplice HUB INVALSI permette di svolgere HUB Smart è l’App per fruire
e intuitiva che permette ai docenti esercitazioni di italiano, matematica dei video e degli audio dei libri
di creare verifiche personalizzate. e inglese – come previsto dalla di testo da smartphone e tablet
Contiene un ricco database di quesiti normativa – in modalità Computer senza registrazione. Facile e veloce,
ed è utile anche per l’allenamento Based, per avvicinare l’alunno permette di ripassare le lezioni
individuale degli studenti. all’interfaccia INVALSI. e di mettersi alla prova con i test.

NOVITÀ

Scopri HUB Campus, il luogo dell’ispirazione


Vai su campus.hubscuola.it
HUB Campus è l’ambiente in cui il docente può
trovare spunti per progettare soluzioni didattiche
originali e per motivare gli studenti.
Nuovi portali disciplinari con le migliori
risorse digitali dell’offerta editoriale.
Materiali coinvolgenti e utili per programmare
le lezioni e preparare gli studenti agli esami.
Strumenti e metodi per una didattica
digitalmente aumentata.
Strategie per favorire una didattica sempre più
inclusiva e per educare alla cittadinanza digitale.

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

© 2020 by Mondadori Education S.p.A., Milano


Tutti i diritti riservati

www.mondadorieducation.it

Questo ebook contiene materiale protetto da copyright e non può essere copiato, riprodotto, trasferito, distribuito, noleggiato, licenziato o
trasmesso in pubblico, o utilizzato in alcun altro modo ad eccezione di quanto è stato specificamente autorizzato dall’editore, ai termini e alle
condizioni alle quali è stato acquistato o da quanto esplicitamente previsto dalla legge applicabile.
Qualsiasi distribuzione o fruizione non autorizzata di questo testo così come l’alterazione delle informazioni elettroniche sul regime dei diritti
costituisce una violazione dei diritti dell’editore e dell’autore e sarà sanzionata civilmente e penalmente secondo quanto previsto dalla Legge
633/1941 e successive modifiche.

Questo ebook non potrà in alcun modo essere oggetto di scambio, commercio, prestito, rivendita, acquisto rateale o altrimenti diffuso senza il
preventivo consenso scritto dell’editore. In caso di consenso, tale ebook non potrà avere alcuna forma diversa da quella in cui l’opera è stata
pubblicata e le condizioni incluse alla presente dovranno essere imposte anche al fruitore successivo.

Coordinamento redazionale Davide Basile


Redazione Daniela Savino - EICON srl, Torino
Impaginazione EICON srl, Torino
Progetto grafico Alfredo La Posta, Luigi Comi (Infostudio)
Direzione artistica sistema visivo delle copertine 46xy studio
Realizzazione della copertina il bozzetto di patrizia cella
Disegni Edistudio - Milano

In copertina Sfondo astratto tecnologia con icone, Hilch, GettyImages, Giovani amici
utilizzando un computer portatile isolato, londoneye, GettyImages

Contenuti digitali
Progettazione Fabio Ferri, Vincenzo Belluomo
Redazione duDAT S.r.l.
Realizzazione duDAT S.r.l. (esercizi commentati, laboratori “case studies”, lezioni LIM),
Frigo Studio srl (audio), Lumina Datamatics (mappe modificabili)

Avvertenza: Occasionalmente, possono essere visibili in questo testo nomi, confezioni e marchi commerciali di prodotti o società. Non li abbiamo eliminati
per non rendere le esemplificazioni e le immagini irreali e “false”, quindi didatticamente inefficaci. L’autore e l’editore non intendono sostenere che i prodotti
fotografati o citati siano migliori o peggiori di altri, né indirettamente consigliarne o sconsigliarne l’acquisto: non esiste alcun rapporto di nessun genere con i
relativi produttori.
L’editore fornisce - per il tramite dei testi scolastici da esso pubblicati e attraverso i relativi supporti - link a siti di terze parti esclusivamente per fini didattici o
perché indicati e consigliati da altri siti istituzionali. Pertanto l’editore non è responsabile, neppure indirettamente, del contenuto e delle immagini riprodotte su
tali siti in data successiva a quella della pubblicazione, distribuzione e/o ristampa del presente testo scolastico.
Per eventuali e comunque non volute omissioni e per gli aventi diritto tutelati dalla legge, l’editore dichiara la piena disponibilità.
La realizzazione di un libro scolastico è un’attività complessa che comporta controlli di varia natura. Essi riguardano sia la correttezza dei contenuti che la
coerenza tra testo, immagini, strumenti di esercitazione e applicazioni digitali. È pertanto possibile che, dopo la pubblicazione, siano riscontrabili errori e
imprecisioni.
Mondadori Education ringrazia fin da ora chi vorrà segnalarli a:
Servizio Clienti Mondadori Education
e-mail servizioclienti.edu@mondadorieducation.it
numero verde 800 123 931

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

PRESENTAZIONE

Il testo è conforme alle Indicazioni Nazionali per il Liceo scientifico opzione Scienze Applicate relative al
5° anno della disciplina Informatica.
La nostra pluriennale esperienza nell’insegnamento dell’Informatica e nel campo dell’editoria ci ha per-
messo di impostare una specifica metodologia didattica che è in grado di garantire un efficace apprendi-
mento, poiché i contenuti proposti sono sempre stati pensati e definiti in un’ottica di integrazione fra il
libro, strumento tradizionale del sapere, il computer, usato come consolidato mezzo di apprendimento e
di conoscenza, e Internet quale strumento di coordinamento e approfondimento. Impostato sulla classica
equazione sapere=saper fare, accogliendo quindi un’impostazione didattica largamente consolidata, il vo-
lume propone un’esposizione semplice e curata degli argomenti, adatta all’età degli studenti, e non tradisce
in alcun modo l’irrinunciabile completezza e il rigore scientifico dei contenuti.

LA STRUTTURA DEL TESTO


Didatticamente l’opera è organizzata in sezioni, articolate in unità di apprendimento.
Ogni sezione apre con un breve testo, conciso ed efficace, che racchiude gli elementi fondanti di ciascuna
unità e prosegue con l’individuazione dei prerequisiti necessari alla comprensione degli argomenti e degli
obiettivi declinati in termini di conoscenze, abilità e competenze che si acquisiranno con lo studio delle
tematiche presenti all’interno di ogni unità di apprendimento.
Le unità espongono gli argomenti con chiarezza, evidenziando le definizioni, con l’aiuto di numerose im-
magini, schemi e grafici. Brevi testi laterali danno informazioni aggiuntive su concetti disciplinari impor-
tanti e su nozioni meritevoli di essere sottolineate.
La conclusione di ogni unità è costituita di tre strumenti:
• due pagine dedicate al ripasso dell’unità in un’ottica inclusiva (Sintesi attiva), che fornisce la sintesi
degli argomenti trattati nell’unità, e una successiva mappa concettuale riepilogativa che lo studente
dovrà completare aiutandosi con delle domande guida;
• una scheda per la verifica dell’apprendimento delle conoscenze, costituita di quesiti semistrutturati,
articolati in quattro categorie: quesiti a risposta singola, quesiti vero o falso, completamenti e quesiti a
risposta multipla;
• una scheda per la verifica dell’apprendimento delle competenze, che fornisce esercizi con diversi livelli
di difficoltà.

IL METODO ESPOSITIVO
All’interno di ogni unità i contenuti sono veicolati da due passaggi che aiutano la comprensione degli argo-
menti e affiancano il lavoro didattico del docente:
1. OSSERVA COME SI FA: questa scheda contiene esercizi svolti e commentati, scelti in modo da abbracciare
la casistica più vasta. La stesura abitua a comprendere la lezione afferente.
2. ORA TOCCA A TE: esercizi da svolgere e guidati. Rappresentano una forma di pronta verifica, poiché lo
studente è invitato a costruire lo svolgimento utilizzando i procedimenti illustrati nell’unità di apprendi-
mento, avvalendosi di spunti di impostazione e risultati parziali.
Le Schede infografiche sintetizzano alcuni argomenti importanti di carattere generale.
Al termine di ogni sezione è presente la sezione dedicata al CLIL, che fornisce letture a tema presentate in
lingua inglese corredate di un glossario e di un questionario.
Nella stesura delle parti che compongono il libro si è intenzionalmente scelto di riservare la maggior parte
delle pagine alla trattazione più approfondita dei vari argomenti, in modo da poter arricchire maggiormen-
te il bagaglio e il livello culturale dello studente. Per quanto riguarda la sezione di esercitazione, conside-
rando la natura mista degli attuali libri di testo, si è preferito destinare al sito web quasi tutta la parte appli-
cativa. Ciò anche per la natura interattiva delle proposte operative e la naturale inclinazione della materia.
Gli autori

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

Il volume a colpo d’occhio


Per introdurre alla Sezione
Sezione A
Anticipazione dei contenuti ALGORITMI DI CALCOLO
NUMERICO
delle Unità
A1 A2 A3 A4
I numeri nel computer Algebra lineare e Algebra vettoriale e Applicazioni
Rappresentare i numeri reali algoritmi in C++ matriciale con Octave scientifiche in Octave,
all’interno del calcolatore L’algebra lineare è GNU Octave è un software in Excel e in C++
non è sempre un’operazione la branca della matematica gratuito e open source Un sistema di equazioni
indolore: la parte decimale che si occupa dello per il calcolo scientifico, lineari, anche detto
può essere costituita studio dei vettori, spazi un’applicazione software sistema lineare, è un
anche da una serie infinita vettoriali (o spazi lineari), per l’analisi numerica sistema composto da
di cifre. La memoria del trasformazioni lineari e in gran parte compatibile più equazioni lineari che
calcolatore e le operazioni sistemi di equazioni lineari. con MATLAB. devono essere verificate
fatte sui numeri devono In questa Unità affronteremo Ha un insieme di funzionalità tutte contemporaneamente.
avere necessariamente una lo studio di vettori e per effettuare il calcolo Usando le matrici
caratteristica di finitezza; matrici, ne analizzeremo matriciale e consente di e il prodotto scalare fra
pertanto, in questi casi, proprietà e caratteristiche trovare la soluzione numerica matrici si possono separare
si procede eliminando effettuando delle operazioni di sistemi lineari. i coefficienti, le incognite e
una parte dell’informazione. su essi attraverso la relativa i termini noti del sistema e
Qual è l’errore che algebra. Affronteremo risolvere i sistemi applicando
si commette eliminando invece i sistemi lineari nelle soluzioni algoritmiche.
tali cifre? Quanto incide prossime Unità.
tutto ciò sul risultato finale?

Prerequisiti PREREQUISITI
Conoscenze
OBIETTIVI
Conoscenze Abilità
• Conoscenza del linguaggio C++ • Errori computazionali e • Saper risolvere situazioni problematiche
• Le strutture di controllo e le propagazione dell’errore relative all’algebra matriciale e vettoriale
strutture dati principali come • Algebra vettoriale e matriciale attraverso opportuni software
vettori e matrici • Tecniche di utilizzo del software • Saper risolvere sistemi lineari con un
• Conoscenza dell’ambiente Excel Octave per il calcolo numerico numero elevato di incognite
di Microsoft • Metodo diretto di soluzione dei • Saper interpolare dei dati attraverso
Abilità sistemi lineari (Cramer) delle funzioni polinomiali
• Metodo iterativo per la Competenze
• Saper strutturare un programma soluzione di sistemi lineari
in C++ utilizzando le funzioni (Jacobi) • Acquisire la padronanza di strumenti
• Saper utilizzare e gestire vettori • Metodo per convertire una dell’informatica e utilizzare tali
e matrici in C++ strumenti per la soluzione di problemi

Obiettivi
matrice non triangolare in
• Essere in grado di inserire triangolare (eliminazione di significativi in generale, ma in particolare
formule con riferimenti relativi e Gauss) connessi allo studio della matematica
assoluti in Microsoft Excel • Fitting di dati attraverso la retta • Acquisire la consapevolezza dei vantaggi
dei minimi quadrati e dei limiti dell’uso degli strumenti e dei
• Polinomi di interpolazione di metodi informatici e delle conseguenze
Newton e Lagrange scientifiche e culturali di tale uso

Per apprendere facilmente


B4 La complessità Programma 1
Processo 1
...

computazionale Algoritmo 1 ... Processo K

... Programma M
...
Algoritmo N
...

Finora, infatti, l’obiettivo dell’attività di programmazione è stato il seguente:


IMPARERAI…
Dato un problema, scriverne la soluzione sotto forma di algoritmo corretto e funzionante

Esposizione chiara,
Quando puoi definire efficiente Di cosa si occupa la complessità Come si classificano i problemi
un algoritmo computazionale in ordine alla complessità (sia dal punto di vista sintattico, sia da quello semantico) e codificarlo in un linguaggio di
programmazione.

Ora, invece, l’obiettivo è:

1 Qualità di un algoritmo
Dati uno o più algoritmi che risolvono un problema, confrontarli per individuare il mi-
gliore sulla base di un’analisi qualitativa.
schemi e concetti
Spesso si è interessati a soluzioni di problemi che, nell’impiego delle risorse umane e di calcolo,
vengono ritenute economiche. La misura della qualità
Dato per scontato che gli algoritmi siano corretti, cercheremo di Consideriamo un algoritmo
chiave in evidenza
L’impiego dell’algoritmo più efficiente si traduce in un risparmio di risorse computazionali
assegnare loro una misura della qualità. Le principali caratte- sviluppato per la gestione di un
e, di conseguenza, in un risparmio di tempo e di denaro. missile. Se i tempi di esecuzione non
ristiche da valutare sono: rispettano determinati intervalli di
Durante la fase di analisi dei problemi è emerso che, spesso, esistono più algoritmi per risolvere • lo spazio di memoria; tempo (sistemi real-time), il missile
può provocare una catastrofe.
un problema: un classico esempio è quello della ricerca di un elemento in un array. In partico- • il tempo di esecuzione di un algoritmo.
lare abbiamo esaminato l’algoritmo di ricerca sequenziale e quello di ricerca binaria, cioè due
algoritmi risolutivi dello stesso problema. Quale preferire? Quali sono i criteri da seguire per ■ Quando parliamo di spazio di memoria, intendiamo l’area di memoria occupata da un
valutare la bontà di un algoritmo? La risposta non è immediata. processo durante la sua esecuzione, dove, con il termine memoria, indichiamo la memoria
di lavoro. Possiamo indicarla anche come risorsa spazio. Ci riferiamo sia a quella utiliz-
Di ogni algoritmo dobbiamo considerare due aspetti: zata per la memorizzazione delle strutture dati (definite nell’algoritmo), sia a quella stret-
• la sua organizzazione interna, ovvero la struttura data alle sue istruzioni (organizzazio- tamente necessaria per la memorizzazione del codice stesso, dei suoi dati di input e dei
ne delle sue strutture di controllo) e le strutture dati utilizzate (tipi di variabili semplici e risultati intermedi.
strutturate);
• le risorse necessarie per eseguirlo (in particolare la memoria e il processore), strettamen-
■ Parlando di tempo di esecuzione, invece, intendiamo il tempo necessario a eseguire il
processo legato all’algoritmo. Possiamo indicarlo anche come risorsa tempo.
te legate allo spazio e al tempo necessari alla sua esecuzione. razioni
L’evoluzione tecnologica fornisce ormai computer dotati di grandi capacità di memoria a con * una delle 4 ope
costi relativamente bassi. Per questa ragione, la risorsa spazio è diventata china e
di macimpor-
razioni meno
La bontà di un algoritmo tante nella valutazione dei problemi. Per esempio,qua se lsias i delle 4 ope
un’immagine non viene visualizzata
entro un lasso di tempo ritenuto
Indican do con ⊕
ragionevole * una
siostr
avràa un :degrado delle prestazioni che ren-
che
Ogni algoritmo può essere tradotto in programmi scritti in differenti linguaggi di programma- y)
iche, si dim Dobbiamo quindi xdare * y =ai nostri algoritmi
derà il sistema inefficiente oarit
poco
metutilizzabile. ⊕ tr(x *
zione e ogni programma verrà, a sua volta, trasformato in più processi a tempo di esecuzione. y) di mac-
Nella figura a pagina seguente riassumiamo questi concetti: un problema può avere più algo-
un’organizzazione interna tale che il processo corrispondente impieghiy il= minor
x⊕ arr(x *numero di e dei numeri
a sull ’insiem
*
risorse possibili durante la sua esecuzione. di macchin
OSSERVA COM
ritmi che lo risolvono; ognuno di questi ultimi può essere tradotto in più programmi; a ogni
operazioni risu lta- 1. Consideriamo E SI FA
sura delle della valutazione del floating del
programma corrispondono più processi a tempo di esecuzione. Nel seguito della nostra analisi, quindi, ci occuperemo
in virt
esclusivamente
ù della chiu l’appros simazione due matric i A ∈ ! m×n e B
∈ ! aventi lo
m×n
Per valutare la bontà di un algoritmo, quindi, non ci riferiremo direttamente all’algoritmo stes- questoa un algoritmo. Per farlo, confronteremo
tempo di esecuzione del processoe legato tracon
cide loro due stesso numero
di mac china coin ⎡
m di righe e n
di colonne:
so, ma alle risorse che utilizzerà in quanto entità dinamica a tempo di esecuzione. china.
o più algoritmi risolutivi di una stessa classe di problemi, zionebase
sulla degli stessi parametri rile- ⎢ 1 1 1 3 ⎥⎤
altre paro le, un’opera A= ⎢ 2 1
⎡ 4 1
1 1 ⎤
Lo studio della bontà degli algoritmi porta a un ampliamento dei nostri traguardi formativi. vanti, in modo da poter effettuareIn un’analisi qualitativa degli
ta: algoritmi stessi. ne 2 2 ⎥ B = ⎢⎢ 1 ⎥
fl(x * y) = x ⊕ *y à dell ’addizio
razione esat ⎢ ⎥ 0 0 3 ⎥
to dell ’ope l’associativit ione. ⎢ 1 2 0 ⎢
⎣ 2 ⎦⎥ ⎥
alcune prop one
rietà, cioè ddiz Calcoliamo la somm ⎣⎢ 1 2 1 2 ⎥
184 Sezione B Teoria della computazione valgonoB4
La complessità computazionale rispetto all’a
185 a e la differenza
delle matrici A

china non moltiplicazi e B.
le ope razi oni di mac
dist ributività della ⎡
Per e la ⎢ 5 2 2 4 ⎤
tiplicazione A+B = ⎢ 3 ⎥ ⎡
⎢ −3 0 0
e della mol ⎢ 1 2 5 ⎥ A−B = ⎢ 1 2 ⎥⎤
⎢ ⎥ ⎢ 1 2 −1 ⎥
⎣ 2 4 1 4 ⎥
COME SI FA ⎦ ⎢
⎣ 0 0 −1 0 ⎥

OSSERVA ciativa.
2. Verifichiamo
ora la proprietà comm
utativa per la somm

prop rietà asso ⎡ a.
e non gode della Siano A = ⎢ 2 3 5 ⎤ ⎡
cui l’addizion ⎢ ⎥ e B = ⎢ 0 3 −4 ⎤
esempio in ⎣ 1 5 9 ⎦⎥ ⎢ ⎥
■ Vediamo un
e t = 8, dati
i numeri di
macchina:
Risulta: A + ⎡
⎣ 2 1 0 ⎦⎥
B = ⎢ 2 3 5 ⎥⎤ ⎢⎡ 0 3 −4 ⎤ ⎡
due matrici 2 ×
3.
Sia B = 10 −4
⎢ + 2+0 3+ 3
258 ⋅ 10 ⎣ 1 5 9 ⎦⎥ ⎣⎢ 2 1 0 ⎥⎥ = ⎢⎢ 5−4 ⎤ ⎡ 2
a = 0,23371 429 ⋅ 102 ⎦ ⎣⎢ 1 + 2 5 + 1 9 + 0 ⎥ = ⎢⎢
⎥ 6 1 ⎤

b = 0,33678 ⊕ c) ⎦⎥ ⎣ 3 6 9 ⎦⎥

Il tutor segnala e guida


⋅ 10
2
7811 ⋅ 10
2
2) a ⊕ (b ⎡
0,33678429 ⋅ 102 B + A = ⎢ 0 3 −4 ⎤ ⎡ 2 3
c = −0,3367 ⎢ ⎥+⎢ 5 ⎤ ⎡ 0+2 3
⎣ 2 1 0 ⎦⎥ ⎢ 1 5 9 ⎥⎥ = ⎢⎢
811 + 3 −4 + 5 ⎤ ⎡
− 0,33677 2 6 1 ⎤
⊕c= ⎣ ⎦ ⎣⎢ 2 + 1 1 + 5 0 + 9 ⎥⎥ = ⎢⎢ ⎥
371258 ⋅
2
1) (a ⊕ b) 10
⋅ 10
2

0,00000023 ⋅ 10
2
0,00000618 ⎦⎥ ⎣ 3 6 9 ⎦⎥
0,33678429 ––––––––––––

nella comprensione –––––––––––– 371258 ⋅ 10


2

⋅ 10
−3 ORA TOCCA A TE
0,33678452
fl(b + c) =
0,61800000
a
8 ⋅ 10
0,02337125 ⋅ 10−3
−3
■ Calcola la somm
a e la differenza
delle seguenti
⋅ 10
2
0,61800000 ⎡ matrici:
0,33678452 fl (b + c) ⎢ 4 −2 5 6 ⎤
fl(a + b) = ⋅ 10
2
−3
A = ⎢ −1 0 ⎥ ⎡
0,33678452 ⋅ 102 8 ⋅ 10 ⎢ 1 2 3 4 ⎥⎤
fl (a + b) 811 0,64137125 ⎢ 3 −3 ⎥ B = ⎢ −1 −2
− 0,33677 –––––– ⎢
⎣ 5 2 4 0 ⎥⎥ ⎢ −3 −4 ⎥
c
–––––––––––– ⋅ 102 ⎦ ⎢ ⎥
10−3 ⎣ 0 4 6 7 ⎥
0,00000641 137126 ⋅ ⎦
+ c)) = 0,64
fl(a + fl (b
10−3 niamo un Prodotto
100000 ⋅ mentre con
la 1) otte
+ c) = 0,64
fl(fl (a + b) 1258 ⋅ 10
−3 .
con la proc
edura 2),
Consideriamo due
137 nerlo
+b+c=
0,64 otte matrici A ∈ ! m×n
possiamo e B ∈ ! n×p in cui
esatto è a il risultato ottimale al numero di righe
Il risultato della seconda; in il nume
rviamo che
Perciò osse solo 3 cifre esatte.
matrici: questo caso è possib ro di colonne della prima è ugual
ile realizzare il e
risultato con prodotto fra le
due
C = AB ∈ ! m×p
A A TE Il risultato del prodo
ORA TOCC di B ed è ottenu
tto sarà una matri
ce avente il nume

Esercizi svolti seguiti


to nel seguente ro di righe di A e
modo: il numero di colon
numeri: ne
i seguenti n
ciativa con cij = ∑ a b i =1É
prop rietà asso
m j =1É p
■ Verifica la k=1
ik kj

immediatamente da
⋅ 10
3

a = 0,6791 ⋅ 10−2 1 3
b = 0,11111 102 11 2 1 2
⋅ 2 0 9
c = 0,3295 computer
A1 1 0 2 =
I numeri nel 1 5
in cui: 3 5 0

esercizi da svolgere 9 = −1 ⋅ 1 + 3 ⋅ 0 +
(−2) ⋅ (−5)

Algebra lineare
e algorit mi in C++ A2
25

VI
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per apprendere idee importanti visualizzandole

INFOGR AFICA
Chi era Alonzo Church
La macchina di ... e la TESI Matematico formato nelle migliori
università americane, nel 1936
fu il primo a occuparsi della

TURING UNIVERSALE... di CHURCH calcolabilità di un problema.

Schede infografiche
MACCHINA DI TURING UNIVERSALE
Dato uno specifico algoritmo, è possibile ricorrere a una macchina di Turing
per risolverlo: una macchina di Turing universale (MdTU) è una macchina
L’ASSUNTO DI BASE
Dato un problema, possiamo dirlo risolubile o computabile o calcolabile
su doppia pagina che
sintetizzano gli argomenti
capace di simulare il comportamento di una qualsiasi altra macchina se, dati in ingresso certi valori, è possibile determinare una funzione f
di Turing. Per far questo la MdTU ha come ingressi due stringhe. che metta in relazione tali dati con un risultato.
Stringa 1: definisce la MdT Stringa 2: input della MdT

λ .. .. .. λ .. .. .. λ

PROBLEMA
più importanti
Le azioni della MdTU
Una MdTU è una macchina programmabile, in grado

STRINGA 1 cioè di memorizzare la descrizione di una qualsiasi


macchina di Turing e di simularne il comportamento. NON È calcolabile È calcolabile
Corrisponde all’insieme di Le azioni di una MdTU consisteranno nello spostarsi Un esempio di problema non Se il problema è calcolabile,
quintuple che definiscono la continuamente dalla stringa che rappresenta le quintuple calcolabile è quello di un teorema allora ci dev’essere una macchina
particolare macchina di Turing alla stringa che rappresenta i dati, in modo da effettuare matematico di cui ancora non sia stata di Turing capace di risolverlo.
da simulare. l’elaborazione. trovata un’esatta dimostrazione.

La MdTU e i moderni computer


STRINGA 2 La MdTU può essere considerata una schematizzazione
di quanto avviene in un elaboratore reale.
La conclusione di Church Il metodo
Corrisponde all’input della Le azioni consistono, infatti, nell’interpretare il programma Qualsiasi problema, se risolvibile, Secondo Church, un qualsiasi problema
macchina di Turing da simulare. (che nel nostro caso corrisponde alla descrizione può essere risolto da un automa. è calcolabile se è Turing-calcolabile,
della macchina di Turing) e nell'eseguire le operazioni La tesi di Church presuppone, quindi, cioè se si riesce a costruire una MdT
specificate sui dati in input (nel nostro caso, la sequenza che non esista alcun formalismo capace applicabile al procedimento.
da elaborare). di risolvere una classe di problemi più Il metodo per stabilire se un problema
ampia di quelli risolti da una macchina è risolvibile o meno consisterebbe quindi
di Turing: in altre parole, se un problema nel trovare la MdT corrispondente: passo
può essere risolto il metodo risolutivo dopo passo, attraverso stati intermedi, si
Turing non realizzò mai la sua “macchina universale”, sarà una versione più o meno complessa trasformano i valori iniziali sino a ottenere
ma è possibile farlo di una macchina di Turing. quelli finali.
Benché tecnicamente realizzabile, il congegno elettromeccanico sarebbe stato In questa prospettiva, è evidente che
lento e poco affidabile per impieghi pratici. l’elaboratore è un automa, ma i problemi
Esistono tuttavia numerosi simulatori software, cioè programmi che simulano il comportamento di una che esso ci aiuta a risolvere non possono
macchina di Turing: i più semplici tra questi possono essere riprodotti anche con carta e penna. essere altro che computabili.

172 Sezione B Teoria della computazione Teoria della calcolabilità B3 173

Per ripassare attivamente


Mappa concettuale da
completare, disponibile
anche in formato digitale
modificabile
Alla fine di ogni Unità,
sintesi degli argomenti
trattati, disponibile anche
in versione audio
RIPASSIAMO INSIEME B5
MAPPA
INTELLIGENZA ARTIFICIALE E RETI NEURALI MODIFICABILE
AUDIO
INTELLIGENZA
ARTIFICIALE
L’intelligenza artificiale comportamenti di questo tipo, riproducono anche
L’intelligenza artificiale (IA) è la disciplina alcuni comportamenti di un uomo impegnato a
informatica che studia le metodologie e le tecniche interagire con la realtà, agendo e percependo.
con le quali progettare sistemi hardware e è ideazione se costruzione contributi si differenzia può essere
I sistemi esperti
software capaci di fornire al computer prestazioni di di di Turing in due rami affrontata con
L’approccio classico all’informatica prevede che un
che, a un osservatore comune, apparirebbero due approcci
uomo fornisca alla macchina un algoritmo capace
come comportamenti propri dell’intelligenza
di risolvere un problema. Nel tempo si è sviluppato
umana.
un approccio diverso, che consiste nel fornire sistemi
Intelligenza artificiale forte e debole invece alla macchina un algoritmo con il quale hardware e
Inizialmente l’IA è stata basata sulla convinzione costruire un altro algoritmo capace di risolvere software
che fosse possibile costruire un computer capace un problema. Gli algoritmi che programmano le
di comportamenti non distinguibili in nessun macchine perché costruiscano altri algoritmi sono
senso importante da quelli dell’intelligenza chiamati algoritmi inferenziali o meta-algoritmi.
che simulano
umana (intelligenza artificiale forte). In seguito Un programma che mette in grado una macchina
è stata basata sulla convinzione che un computer di costruire algoritmi per risolvere problemi
non potrà mai essere equivalente a una mente complessi relativi a un particolare dominio
umana: potrà solo giungere a simulare alcuni di conoscenze con un’efficienza paragonabile comportamenti
processi cognitivi umani, senza mai poter riuscire a quella di uno specialista umano del settore intelligenti
a riprodurli integralmente (intelligenza artificiale si chiama sistema esperto.
debole).
Le reti neurali
Il contributo di Turing Le reti neurali artificiali sono strumenti
Turing ha contribuito all’Intelligenza Artificiale informatici che imitano il funzionamento di un
innanzitutto mediante la definizione della cervello biologico nel memorizzare e nell’utilizzare

Domande guida per macchina astratta chiamata macchina di


Turing universale (MdTU), e inoltre attraverso
l’invenzione del test di Turing, un criterio per
le informazioni. Il fondamento teorico delle reti
neurali artificiali è la tesi del connessionismo,
che rovescia quella dell’IA classica: per riprodurre
verificare se una macchina sia in grado di pensare le facoltà cognitive di esseri viventi bisogna

completare la mappa come un essere umano. A oggi nessuna macchina


ha superato il test.
Intelligenza artificiale, informatica
emulare il funzionamento delle cellule
del cervello.
Algoritmi genetici e logica fuzzy
e robotica Negli anni più recenti si è affermato un approccio Completiamo la mappa concettuale.
Il computer è una macchina che riproduce nuovo alla costruzione di algoritmi, che si chiama Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
alcuni comportamenti intelligenti di un uomo soft computing. Tale approccio conduce alla Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
impegnato a riflettere sulla realtà. I robot costruzione di algoritmi genetici e di algoritmi 1) L’intelligenza artificiale si occupa dell’ideazione di quali sistemi?
sono macchine che, oltre a riprodurre alcuni basati sulla logica fuzzy. 2) Che cosa simulano questi sistemi?
3) In quali due rami si differenzia l’intelligenza artificiale?
4) Quali sono i due principali contributi di Turing all’intelligenza artificiale?
5) Secondo quali due approcci può essere affrontata l’intelligenza artificiale?
6) L’approccio connessionista all’intelligenza artificiale a quali sistemi dà luogo?
7) L’approccio soft computing all’intelligenza artificiale a quali due tipi di algoritmi dà luogo?
8) Se è utilizzata per costruire algoritmi che costruiscono algoritmi, a quali sistemi dà luogo
l’intelligenza artificiale?

236 Sezione B Teoria della computazione Intelligenza artificiale e reti neurali B5 237

VII
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per verificare l’apprendimento


iale:
il motore inferenz
12. Nei sistemi esperti, re
o riferimento: necessario ad affronta

Metti a puntoEle tue


TEST
Svolgi il test interatti
vo B5 9.
A
Con abduzione facciam
al passaggio dal mondo
della realtà (fenome
) al mondo della conosce
no,
nza
A rappresenta il sapere
e risolvere problem
è in grado di dedurre
i in quel campo
, a partire dalla base
scono
problema intuitivo
CONOSCENZ
entato) B che costitui
o, problema rappres conclusioni
della realtà (modell di conoscenza, le a che rientra
della problem
no della conoscenza la soluzione a un dato
B al passaggio all’inter dal problema
alla legge, nel dominio ai quali
realtà (dal modello a risolto) informatici grazie
5. I bot: rappresentato al problem C è un insieme di moduli re con
della conoscenza
della è in grado di interagi
simulano compor tamenti un essere umano o le
1. L’intelletto: sono programmi che C al passaggio dal mondo della o domande e leggend
A sfera cognitiva a risolto) al mondo il programma ponend
conoscitive umani legati alla sola realtà (legge, problem
A è un insieme di funzioni si trovano in rete
e che problema intuitivo
) risposte
che ha ogni essere
umano
sono programmi che realtà (fenomeno, no, e dei moduli informa
tici
è la facoltà mentale idee B con il computer mondo della realtà (fenome è l’insieme del sapere
B
realtà e di farsi delle permettono di giocare al passagg io dal nza D l’interaz ione con
di comprendere la si trovano in rete
D
) al mondo della conosce necessari per gestire
re sono program mi che problema intuitivo
è la capacità di ragiona C spesso semplici problema risolto) il programma
C i che simulano dialoghi della realtà (legge,
apprend ere e risolvere problem degno
D è la capacità di con esseri umani primo sistema esperto
e da collegare al comput
er
10.Con inferenza facciam
o riferimento: 13. MYCIN è stato il Quali tra le seguenti affermazioni
D sono dispositivi hardwar in modo più efficace no, di questo nome.
L’intelligenza: suoni della realtà (fenome sistema sono esatte?
2. ve per poter gestire i A al passaggio dal mondo nza relative a questo
conoscitive, adattati ) al mondo della conosce
è un insieme di funzioni problema intuitivo entato) are i batteri che causano
A o, problema rappres A Permetteva di identific
e immaginative umano 6. La domotica: della realtà (modell della
che ha ogni essere studio della casa
intelligente della conoscenza infezioni gravi suffisso
al passaggio dal mondo

Test semistrutturati,
B è la facoltà mentale si interessa dello mettere in B a risolto) al mondo
della deriva dal classico
realtà A hardware capaci di Il nome del sistema
di comprendere la tare tramite soli sistemi stato realtà (legge, problem
)
B
antibiotici
e, discernere, confron i e controllare il loro problema intuitivo mycin usato negli
è la capacità di sceglier funzione elettrodomestic presenti nella propria realtà (fenomeno, no, diagnos i di malattie
C nte della realtà (fenome Non era utile per la
è la capacità intellett
uale quando si è fisicame al passaggio dal mondo nza C sangue
D C
) al mondo della conosce di coagulazione del
abitazione problema intuitivo ici con la loro dose

disponibili anche in versione


intelligente problema risolto) Raccomandava antibiot o del paziente
genza artificiale: studio della casa della realtà (legge, D
si interessa dello mettere in nza della
3. L’intelli
la telematica
B software capaci di io all’interno della conosce adattata al peso corpore
studia attraverso tramite soli sistemi i e controllare il loro
stato D al passagg a
è la disciplina che e alla legge, dal problem
A hardware e softwar funzione elettrodomestic presenti nella propria realtà (dal modello mente il seguente
testo.
come progettare sistemi er le prestazioni quando si è fisicame
nte
rappresentato al problem
a risolto) 14. Completa corretta
capaci di fornire al
comput esistono miliardi di

interattiva autocorrettiva
abitazione zione della Nel sistema nervoso da un corpo
di pertinenza umana studio e della realizza è: _________ formati
studi teorici si interessa dello di 11. Un sistema esperto _________ _______ ti,
è la disciplina che
si occupa degli C una tecnologia capace problemi prolungamenti ramifica
B soli sistemi hardwar
e per
casa intelligente tramite in grado di risolvere cellulare e da molti _________
per la progetta zione dei elettrodomestici e
controllare A un computer che è di calcolo ___. I _______
le prestazioni umane mettere in funzione i nella izzato da una potenza i _____________ filamentoso chiamat
o
fornire al computer si è fisicamente present complessi caratter sta umano
re sistemi il loro stato quando quella di uno speciali hanno un prolungamentola cui lunghezza
studia come progetta di efficienza pari a
C è la disciplina che al computer propria abitazione ____________________, a qualche metro.
e capaci di fornire zione della di quel settore 1 cm
hardware e softwar studio e della realizza e e software caratter
izzati può variare da circa
di pertinen za umana D si interessa dello una tecnologia capace
di
un insieme di hardwar calcolo pari assone, neuroni)
le prestaz ioni
re casa intelligente tramite controllare
B
da una potenza di (dendriti, neuroni,
studia come progetta elettrodomestici e da una sinergia e settore
è la disciplina che er mettere in funzione sta umano di quel le reti
D di fornire al comput quando non si è fisicame
nte a quella di uno speciali problemi ti affermazioni inerenti
sistemi software capaci za umana il loro stato anche è in grado di risolvere 15. Quali tra le seguen ?
le prestazioni di pertinen abitazione un programma che dominio, neurali sono corrette
presenti nella propria C o in un particolare di nodi
complessi che rientran di uno costituita da un insieme
cere paragonabile a quella Una rete neurale è
L’intelligenza artificia
le forte: zioni è possibile riconos con una efficienza A
4. 7. Quali tipi di informa o di elaborazione specialista umano
di quel settore collegati
er non possa essere nell’ambito del process inferenziali sono quelli a cui arrivano
ritiene che un comput basa su algoritmi I collegamenti di input
A
di una intelligenza
non
dell’informazione
stessa? D un software che si izzato da efficienza
B
veramente dotato e meta-algoritmi caratter segnali so cui
senso importante il problema hardware impiega
ti sono quelli attraver
distinguibile in nessun A L’algoritmo, il dato, dipendente dai sistemi C I collegamenti di output
lligenza umana e, la risoluzio ne
dall’inte essere L’esecuzione, la gestion la rete emette segnali neurale sono
che un computer non possa B
, la soluzione i nodi di una rete
B ritiene
di mente L’algoritmo, le variabili D I collegamenti tra
una macchina dotata
C e inibitorio
nte mo, il tracing di tipo eccitatorio
er possa essere verame D La risoluzione, l’algorit
ritiene che un comput in
C nza non distinguibile
dotato di una intellige umana iali:
nte dall’intelligenza 8. Gli algoritmi inferenz
nessun senso importa
er non può mai essere sono algoritmi classici
D sostiene che un comput umana ma potrà solo A
equivalente a una
mente calcolo estemporanee
i umani sono procedure di
alcuni processi cognitiv B
arrivare a simulare li totalmente sono meta-algoritmi
C
senza riuscire a riprodur previsti dall’intelligenza
D sono algoritmi non
artificiale 239
e e reti neurali B5
Intelligenza artificial

comput azione
Sezione B Teoria della
238

Per sviluppare abilità e competenze


Allena le tue ABILITÀ
e le tue COMPETENZE A1 Esercizi graduati su tre
1.

A
• Rappresenta i seguenti numeri secondo
lo standard IEEE a singola precisione:
35,16 B −0,78 C 145,09 D −2,22
4. • Calcola gli estremi degli intervalli di
definizione dei numeri secondo lo standard IEEE
754 a 32 bit considerando le configurazioni
livelli di difficoltà
speciali dell’esponente.
2. • Date le seguenti rappresentazioni binarie
5. • Per ogni numero x che segue, determina
di numeri in floating point a 32 bit, ricava
i corrispondenti decimali:
Allena le tue ABILI tr(x) alla quinta cifra decimale e calcola l’errore
assoluto e relativo che si commette (rappresenta
A 00111111100000000000000000000000
e le tue COMP TÀ
inizialmente tutti i numeri nella forma 0,…):
B 11000010110010000000000000000000 A ETENZE
34,5678934 ⋅ 103 C 1234,5678899
C
D
00111000010100011011011100010111
01000000010101010101010101010101
B 0,673452917 ⋅ 10−2 D 9,7453285 ⋅ 10−4
B2
• Per
10. 6.Consid ogni x del precedente esercizio, determina
3. • Date le seguenti rappresentazioni esadecimali • eraalla
arr(x)
all’auto
il diagram
quintama
cifra decimale
degli e calcola l’errore
stati relativi
di numeri in floating point a 32 bit, ricava ma “cassaforte”
Crea laassoluto e relativodescrit
che si to 18.
commette
in preced(rappresenta
enza. •• Distributore di lattine. Progetta Allena le tue ABILITÀ
A2
i corrispondenti decimali: relativa tabella
inizialmente tuttidi
i numeri nella forma 0,…). che distribuisce un automa
transizione. lattine di un solo
A 3F400000 C C287C7AE 11. Considera il diagram
7.
all’auto

Dati i seguenti • manumeri: x1 = relativi
degli stati 0,0000345,
sono state introdo
tte
valore. Se il distribu due monete di un unico
tore è spento, si
tipo dopo che
e le tue COMPETENZE
B AB004511 D 40E004EA ma= “ricono scitore (di
0,389475834 = 12,5673
e x3Moore) verifica la moneta eventu “mangia”
con un xnumero
2
pari di 1 e relativo
di stringh e almente introdotta.
lezione l’errore assoluto che si commette
di 0”, descrit to nella
di Moore
aggiuntiva online
effettuando la somma“Autom + x3) dei numeri 19.
(x1 i+dix2Mealy, ••
Distributore di bevand
di transiz
e senzaalla
troncati uscite”
quarta posizione
. Crea decimale.
la relativa automa che distribu e 1. Progetta un Operazioni con le matrici
tabella isce
ione. emettendo una lattina due tipi di bevande
8. •
Prendendo in considerazione i numeri dell’esercizio
12. Consid precedente, verifica l’errore assoluto e relativo introdotte due monete dopo che sono state 1. • Date le seguenti matrici, calcolane la somma A + B.
che si commette effettuando la somma dei numeri arrotondati •
eraalla
il diagram
quarta ma posizione decimale.
degli stati ed è stato scelto da 20 centesimi
di euro
all’automa “ricono relativi il tipo N. Matrice A Matrice B
scitore (di Mealy) L’automa non restitui di bevanda.
Reali Numeri in formato 0,… la presenza Mantissa
di tre 1 consecEsponente che rileva
Arrotondati sce monete. 32416 24503
lezione aggiuntiva utivi”, descritto
0,0000345 ,3450000000E−04 0,354 online. Crea−4 la relativa tabella 0,3540 20.
nella ••
Distributore di bevand 1 53421 41670
di transizione. un auto e 2. Progetta 78342 13645
0,389475834 ,3894758340E+00 0,389475834 0 0,3895 ma come il prece
delle monete a richies dente che restituisce
12,5673 13.
,1256730000E+02 Considera •
0,125673
il diagramma degli 2 0,1257 introdotta una monetata o quando sia stata
11111 11 10 9 8 7
all’automa “ricono stati relativi in eccedenza. 2 11111 65432
scitore (di Moore) 11111 10000
sequenza con numero della 21.
Somma reale lezione aggiuntiva pari di 0”,
sommadescritto ••
Distributore di bevand
e 3. Progetta un 10 11 12 13 14 65432
online. Crea la relativa nella che distribuisce
due tipi di bevand automa
Ea arrotondato di transizione. tabella una lattina dopo e emettendo 3 98765 7 8 9 10 11
che sono stati introdo 43210 2 4 6 8 10
Er arrotondato centesimi di euro tti 40
14. Considera il diagram
• bevanda. L’autom
ed è stato scelto
il tipo di
ma degli stati relativo a accetta monete ⎡
9. •
Riprendi i dati dell’esercizio 7 e verifica all’auto10. ma “ascen
Riprendi
sore”, •
i dati dell’esercizio 8 e verifica centesimi di euro da 10 e 20 ⎢ 2+1
3+0 0+
Crea descrit to in preced e non restituisce A+B = ⎢ 2 4 1+2 ⎤ ⎡
la proprietà associativa. la relativa
la proprietà
tabellaassociativa. enza. monete . ⎢ +3
1+1 0+ ⎥ 3 3 4
di transizione.
22. Svolgiamo insieme il primo degli esercizi proposti ⎢ 1 0 4 + 3 ⎥ ⎢⎢ 3 ⎥⎤
15. ••
Sequenza “ciao”.
Progett ⎣⎢ + 2
5+1 2+
1 1 + 2 ⎥⎥ ⎢⎢
= 5 2
0 7 ⎥
11. ••
Completa la seguente tabella come da modelloData •
la seguen
riportato nell’esercizio calcola l’errore assoluto e riconoscitore che riconos a un automa
te tabella 8dietransiz Siano A, B ∈ !3×5 due matrici rettangolari così definite ⎥
relativo che si commette effettuando la somma ildei relativo ione, ottieni tra una successione ca la sequenza “ciao” ⎡ 3
+1 ⎦⎥ ⎣⎢ 3 6 3 3 ⎥
numeridiagram
arrotondati alla terza posizione
ma degli decimale. ⎡ ⎤ ⎡ ⎤ (A + B) + C ⎢⎢ 3+2 4+ ⎦⎥
⎢ 3 2 4 1 6 ⎥
stati per un
⎢ 2 4 5 0 3 ⎥
di simboli in ingress 2 3+1 ⎤ ⎡
di Moore, descrit
to nella lezione aggiun automa ognuno dei quali = ⎢ 5+1
può essere una qualsia o, A = ⎢⎢ 5 3 4 2 1 ⎥⎥ B = ⎢⎢ 4 1 6 7 0 ⎥⎥ 2+0 0+ ⎥ 4 5 6
Reali Numeri in formatoonline.
0,… Mantissa Esponentetiva Arrotondati dell’alfabeto. si lettera ⎢ 3 2 7 + 3 ⎥ ⎢⎢ 4 ⎥⎤
⎢ 7 8 3 4 2 ⎥ ⎢ 1 3 6 4 5 ⎥ Adesso calco ⎣⎢ + 3
6+4 3+
2 3 + 1 ⎥ ⎢⎢ ⎥ = 6 2
2 10 ⎥
0,00012 ⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦ liamo B +
Ingressi 23. •••
Sequenze binarie Ce al risultato ⎥ ⎣⎢ 6 10 5 4 ⎥⎥

0,0000678 Stati 0 1 che iniziano e finiscon aggiungiam ⎦⎥
Uscite 0. Crea un automa o per Le due matrici hanno lo stesso numero di righe e di colonne, pertanto è possibile eseguire la somma. o A.
5,9123 riconoscitore che ⎡
S0 S0 sequenze che iniziano riconosca
⎡ 3+2 2+4 4+5 1+0 6+ 3 ⎤ ⎡ 5 6 9 1 9 ⎤ ⎢ 2+1 3+2 0
S1 0 successione di simbolie finiscono con 0 da una ⎢ ⎥ ⎢ ⎥ B + C = 2+1⎢ + 2 1+1 ⎤ ⎡
S1 ⎢ 1+0 0+ ⎥ 3 5 2
S2 S1 dei quali può essere in ingresso, ciascun
o A + B = ⎢⎢ 5 + 4 3 + 1 4 + 6 2 + 7 1 + 0 ⎥⎥ = ⎢⎢ 9 4 10 9 1 ⎥⎥ ⎢ 1 2 4 + 3 ⎥ ⎢⎢ 2 ⎤
⎥ = 3 1 2 7 ⎥⎥
0
⎣⎢ + 3 5 + 4 2 + 2
Somma reale S2 somma 0
S0 devono essere riconos oppure 1. Per esempio, ⎢ 7 + 1 8 + 3 3 + 6 4 + 4 2 + 5 ⎥ ⎢ 8 11 9 8 7 ⎥
1 + 1 ⎥ ⎢⎢
S3 0 ⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦ ⎥
⎦⎥ ⎣⎢ 4 9 4 2 ⎥
Ea arrotondato S3 ciute le seguenti sequen
S2 0100110, 010, 000. ze: ⎡ 3
S4 +1 3+2 ⎦⎥
(A + B) + C ⎢⎢
Non
Er arrotondato S4 0 riconosciute le sequen devono essere 4+2 3+ ⎤
S2 ze: 10, 10000, 001. = ⎢ 5+1 1 ⎥ ⎡ 4
S1 2+0 0+ 5 6 4 ⎤
Che tipo di sequen 1
24. Proprietà commutativa ⎢ 3 2 7 + 3 ⎥ ⎢⎢
za di input riconos •••
Sequen binarie ⎣⎢ + 3 6 + 4 3 + 2 ⎥ = 6 2 2 10 ⎥⎥
I numeri nel computerceA1 l’automa? 19automa a ze di lunghezza 4. Proget Verifichiamo la validità della proprietà commutativa cioè A + B = B + A. UtilizziamoEcco quindidefinite
le matrici sopra, quindi
dimostrat 3 + 1 ⎥ ⎢⎢
⎦⎥ ⎣⎢ 6 10 5 4 ⎥⎥
16. un
••
Distributore di bigliett stati finiti riconos
citore che
ta
calcoliamo B + A e verifichiamo che il risultato sia uguale al precedente. o che il risul
tato di (A +
a stati finiti che i 1. Proget ta un automa riconos ca sequen ze binarie di lunghe B) + C è ugua ⎦⎥
emette in uscita esempio, devono zza 4. Per ⎡ 2 + 2 4 + 2 5 + 4 0 + 1 3 + 6 ⎤ ⎡ 5 6 2. 9 1 9 ⎤ le al risultato
dopo che sono state un bigliett
inserite due monete o
essere riconosciute ⎢ ⎥ ⎢ •
⎥ A−
Calcola di A + (B +
C).
B + A = ⎢⎢ 4 + 5 1 + 3 6 + 4 7 + 2 0 + 1 ⎥⎥ = ⎢⎢ 9 4 10 dell’
sequenze: 01001 le seguenti
da 0,50 euro. L’autom 10, 010, 000. Non 1 ⎥⎥ cizio B in riferimento alle
9 eser
a funziona solo con essere riconosciute devono precedente. matrici
da 0,50 euro. monete le sequenze: 10, ⎢ 1 + 7 3 + 8 6 + 3 4 + 4 5 + 2 ⎥ ⎢ 8 11 9 8 7 ⎥ 3.
10000, 001. ⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦ ••
Date le matr
17. 25. •••
Sequenze binarie determina ici A e B dell’
••
Distributore di bigliett
i 2. Progetta un Proget ta un automa a
che finiscono per
111. Come potete vedere confrontando i risultati A + B è uguale a B + A, pertanto la proprietà commutativa è verificata. delle
(3 ⋅ 3) in base sottomatrici di terzo 1,
esercizio
a stati finiti che automa
emette un bigliett
o che riconosca sequen stati finiti riconoscitore Proprietà associativa • elimina le
ai seguenti ordin
suggerimenti: e
sono stati inseriti dopo che ze binarie che finiscon ultim
0,60 euro. L’autom 111. Per esempi o per • elimina seco e due colonne
con monete da 10 a funziona o, devono essere
riconosciute Siano A, B, C ∈ !3×4 tre matrici rettangolari così definite 4. ••
Date le segu
non fornisce resto.
o da 20 centesimi
di euro e
le seguenti sequen
ze: 0100111, 111, enti matrici, • elimina prim nda e terza colonna
Non devono essere 00011 ⎡ 1 0 4 2 ⎤ ⎡ 2 3 0 1 ⎤ ⎡ 1 2 2 1 ⎤ calcolane a riga, prim
riconosciute le sequen 1. ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ il prodotto
A ⋅ B.
a, quar ta e
quinta colon
10000, 001. ze: 10, A = ⎢⎢ 3 1 0 3 ⎥⎥ B = ⎢⎢ 2 1 0 4 ⎥⎥ C = ⎢⎢ 1 0 2 3 ⎥⎥ N. na
160 ⎢ 2 1 1 2 ⎥ ⎢ 1 5 2 1 ⎥ ⎢ 3 4 2 1 ⎥ Matrice A
Sezione B Teoria
della comput azione ⎣⎢ ⎦⎥ ⎣⎢ ⎦⎥ ⎣⎢ ⎦⎥ 23 Matrice B
1 45 123
Verifichiamo la validità della proprietà associativa, cioè che (A + B) + C = A + (B + C).
Cominciamo calcolando A + B e al risultato aggiungiamo C. 16 456
213
2 405 042
136 213
213 216
Algebra lineare e algoritmi in C++ A2 3 39
405 04
23
405 16
4
136 213
111 024
5 111 2416

Esercizi con svolgimento guidato


111 5421
7842
Svolgia mo insieme
Siano A ∈ il primo deg
! 3×2 e B ∈ ! 2×3 li esercizi
proposti
due matrici

che mostrano il procedimento


rettangolari

⎢ 2 3 ⎤
A = ⎢ 4 5 ⎥⎥ ⎡
⎢ ⎥ B=⎢ 1 2 3 ⎤
⎢ ⎢ ⎥
⎣⎢ 1 6 ⎦⎥⎥

da seguire
⎣ 4 5 6 ⎥

40
Sezione A
Algoritmi di
calcolo num
erico

VIII
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per apprendere contenuti in lingua straniera

CLIL ASCOLTA
LA PRONUNCIA
GLOSSARIO
CLIL

The Rectilinear Crossing Number Project AUDIO

Many questions in computational and combinatorial It is not difficult to see that with a number of nodes equal
geometry refer to the study of a finite set of points on the to four, intersections may not occur in the graph. With five
Euclidean plane. Many problems in graph theory are framed nodes you can plot different configurations (here you can
in this context when the edges are linear. see different order types (introduced by Goodman and
ARIO A major issue concerns the number of straight line Pollack in 1983)). If you draw five nodes forming a convex
GLOSS
CLIL intersections (for example, problems of transport and figure there are five crossings. The best you can do is have
ASCOLTA UNCIA optimizing layout in the press): What is the minimum a single intersection (there is no way to draw a complete
LA PRON number of crossings in a drawing of the complete graph graph of five nodes without crossing, even if the sides
AUDIO of n points on a plane? A complete graph is one in which are curved).
each point (node) is connected to all others. It also assumes Maximizing the number of crossings is easy: just place

CLIL the most generic position possible for the nodes, this implies
that in the graph no three nodes are aligned.
presen
ce in the
all the n nodes in a circle to get the maximum number
of intersections.

ge nce derived
from the to the rule
s of

l intelli
ilar
lities are s, which are sim
ia se capabi
Artific
rule ky
All of the set of precise Choms
a guage,
ent mind of system. ory of lan tactic
is of intellig form al s, in their the ary role to syn e
the bas a son
ious rea assigned a primry speaker is
abl
bols is For var
cess sym terizes followers nks to this eve
lity to pro t charac and his correct
The abi sing tha ence. Tha ve that: grammatically
or. ic proces ge. compet ately percei
behavi symbol langua use” is
a
mple of verbal to imm
edi
s the mo
The exa ngs t doubt en 100 and cat eat
bei is withou we a) “the ce, while .
human atest extent took place bet erienced the our ten eat s” is not
to the gre of language , a time which Homo sapien
exp s, sen
mouse
the t in the
“the cat fact tha process of
gin ted b) by the
The ori yea rs ago ere ntia erm ine d me al
tric which,
usand has diff hominids. d. n is det (or in the sym are followed
200 tho ry leap that cies of nnecte
interco lligent ognitio es
This rec n of a sentence ce) formal rul guage.

Schede CLIL in inglese


evoluti
ona other spe closely inte
from all elligence are es that any of formatio ding a senten mmar of a
lan
groups uential
species, int um
test ass municate by
me ans
tan gra differe nt
ge and unders make up the a seq
Langua e, the Turing to com er, div ided into necessarily in or to the The hunt to discover the crossing number of a complete to determine the rectilinear crossing number for values of
sam eth are t ,
All the know how ans do. artificial tog s, which lied (no t senten
ces in
 magraph started with R. Guy in the 1960s. As of the year 2000 n less than 50. So far we have been successful for n ≤ 17.
er must hum goals of grams that These rule ents), are app n of correc er speakers. The only the values for n ≤ 9 were known, in 2001 the case for
comput guage, as we of the main of pro pon ctio Recent work (as yet unpublished) has found the rectilinear
ech. (or com to the constru spoken by oth the Chomsky andn = 10 was solved, while in 2004 it was that of n = 11.

per integrare abilità


lan
natural beginning one development language spe r) s) of tence e
crossing number for n = 19 and n = 21. The desire to solve
Since the e has been
the l ted manne n of sentences ponent of a sen ely ablThe
d natura were motiva fact ificatio basic comeral structure
main objective of the project is to use sophisticated the problem for n = 18 has become truly irresistible: this will
llig enc und erstan ctio n uli. In ver s (or is intu itiv e
inte of rule mathematical methods (order type abstract extensions) be the main objective of the project.
duce and in this dire tical stim group s the gen that everyone r as to compris
can pro the first steps ns than theore projects in the by ory det ermine
the fac t
a ma nne
ch ed t
Actually, practical concer g for resear e were attract ion the accoun in such es.
es into rds together

linguistiche e disciplinari
re by t fun din llig enc tran slat tak ph ras
mo lies wo as
the ear ficial inte machine l application to group groups kno
wn
some of cent field of arti g systems of me rcia ctio nal
pin com fun
then nas ct of develo ges, whose ge
l langua of artificial
pro spe lan gua nat ura s
the different earch on g sector
between is) obvious. Res of the leadin nal linguistics.
d one atio
was (an g constitutes comput
sin ticular,
proces , in par Focus … and now answer!
ence and D PHRA
SES
intellig three
NCE AN divided into
MPETE n, is
GU ISTIC CO ence, in tur speake
r to The configuration of large sets of nodes 1 What is The Rectilinear Crossing Number Project?
LIN compet lity of a guage; For large sets of nodes it is very difficult to determine
Linguistic s: e: the abi ken lan 2 What is the number of nodes for which a solution
ent petenc sounds of spo e or the best configuration. The main reason is that the
compon logical com to the rectilinear crossing number is being sought?
ph ono ers tand the lity to produc number of different ways to draw the nodes grows
• e and und e: the abi t sentences; ract exponentially.
produc competenc cor rec ign or to ext
tac tic atically lity to ass For example, for n = 11 there are already more
• syn ize gramm e: the abi ry
recogn competenc . Gl os sa e
than
nds two billion (precisely 2,334,512,907) different
antic ces petenc d the sou
configurations.
• sem ng from senten nol ogi cal com and understan
meani • Pho duce
lity to pro ge.
the abi
en langua atically
of spok petenc
e gramm124 Sezione A Algoritmi di calcolo numerico
ognize
tactic com duce or rec
• Syn
lity to pro .
the abi ces
rec t senten e ng from
cor petenc t meani
Sem antic com ign or to extrac

lity to ass
the abi .
ces
senten all
te length s.
guage ces of fini et of symbol
• Lan senten alphab
tion of a finite
a collec
cted from
constru

ne
putazio
ria del la com
e B Teo
Sezion
240

Contenuti digitali

Risorse multimediali
• Esercizi commentati
• Laboratori “Case studies” per mettere in pratica le competenze acquisite
• File audio delle Sintesi testuali
• Mappe dei concetti chiave in versione modificabile
• Test autocorrettivi interattivi
• File audio “Ascolta la pronuncia”
• Glossario in italiano e in inglese interattivo con funzione di ricerca

• File sorgenti di tutti i codici in C++


Materiale a supporto e in Octave presenti nel volume
del testo nel CD-ROM • File Excel presenti nel volume
• Esercizi commentati
• Laboratori “Case studies”

IX
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Indice contenuti digitali


integrativi

SEZIONE A
ALGORITMI DI CALCOLO NUMERICO 1

 A1  I numeri nel computer 2 FILE SORGENTI


Codici in C++
1 Errore computazionale 2
2 Rappresentazione dei numeri 5 LABORATORIO CASE STUDY
Codice binario
3 Errore assoluto e relativo 7
4 Aritmetica finita 9 AUDIO
Ripassiamo insieme
OSSERVA COME SI FA 11
ORA TOCCA A TE 11
MAPPA MODIFICABILE
5 Propagazione dell’errore 12
OSSERVA COME SI FA 16
Ripassiamo insieme 17
Sintesi • Mappa
Allena le tue abilità e le tue competenze 19

 A2  Algebra lineare e algoritmi in C++ 22 FILE SORGENTI


Codici in C++
1 Matrici e vettori 22
2 Operazioni su matrici 24 ESERCIZI COMMENTATI
Le basi del linguaggio C++
OSSERVA COME SI FA 25 Programmazione in C++
ORA TOCCA A TE 25
ORA TOCCA A TE 27 AUDIO
Ripassiamo insieme
3 Autovalori e autovettori di una matrice 27
4 Determinante di una matrice 27 MAPPA MODIFICABILE
OSSERVA COME SI FA 28
ORA TOCCA A TE 30
5 Inversa di una matrice 31
6 Norme 32
OSSERVA COME SI FA 33
ORA TOCCA A TE 34
OSSERVA COME SI FA 34
ORA TOCCA A TE 35
OSSERVA COME SI FA 36
Ripassiamo insieme 37
Sintesi • Mappa
Allena le tue abilità e le tue competenze 39

 A3  Algebra vettoriale e matriciale in Octave 49 FILE SORGENTI


Codici in Octave
1 Octave: una valida alternativa gratuita a MATLAB 49 File Excel
2 Calcolo matriciale 53
AUDIO
OSSERVA COME SI FA 55 Ripassiamo insieme
ORA TOCCA A TE 55
3 Variabili e operatori 56 MAPPA MODIFICABILE
4 Octave come linguaggio di programmazione 58
5 Le strutture di controllo 62
OSSERVA COME SI FA 65
ORA TOCCA A TE 68

X
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Ripassiamo insieme 69
Sintesi • Mappa
Allena le tue abilità e le tue competenze 71

 A4  Applicazioni scientifiche in Octave, in Excel e in C++ 77 FILE SORGENTI


Codici in Octave
1 Risoluzione di sistemi lineari: metodo di Cramer 77 File Excel
2 Risoluzione di sistemi lineari: i sistemi triangolari 81
LABORATORIO CASE STUDY
3 Risoluzione di sistemi lineari: metodo di eliminazione di Gauss87 Analisi delle immatricolazioni
OSSERVA COME SI FA 88 in Università
ORA TOCCA A TE 90 AUDIO
4 Risoluzione di sistemi lineari: metodo iterativo di Jacobi 94 Ripassiamo insieme
5 Metodi di interpolazione: polinomio di interpolazione di Lagrange 100
MAPPA MODIFICABILE
6 Metodi di interpolazione: polinomio di interpolazione di Newton 105
7 Metodi di approssimazione: fitting di dati 111
Ripassiamo insieme 118 AUDIO
Sintesi • Mappa Ascolta la pronuncia
Allena le tue abilità e le tue competenze 120
GLOSSARIO CLIL
CLIL 124

SEZIONE B
TEORIA DELLA COMPUTAZIONE 125

 B1  Sistemi e modelli 126 AUDIO


Ripassiamo insieme
1 I sistemi 126
OSSERVA COME SI FA 127
MAPPA MODIFICABILE
2 Caratteristiche e comportamento di un sistema 128
OSSERVA COME SI FA 130 TEST
3 Classificazione dei sistemi 132 Svolgi il test interattivo
ORA TOCCA A TE 135
4 Rappresentazione dei sistemi: i modelli 136
Infografica • Classificazione dei modelli 138
Ripassiamo insieme 140
Sintesi • Mappa
Metti a punto le tue conoscenze 142
Allena le tue abilità e le tue competenze 143

 B2  Teoria degli automi 145 AUDIO


Ripassiamo insieme
1 Che cosa sono gli automi 145
2 Gli automi a stati finiti 145 MAPPA MODIFICABILE
3 Come si rappresentano gli automi 146
4 Il diagramma degli stati 147 TEST
OSSERVA COME SI FA 148 Svolgi il test interattivo

OSSERVA COME SI FA 149


5 Le tabelle di transizione 151
OSSERVA COME SI FA 152
6 Gli automi riconoscitori 153
OSSERVA COME SI FA 153

XI
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA 154


ORA TOCCA A TE 156
Ripassiamo insieme 157
Sintesi • Mappa
Metti a punto le tue conoscenze 159
Allena le tue abilità e le tue competenze 160

 B3  Teoria della calcolabilità 161 AUDIO


Ripassiamo insieme
1 Problemi, algoritmi e modelli computazionali 161
2 Un modello computazionale: la macchina di Turing 163 MAPPA MODIFICABILE
3 Comportamento della macchina di Turing 167
OSSERVA COME SI FA 168 TEST
4 Rappresentazione della funzione di transizione 170 Svolgi il test interattivo

Infografica • La macchina di Turing universale e la tesi di Church 172


OSSERVA COME SI FA 174
ORA TOCCA A TE 176
Ripassiamo insieme 179
Sintesi • Mappa
Metti a punto le tue conoscenze 181
Allena le tue abilità e le tue competenze 182

 B4  La complessità computazionale 184 AUDIO


Ripassiamo insieme
1 Qualità di un algoritmo 184
2 Costo di un algoritmo 186
MAPPA MODIFICABILE
OSSERVA COME SI FA 188
3 Complessità computazionale 193 TEST
OSSERVA COME SI FA 195 Svolgi il test interattivo

4 Complessità e valori dei dati di ingresso 196


5 Ordine di grandezza e classi di computabilità 198
6 Efficienza di un algoritmo 200
OSSERVA COME SI FA 203
Ripassiamo insieme 205
Sintesi • Mappa
Metti a punto le tue conoscenze 207
Allena le tue abilità e le tue competenze 208

 B5  Intelligenza artificiale e reti neurali 211 AUDIO


Ripassiamo insieme
1 Che cosa è l’intelligenza artificiale 211
2 Intelligenza artificiale forte e debole 213 MAPPA MODIFICABILE
Infografica • L’intelligenza artificiale: le origini 214
Infografica • Aree di applicazione dell’intelligenza artificiale 218 TEST
Svolgi il test interattivo
3 Il contributo di Turing 220
4 Il contributo di Searle 221
5 Intelligenza artificiale, informatica e robotica 222
6 Risoluzione automatica dei problemi 224
7 I sistemi esperti 226
8 Le reti neurali: generalità 227
9 Le reti neurali: l’approccio operativo 230
10 Algoritmi genetici e logica fuzzy 232

XII
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Ripassiamo insieme 236 AUDIO


Sintesi • Mappa Ascolta la pronuncia
Metti a punto le tue conoscenze 238
GLOSSARIO CLIL
CLIL 240

Sistemi di controllo a catena aperta e chiusa

Automi di Mealy, di Moore e senza uscite

Macchine astratte

Complessità e classificazione dei problemi

SEZIONE C
INFRASTRUTTURE DI RETE E ASPETTI DI SICUREZZA 241

 C1  Protocolli di rete 242 LABORATORIO CASE STUDY


Reti informatiche
1 Reti di computer 242 Progettazione di una rete
2 I tipi di rete 243 informatica LAN
3 Le topologie di rete 244 AUDIO
4 Tecniche di commutazione e protocolli 245 Ripassiamo insieme
5 Il modello architetturale ISO/OSI 247
MAPPA MODIFICABILE
6 ISO/OSI: la comunicazione tra host 250
7 I compiti dei sette strati funzionali 252 TEST
8 Il livello fisico: il protocollo CSMA/CD 253 Svolgi il test interattivo
9 Il livello data link 255
10 Il controllo del flusso dei frame 258
11 Gestione degli errori 258
12 La suite TCP/IP 262
13 Interconnessione di reti: bridge, router e gateway 264
14 Classi di reti e indirizzi IP 264
15 La subnet mask 267
16 Reti peer-to-peer e reti client-server 270
Infografica • I dispositivi di rete 272
17 La comunicazione tra reti differenti 274
Ripassiamo insieme 277
Sintesi • Mappa
Metti a punto le tue conoscenze 279

 C2  La sicurezza delle reti e la crittografia dei dati 283 LABORATORIO CASE STUDY
La sicurezza dei dati in rete
1 La sicurezza: introduzione 283
2 Sicurezza dei dati in rete 285 AUDIO
Infografica • Hacker e strumenti per violare la sicurezza 288 Ripassiamo insieme

3 Protezione dagli attacchi 290


MAPPA MODIFICABILE
4 La crittografia 292
5 La firma digitale 297 TEST
Svolgi il test interattivo
6 Firma digitale, certificatori e certificati 299
7 Sistemi di sicurezza nelle reti 302

XIII
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Ripassiamo insieme 305


Sintesi • Mappa
AUDIO
Metti a punto le tue conoscenze 307 Ascolta la pronuncia
Allena le tue abilità e le tue competenze 309
GLOSSARIO CLIL
CLIL 310

SEZIONE D
INTERNET: SERVIZI, PRIVACY E SICUREZZA
NELLA SOCIETÀ DIGITALE 311

 D1  Il livello applicativo 312 ESERCIZI COMMENTATI


Web design
1 Architettura per il Web 312 I Tag HTML
2 Struttura e rappresentazione 314 La programmazione Internet
I fogli stile CSS
3 Hosting e housing 316
Infografica • Eseguire ricerche nel WWW 318 AUDIO
Ripassiamo insieme
4 Pubblicare un sito 320
5 CMS 322 MAPPA MODIFICABILE
Ripassiamo insieme 325
Sintesi • Mappa TEST
Svolgi il test interattivo
Metti a punto le tue conoscenze 327
Allena le tue abilità e le tue competenze 328

 D2  Il Web e i suoi sviluppi futuri 329 AUDIO


Ripassiamo insieme
1 Dal Web 1.0 al Web 4.0 329
2 Realtà virtuale e realtà aumentata 332 MAPPA MODIFICABILE
3 Differenze fra realtà virtuale e realtà aumentata 334
4 Internet delle Cose 334 TEST
Svolgi il test interattivo
5 Big Data 338
6 L’Industria 4.0 339
Ripassiamo insieme 341
Sintesi • Mappa
Metti a punto le tue conoscenze 343

 D3  L’informatica giuridica nella società digitale 345 AUDIO


Ripassiamo insieme
1 La tutela giuridica del software 345
2 Software e licenze 347
MAPPA MODIFICABILE
3 La Privacy e il trattamento dei dati 350
4 Il Codice dell’Amministrazione Digitale 355 TEST
Svolgi il test interattivo
5 Lo SPID 359
Ripassiamo insieme 362 AUDIO
Sintesi • Mappa Ascolta la pronuncia
Metti a punto le tue conoscenze 364
GLOSSARIO CLIL
CLIL 366

UNITÀ DIGITALE D4  WordPress

XIV
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

GNU Octave®, C++®, Microsoft Excel®, DropBox®, GoogleApps®, Prezi®, WordPress® sono marchi registrati
dai rispettivi titolari.

Referenze iconografiche
© GettyImages – © Fotolia – © Fuse – © iStock – © Hemera – © Shutterstock – © StockPhotoAstur – © Corbis – p. 167: © Museo
Nazionale della Scienza e della Tecnologia “Leonardo da Vinci”, Milano; Alessandro Nassiri

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

Sezione A
ALGORITMI DI CALCOLO
NUMERICO

A1 A2 A3 A4
I numeri nel computer Algebra lineare e Algebra vettoriale e Applicazioni
Rappresentare i numeri reali algoritmi in C++ matriciale con Octave scientifiche in Octave,
all’interno del calcolatore L’algebra lineare è GNU Octave è un software in Excel e in C++
non è sempre un’operazione la branca della matematica gratuito e open source Un sistema di equazioni
indolore: la parte decimale che si occupa dello per il calcolo scientifico, lineari, anche detto
può essere costituita studio dei vettori, spazi un’applicazione software sistema lineare, è un
anche da una serie infinita vettoriali (o spazi lineari), per l’analisi numerica sistema composto da
di cifre. La memoria del trasformazioni lineari e in gran parte compatibile più equazioni lineari che
calcolatore e le operazioni sistemi di equazioni lineari. con MATLAB. devono essere verificate
fatte sui numeri devono In questa Unità affronteremo Ha un insieme di funzionalità tutte contemporaneamente.
avere necessariamente una lo studio di vettori e per effettuare il calcolo Usando le matrici
caratteristica di finitezza; matrici, ne analizzeremo matriciale e consente di e il prodotto scalare fra
pertanto, in questi casi, proprietà e caratteristiche trovare la soluzione numerica matrici si possono separare
si procede eliminando effettuando delle operazioni di sistemi lineari. i coefficienti, le incognite e
una parte dell’informazione. su essi attraverso la relativa i termini noti del sistema e
Qual è l’errore che algebra. Affronteremo risolvere i sistemi applicando
si commette eliminando invece i sistemi lineari nelle soluzioni algoritmiche.
tali cifre? Quanto incide prossime Unità.
tutto ciò sul risultato finale?

PREREQUISITI OBIETTIVI
Conoscenze Conoscenze Abilità
• Conoscenza del linguaggio C++ • Errori computazionali e • Saper risolvere situazioni problematiche
• Le strutture di controllo e le propagazione dell’errore relative all’algebra matriciale e vettoriale
strutture dati principali come • Algebra vettoriale e matriciale attraverso opportuni software
vettori e matrici • Tecniche di utilizzo del software • Saper risolvere sistemi lineari con un
• Conoscenza dell’ambiente Excel Octave per il calcolo numerico numero elevato di incognite
di Microsoft • Metodo diretto di soluzione dei • Saper interpolare dei dati attraverso
Abilità sistemi lineari (Cramer) delle funzioni polinomiali
• Metodo iterativo per la Competenze
• Saper strutturare un programma soluzione di sistemi lineari
in C++ utilizzando le funzioni (Jacobi) • Acquisire la padronanza di strumenti
• Saper utilizzare e gestire vettori • Metodo per convertire una dell’informatica e utilizzare tali
e matrici in C++ matrice non triangolare in strumenti per la soluzione di problemi
• Essere in grado di inserire triangolare (eliminazione di significativi in generale, ma in particolare
formule con riferimenti relativi e Gauss) connessi allo studio della matematica
assoluti in Microsoft Excel • Fitting di dati attraverso la retta • Acquisire la consapevolezza dei vantaggi
dei minimi quadrati e dei limiti dell’uso degli strumenti e dei
• Polinomi di interpolazione di metodi informatici e delle conseguenze
Newton e Lagrange scientifiche e culturali di tale uso

1
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

A1 I numeri nel computer

FILE SORGENTI
Codici in C++

LABORATORIO CASE STUDY


Codice binario

IMPARERAI…

Come si rappresentano i numeri Il concetto di aritmetica finita e l’errore


all’interno del computer dovuto alle approssimazioni

1 Errore computazionale
Obiettivo del calcolo numerico è quello di fornire procedure di calcolo (algoritmi numeri-
ci), che, con un numero finito di operazioni elementari, consentano di individuare la soluzio-
ne di un problema, eventualmente in forma approssimata.

In generale, gli algoritmi sono iterativi sequenziali, ovvero partono da valori iniziali per cal-
colare nuovi valori; a questi viene riapplicata la stessa formula, e così via. Ovviamente, l’algo-
ritmo è valido se la successione dei valori da esso calcolata converge alla soluzione voluta. In
altri termini, la procedura deve individuare, a partire da una valutazione non corretta della so-
luzione, approssimazioni via via migliori; operando in tal modo, l’errore insito nella previsione
iniziale viene ridotto a un limite accettabile e l’ultimo valore calcolato viene così utilizzato
come soluzione del problema in esame.
Altrettanto importante rispetto alla buona valutazione della soluzione è la messa a punto di
algoritmi efficienti, cioè di procedure che permettano di risolvere un problema nel modo mi-
gliore. In pratica, nella classe dei metodi che forniscono la soluzione entro la precisione voluta,
sono preferibili quelli la cui impostazione sul calcolatore risulti più semplice per l’utente e il cui
tempo di esecuzione sia più breve. Pertanto:

Il calcolo numerico si usa quando:


• non esistono algoritmi esatti di risoluzione;
• gli algoritmi esatti non sono efficienti (tempo, memoria) o producono un alto costo compu-
tazionale.

In questi casi, la soluzione dei problemi avviene per mezzo di algoritmi approssimanti, i quali
determinano le soluzioni del problema per approssimazioni attraverso metodi iterativi.

L’impiego di un calcolatore permette di effettuare operazioni elementari fra numeri in tempi


molto brevi, offrendo la possibilità di risolvere problemi molto complicati mediante l’esecuzio-
ne di algoritmi complessi, costituiti da operazioni elementari.
Tuttavia il calcolatore, essendo una macchina finita, è costretto a operare con numeri rappre-
sentati da un numero finito di cifre; ne consegue che, in genere, un numero reale introdotto nel
calcolatore viene approssimato mediante un numero finito, detto anche numero di macchina.

2 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Pensiamo, per esempio, ai numeri π o 2 che hanno un numero infinito di cifre; essi non po-
tranno mai essere rappresentati correttamente su un calcolatore. Eseguendo poi operazioni
elementari sui numeri finiti, potremmo ottenere risultati non più rappresentabili esattamente
dal calcolatore.
Questo significa che quando si esegue un algoritmo su un calcolatore si ha, in generale, una
creazione e propagazione degli errori; infatti, il risultato prodotto dall’algoritmo differisce
dal risultato esatto, cioè da quel risultato che otterremmo invece lavorando con i numeri reali.

Il controllo degli errori introdotto dall’uso dei numeri finiti è molto importante al fine di
determinare l’attendibilità dei risultati ottenuti.

L’esigenza di introdurre l’incertezza nasce da un’osservazione sperimentale: la ripetizione del-


la misura di una medesima grandezza in talune condizioni porta a risultati diversi, sia pure
tutti raggruppati in un intervallo limitato.
Se volessimo ridurre a un unico valore la molteplicità di numeri che si riferiscono a una stessa
quantità di grandezza, dovremmo cercare, in primo luogo, le cause che generano questa varia-
bilità di risultati della misura ripetuta, e in secondo luogo, definire delle modalità per ricavare
un unico valore dalla molteplicità dei valori ottenuti mediante le operazioni di misura ripetute.
Possiamo individuare tali cause in due possibili categorie, una legata più propriamente ai li-
miti imposti dagli strumenti con cui le operazioni di misura vengono effettuate, l’altra legata
all’ambiente in cui tali operazioni hanno luogo.

Si definisce sensibilità di uno strumento la più piccola quantità di grandezza misurabile


univocamente con esso.

Per esempio:
• per un righello millimetrato la sensibilità è 1 mm;
• per una bilancia con scala graduata in grammi la sensibilità
è 1 grammo.

Si definisce precisione di uno strumento il rapporto tra la


sensibilità dello strumento e la massima quantità di grandezza
(range di valori) che lo strumento può misurare.

La precisione è quindi un numero adimensionale, ossia un nu-


mero privo di unità di misura; possiamo dire quindi che la pre-
cisione di uno strumento è tanto maggiore quanto minore è il
numero che la esprime.
Per esempio:
• una riga di 1 metro, con suddivisione in millimetri, ha una precisione di:
1 mm
= 10−3
1000 mm

• una bilancia, che può pesare una massa di entità massima di 10 kg con una graduazione in
grammi, ha una precisione di:
1g
= 10−4
10.000 g

I numeri nel computer A1 3


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I risultati numerici possono essere influenzati da diversi tipi di errori:


■ semplificazioni introdotte in un modello: sono errori dovuti per esempio al fatto che il
modello si suppone di tipo lineare (come nel caso di una traiettoria curvilinea che viene
suddivisa in segmenti infinitesimali, per cui il moto diventa rettlineo), oppure si suppongo-
no trascurabili alcune grandezze fisiche (come quando si trascura l’attrito durante il moto
di un oggetto); per questo, è necessario predisporre un modello il più adeguato possibile;
■ errore nei dati: i dati di un problema sono il risultato di misurazioni che possono essere
influenzate da due tipi di errore:
• errori sistematici: dipendono dalla sensibilità dello strumento di misurazione;
• errori random: sono dovuti al verificarsi contemporaneo di eventi imprevedibili;
■ errori di arrotondamento nei dati e nei calcoli: sono gli errori introdotti nella rappre-
sentazione dei numeri all’interno di un computer. I numeri reali, infatti, sono infiniti, men-
tre la memoria di un calcolatore ha una capacità finita;
■ errori di troncamento: sono errori che si introducono quando un procedimento infinito è
approssimato mediante un procedimento finito; per esempio, quando le operazioni di pas-
saggio al limite vengono approssimate con le operazioni che richiedono un numero finito
di passi.

Gli errori di arrotondamento e di troncamento costituiscono l’errore computazionale.

Nello studio degli algoritmi numerici si cerca di ridurre al massimo questo tipo di errore, sfor-
zandosi però di conservare affidabilità ed efficienza.
Il seguente schema mette in evidenza l’errore generato nel passaggio da un modello a un altro.

1
problema fisico
em uf e

2 ec 4
modello matematico modello computazionale
F(u,d) = 0 un

en 3 eu
modello numerico
Fn(un,dn) = 0

Nello schema, indichiamo con uf la soluzione del problema originario


(che chiamiamo problema fisico) e con F(u,d) = 0 il modello matematico
che descrive il problema fisico.
Nella funzione, d corrisponde all’insieme dei dati, u rappresenta la soluzione
e F la relazione funzionale che lega fra loro dati e soluzione.

4 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

2 Rappresentazione dei numeri


Nella rappresentazione dei numeri reali al calcolatore, dobbiamo considerare il problema della
finitezza della memoria a fronte di numeri reali che possono avere uno sviluppo decimale illi-
mitato, e alla conseguente ambiguità di rappresentazione di un numero reale nelle notazioni
scientifiche. Per esempio, il numero 34,61 equivale a:
34,61 = 3,461 ⋅ 101 = 0,3461 ⋅ 102 = 3.461 ⋅ 10–2
L’ambiguità di rappresentazione di un numero reale viene risolta convenzionalmente utiliz-
zando la notazione posizionale:
x = ±0, d1 d2 d3 ... dk ⋅ 10 p
con le cifre di comprese tra 0 e 9 (0 ≤ di ≤ 9), se si utilizza la rappresentazione in base 10 e d1
diverso da zero.
Possiamo utilizzare la notazione posizionale con una qualunque base B (numero intero), cioè:
x = ±0, d1 d2 d3 ... dk ⋅ B p con 0 ≤ di ≤ B − 1 e d1 ≠ 0

Quindi, dato un numero reale x diverso da zero, l’espressione precedente è la rappresentazio-


ne in base B del numero x, dove:
• il numero p si dice esponente o caratteristica;
• i valori di sono le cifre della rappresentazione;
• 0, d1d2d3 … dk si dice mantissa del numero.
Possiamo rappresentare un numero reale x diverso da zero anche con infinite cifre nella man-
tissa.
Fatta questa premessa, dobbiamo comprendere come sia possibile rappresentare i numeri reali
all’interno del calcolatore. Poiché i registri delle unità aritmetiche e i dispositivi di memoria
di un calcolatore consentono l’allocazione di un numero finito di cifre binarie, non si possono,
in molti casi, memorizzare tutte le cifre presenti nella rappresentazione normale del numero.
Pertanto, dobbiamo necessariamente stabilire dei criteri con cui rappresentare nel calcolatore
i numeri reali, in modo tale da commettere il minimo errore possibile.
La rappresentazione di un numero all’interno di un calcolatore viene effettuata assegnando
delle posizioni di memoria per il segno, per l’esponente e per la mantissa del numero; possia-
mo schematizzare così tale rappresentazione:

segno esponente mantissa

I numeri rappresentabili nel precedente modo su un determinato calcolatore sono detti nu-
meri di macchina; la rappresentazione dei numeri di macchina è detta rappresentazione in
virgola mobile o floating point.

La forma che prevede la mantissa con una sola cifra (≠ 0) prima della virgola è definita nor-
malizzata. I numeri in virgola mobile, di solito, sono normalizzati; l’esponente è aggiustato in
modo che il bit più significativo della mantissa sia 1 e, dato che sarà sempre 1, non è necessario
specificarlo.
Rappresentazione binaria:
1001,01001 = 1,00101001 ⋅ 23 (forma normalizzata)

I numeri nel computer A1 5


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Notazione IEEE
L’ampiezza dello spazio dedicato all’esponente e alla mantissa e le modalità della loro memo-
rizzazione variano da calcolatore a calcolatore e ne rappresentano una caratteristica fonda-
mentale.
Una configurazione molto diffusa è quella stabilita dallo standard dell’IEEE (Institute of
Electrical and Electronics Engineers).
La notazione IEEE 754 prevede una singola precisione a 32 bit e una doppia precisione a
64 bit; entrambe utilizzano la forma normalizzata e, in particolare:
• 1 bit per il segno;
• 8 o 11 bit per l’esponente;
• 23 o 52 bit per la mantissa.

IEEE Rappresentazione Floating Point in singola precisione


s esponente mantissa Puoi approfondire
La codifica
dell’informazione
1 bit 8 bit 23 bit nel menu
Materiali aggiuntivi
IEEE Rappresentazione Floating Point in doppia precisione del libro digitale.

s esponente mantissa

1 bit 11 bit 52 bit

Per il segno, il valore del bit ha il seguente significato:


0: segno +
1: segno −
Per la singola precisione, l’esponente p è rappresentato come ex in 8 bit a eccesso 127
(127 = 28−1 − 1), con le configurazioni 00000000 e 11111111 non ammesse, in cui:
ex = p + 127 → p = ex −127 (−126 ≤ ex ≤ 127)
Per esempio, se il campo esponente di una codifica contiene il numero 00111011 (ex):
ex = 1 + 2 + 8 + 16 + 32 = 59 allora p = 59 − 127 = −68
Ricaviamo il valore decimale del seguente numero in virgola mobile rappresentato secondo lo
standard IEEE 754 a 32 bit: 0 10000000 10000000000000000000000
segno: +
esponente: ex = 27 = 128 → p = 128 − 127 = 1
mantissa: m = 1,1 → N = 1,12 ⋅ 21 = 112 = 310
Per la doppia precisione, l’esponente p è rappresentato come ex in 11 bit a eccesso 1023
(1023 = 211−1 − 1), con le configurazioni 00000000000 e 11111111111 non ammesse, in cui:
ex = p + 1023 → p = ex −1023 (−1022 ≤ ex ≤ 1023)
Per esempio, se il campo esponente di una codifica contiene il numero 10011101011 (ex):
ex = 100111010112 = 125910 allora p = 1259 − 1023 = 236
Rappresentazione in doppia precisione del numero 3/4 = 0,75:
3/4 = 112 ⋅ 2–2 → 1,12 ⋅ 2–1

6 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

ex = −1 + 1023 = 102210 = 011111111102

0 01111111110 100000000000000000… … … … … 000000000


segno ↑ |_ esponente_| |______________ mantissa ________________|

3 Errore assoluto e relativo


Quali numeri possiamo rappresentare con la notazione introdotta?
Quando l’esponente è troppo grande e non è più rappresentabile con gli 8 bit assegnati siamo di
fronte a un problema conosciuto come overflow.
Il valore più grande possibile da rappresentare con la notazione a 32 bit sarebbe:
1111 11112 − 12710 = 255 − 127 = 128
In realtà, l’esponente 1111 11112 viene riservato per indicare situazioni anomale. Quindi, il più
grande esponente utilizzabile è 127.
Si può verificare anche la situazione opposta, denominata underflow: l’esponente diventa
“troppo piccolo”. Il più piccolo valore rappresentabile sarebbe:
000000002 − 12710 = −12710
ma, anche in questo caso, la rappresentazione 000000002 viene riservata alla rappresentazione
dello zero, quindi il più piccolo esponente utilizzabile è −126.
Se le cifre decimali della mantissa di un numero x sono in numero superiore a quelle consentite
dalla rappresentazione, dobbiamo operare qualche approssimazione per la sua memorizzazio-
ne.
Tra i vari modi di operare ci sono, sostanzialmente, due strategie:
• troncamento;
• arrotondamento.

■ Il troncamento consiste semplicemente nel trascurare tutte le cifre decimali della mantis-
sa successive alla t-esima cifra consentita; consideriamo un numero reale da memorizzare
avente rappresentazione:
x = ±1, d1 d2 d3 ... dt dt+1 dt+2… ⋅ Bp

Il troncamento alla t-esima cifra è rappresentato come:


tr(x) = ±1, d1 d2 d3 ... dt ⋅ Bp
La sua rappresentazione generica in memoria sarà:

± p d1 d2 d3 ... dt

commettendo un errore pari a:


⏐x − tr(x)⏐ ≤ B p−t

■ L’arrotondamento di un numero x è dato, invece, da:


arr(x) = ±1, d1 d2 d3 ... dt* ⋅ Bp

I numeri nel computer A1 7


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

in cui un’eventuale modifica della cifra t-esima della mantissa dipende dalla cifra dt+1:
⎧⎪ d se dt+1 < B / 2

dt∗ = ⎨
t

⎪⎪ dt +1 se dt+1 ≥ B / 2
⎪⎩
La sua rappresentazione generica in memoria sarà:

± p d1 d2 d3 ... dt∗

commettendo un errore pari a:


1
x −arr(x) ≤ B p−t
2
Il troncamento, come l’arrotondamento, è un’operazione che propaga e accentua l’errore a
ogni passaggio; comprendiamo tale concetto con un semplice esempio con numeri decimali.
Supponiamo di effettuare un’operazione di somma e di non poter memorizzare più di 4 cifre:
1,557 ⋅ 10−4 + 1,983 ⋅ 10−2
Cifra di Cifra di
guardia arrotondamento
0,01557 ⋅ 10−2
1,983 ⋅ 10−2

1,99857 ⋅ 10−2

Il risultato arrotondato sarà:


arr(x) = 1,999 ⋅ 10–2
Troncando prima di sommare si avrebbe:
0,015 ⋅ 10−2
1,983 ⋅ 10−2

1,998 ⋅ 10−2

Come si può vedere, i risultati differiscono di un centesimo, nei due procedimenti. I numeri
tr(x) e arr(x) sono detti entrambi rappresentazioni in virgola mobile (floating point) del nu-
mero x. La funzione che associa al numero reale x il numero di macchina tr(x), oppure arr(x),
viene indicata genericamente con fl(x) (floating point del numero reale x).
In precedenza, abbiamo definito un errore in termini di differenza tra il valore reale e quello
arrotondato o troncato; di fatto, possiamo definire meglio il concetto di errore.
Se x è un numero reale e fl(x) è la sua rappresentazione di macchina, chiameremo:
Errore assoluto:
Ea = x − fl ( x )
Errore relativo (con x ≠ 0):
x − fl ( x )
Er =
x

8 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

da cui risulta che:


Ea = x − fl ( x ) ≤σ B p−t
con
⎧⎪ 1
⎪ se fl (x)= tr(x)
σ = ⎪⎨
⎪⎪ 1/ 2 se fl (x)= arr(x)
⎪⎩
L’errore dipende non solo dalla lunghezza t della mantissa ma anche da p, cioè dall’ordine di
grandezza del numero x.
L’insieme dei numeri di macchina che possono essere trattati da un elaboratore, come abbiamo
avuto modo di comprendere, è un insieme finito. Fissati B, t, L (valore minimo rappresentabile)
e U (valore massimo rappresentabile), la cardinalità di tale insieme risulta:
2(Bm − Bm−1)(U − L + 1) + 1
Spesso, l’insieme dei numeri di macchina viene indicato con il simbolo F(B,t,L,U ) per meglio
evidenziare le caratteristiche della macchina. Dato un qualunque numero reale x ≠ 0, non è
assicurata l’esistenza di fl(x) fra i numeri di macchina.

4 Aritmetica finita
Precisione di macchina
Si definisce precisione di macchina o epsilon di macchina il valore:
ε = σ B 1−t
con t numero di cifre decimali; pertanto:
⎧⎪ B 1−t se fl (x)= tr(x)

ε= ⎪⎨ 1 1−t
⎪⎪ B se fl (x)= arr(x)
⎪⎩ 2

Nei calcolatori, sappiamo che la base di numerazione utilizzata è la base 2 e le cifre sono indi-
cate con 0 e 1, quindi la precisione di macchina è:
ε = σ 21−t
ε è un parametro che caratterizza ogni singola architettura di elaboratore.
La relazione che lega un numero reale x alla sua rappresentazione di macchina fl(x) è:
fl(x) = x (1 + u) con ⏐u⏐ ≤ ε
La conoscenza della precisione di macchina è essenziale per un controllo della propagazione
dell’errore nell’esecuzione dei vari algoritmi di calcolo numerico.
Il seguente algoritmo calcola il valore della precisione di macchina:

C++
#include <iostream>
using namespace std;
// algoritmo Precisione_Macchina
int main()

I numeri nel computer A1 9


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

{
int i;
double e;
e = 1;
i = 0;
while(e+1 > 1)
{
e = e/2;
i++;
}
cout << "Numero di cifre della mantissa=" << i−1 << endl;
cout << "Precisione di macchina=" << 2*e;
}

L’algoritmo si ripete fino a quando la variabile e assume un valore talmente piccolo da essere
interpretato come nullo dalla macchina e termina fornendo in output i valori i − 1 e 2 * e, che
sono rispettivamente:
• il numero delle cifre decimali della mantissa;
• l’epsilon di macchina.
Per esempio, la doppia precisione dello standard IEEE fornisce il valore:
ε = 2 −52

Operazioni di macchina
I numeri di macchina non sono un insieme chiuso rispetto alle operazioni aritmetiche. In ge-
nerale:

Non è garantito che un’operazione aritmetica su due numeri di macchina fornisca come ri-
sultato un numero di macchina.

Questo è facilmente comprensibile avendo analizzato precedentemente i concetti di overflow


e underflow.
Per poter realizzare la naturale e importante proprietà di chiusura di un’operazione in un certo
insieme, risulta importante definire delle operazioni di macchina che permettano di realizzare
tale proprietà. Per questo motivo, per ogni x, y in F, tali che il numero ottenuto dall’operazione
di macchina non dia luogo a overflow o underflow, indichiamo le seguenti operazioni di mac-
china:
⊕ = (x + y) (1 + u) ⊕− = (x − y) (1 + u)

⊗ = (x ⋅ y) (1 + u) ⊕
/ = (x / y) (1 + u)

Le operazioni di macchina che abbiamo definito danno luogo all’aritmetica di macchina o


aritmetica finita.

10 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Indicando con ⊕ * una qualsiasi delle 4 operazioni di macchina e con * una delle 4 operazioni
aritmetiche, si dimostra che:
* y = tr (x * y)
x⊕
* y = arr(x * y)
x⊕
e questo in virtù della chiusura delle operazioni di macchina sull’insieme dei numeri di mac-
china.
In altre parole, un’operazione di macchina coincide con l’approssimazione floating del risulta-
to dell’operazione esatta:
fl(x * y) = x ⊕
*y
Per le operazioni di macchina non valgono alcune proprietà, cioè l’associatività dell’addizione
e della moltiplicazione e la distributività della moltiplicazione rispetto all’addizione.

OSSERVA COME SI FA
■ Vediamo un esempio in cui l’addizione non gode della proprietà associativa.
Sia B = 10 e t = 8, dati i numeri di macchina:
a = 0,23371258 ⋅ 10−4
b = 0,33678429 ⋅ 102
c = −0,33677811 ⋅ 102

1) (a ⊕ b) ⊕ c = 2) a ⊕ (b ⊕ c)

0,00000023371258 ⋅ 102 0,33678429 ⋅ 102


0,33678429 ⋅ 102 − 0,33677811 ⋅ 102
––––––––––––––––––––––––
0,33678452371258 ⋅ 102 0,00000618 ⋅ 102

fl(a + b) = 0,33678452 ⋅ 102 fl(b + c) = 0,61800000 ⋅ 10−3

fl (a + b) 0,33678452 ⋅ 102 a 0,023371258 ⋅ 10−3


c − 0,33677811 ⋅ 102 fl (b + c) 0,61800000 ⋅ 10−3
––––––––––––––––––
0,00000641 ⋅ 102 0,641371258 ⋅ 10−3

fl(fl (a + b) + c) = 0,64100000 ⋅ 10−3 fl(a + fl (b + c)) = 0,64137126 ⋅ 10−3

Il risultato esatto è a + b + c = 0,641371258 ⋅ 10−3.


Perciò osserviamo che il risultato ottimale possiamo ottenerlo con la procedura 2), mentre con la 1) otteniamo un
risultato con solo 3 cifre esatte.

ORA TOCCA A TE
■ Verifica la proprietà associativa con i seguenti numeri:
a = 0,6791 ⋅ 103
b = 0,11111 ⋅ 10−2
c = 0,3295 ⋅ 102

I numeri nel computer A1 11


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

5 Propagazione dell’errore
Una singola operazione tra numeri di macchina dà luogo a un errore relativo dell’ordine della
precisione di macchina; abbiamo visto anche nell’esempio precedente come una singola opera-
zione tra numeri di macchina dia luogo a un errore; quindi, se il risultato di un’operazione è il
dato di un’operazione successiva, l’errore sul dato si propagherà nel risultato finale.
La misura della propagazione dell’errore dipenderà da quanto l’operazione è sensibile alle per-
turbazioni sui dati.
■ Sensibilità dell’operazione somma. Consideriamo due numeri reali x e y e siano fl(x) e
fl(y) le loro rappresentazioni di macchina. Calcoliamo l’errore relativo che viene commesso
dall’elaboratore quando calcola x + y.
( fl (x)⊕ fl ( y ))−(x + y )
Er = ≤3max(|u x |,|u y |,|u|) con ⏐u x⏐,⏐uy⏐,⏐u⏐< ε
x+y

■ Sensibilità dell’operazione differenza. Consideriamo due numeri reali x e y e siano fl(x) e


fl(y) le loro rappresentazioni di macchina. Calcoliamo l’errore relativo che viene commesso
dall’elaboratore quando calcola x − y:
( fl ( x ) ⊕− fl ( y ))−( x − y ) ⎛ y ⎞⎟
≤ u ⎜⎜⎜1+
x ⎟⎟
Er = +
x−y ⎜⎝ x−y x−y ⎟⎠
Quando si sottraggono due numeri di macchina dello stesso segno, con lo stesso esponente
b e con le mantisse che differiscono di poco, si incorre in una perdita di cifre significative
nel risultato. Tale fenomeno è detto cancellazione di cifre significative.

Sequenza di operazioni
L’algoritmo è una sequenza ordinata di operazioni elementari con le quali si ottiene la soluzio-
ne di un determinato problema; ogni operazione della sequenza verrà eseguita come operazio-
ne di macchina, dando quindi origine a due componenti di errore:
• approssimazione delle operazioni di macchina; C++
• propagazione dell’errore accumulato. #include <iostream>
La prima componente di errore in un algoritmo, dovuta alle ap- using namespace std;
prossimazioni delle operazioni di macchina, non supera l’unità di // ALGORITMO Somma
arrotondamento, mentre la seconda componente di errore, la più int main()
importante e “pericolosa”, è dovuta alla propagazione dell’errore {
accumulato fino al passo precedente. Essa dipende esclusivamen-
double Vet[50];
te dalla natura stabile o instabile dell’operazione che si compie al
int I,N = 50;
passo considerato. Un'operazione stabile mantiene costante l'errore
mentre l'operazione instabile lo aumenta notevolmente. double S;
N = 50;
Vediamo ora qual è l’errore da cui è affetta la somma “finita” (cioè
Carica_Vettore(Vet,N);
ottenuta in aritmetica finita) di n numeri finiti.
Siano x1, x2,... xn N numeri finiti da sommare. S = Vet[0];
L’algoritmo Somma è riportato a fianco; lasciamo a te, come eserci- for(I = 1;I < N;I++)
zio, l’implementazione della funzione Carica_Vettore (già esamina- S = S + Vet[I];
ta nei precedenti volumi). cout << "Somma=" << S;
}

12 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I passi eseguiti dall’algoritmo sono:


S1 = x1
S2 = fl(S1 + x2)
S3 = fl(S2 + x3)
..
.
Sn = fl(Sn−1 + xn)

Quindi, il risultato finale Sn differisce dal risultato teorico S; l’errore relativo è dato da:

S −S n ( x1 n+ x 2 (n−1)+...+ x n )
≤ ⋅ 1,01 ⋅ ε
S S
Tale formula mostra che, assegnati i numeri finiti x1, x2, ... xn

la maggiorazione dell’errore relativo della loro somma finita è minima se si sommano que-
sti numeri in modo che i loro valori assoluti siano in ordine crescente

cioè:
⏐ x1⏐≤⏐ x2⏐≤ ... ≤⏐xn
Come applicazione della teoria svolta, supponiamo di voler calcolare il valore del polinomio:
p(x) = anxn + an−1xn−1 + … + a1x + a0

Il calcolo del valore del polinomio p(x) in un dato punto x0 può essere fatto in due modi:
• attraverso lo schema naturale (cioè, calcolando p(x_0));
• attraverso l’algoritmo di Horner.

Il metodo di Horner
Il metodo di Horner si basa sul fatto che il polinomio p(x) può essere scritto nella seguente
forma:
p(x) = (…((an) x + an−1)x + … + a1)x + a0

C++
// ALGORITMO Polinomio Naturale
#include <iostream>
using namespace std;
// prototipi
void Carica_Coefficienti(double Vet[], int);
int Grado_Polinomio();
double Leggi_x();
double Naturale(int, double p[], double);
int main()
{
double Vet[100], X0;
int N;

I numeri nel computer A1 13


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

N = Grado_Polinomio() + 1;
X0 = Leggi_x();
Carica_Coefficienti(Vet, N);
cout << "Valore del polinomio = " << Naturale(N,Vet,X0);
system("pause");
}
void Carica_Coefficienti(double vettore[], int dim)
{
cout << "Inserisci i coefficienti da a0 ... an " << endl;
for (int i = 0; i < dim; i++)
cin >> vettore[i];
}
int Grado_Polinomio()
{
int grado;
cout << "Inserisci il grado del polinomio ";
cin >> grado;
return grado;
}
double Leggi_x()
{
int x;
cout << "Inserisci il valore di x ";
cin >> x;
return x;
}
double Naturale(int n, double p[], double x)
{
double s,po;
s = 1;
po = p[0];
for (int i = 1; i < n; i++)
{
s = s*x;
po = po+p[i]*s;
}
return po;
}

C++
// ALGORITMO Horner
#include <iostream>
using namespace std;
// prototipi
void Carica_Coefficienti(double Vet[], int);
int Grado_Polinomio();
double Leggi_x();

14 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

double Horner(int, double p[], double);


int main()
{
double Vet[100], X0;
int N;
N = Grado_Polinomio() + 1;
X0 = Leggi_x();
Carica_Coefficienti(Vet, N);
cout << "Valore del polinomio = " << Horner(N,Vet,X0);
system("pause");
}
void Carica_Coefficienti(double vettore[], int dim)
{
cout << "Inserisci i coefficienti da a0 ... an " << endl;
for (int i = 0; i < dim; i++) cin >> vettore[i];
}
int Grado_Polinomio()
{
int grado;
cout << "Inserisci il grado del polinomio "; cin >> grado;
return grado;
}
double Leggi_x();
{
int x;
cout << "Inserisci il valore di x "; cin >> x;
return x;
}
double Horner(int n, double p[], double x)
{
double s;
s = p[0];
for (int i = 1; i < n; i++)
s = s*x+p[i];
return s;
}

Il costo computazionale dell’algoritmo naturale è di n somme e 2n moltiplicazioni, mentre l’al-


goritmo di Horner offre maggiori vantaggi:
• minore costo computazionale: infatti l’algoritmo richiede il calcolo di n somme e n molti-
plicazioni;
• maggiore stabilità dello schema naturale per piccoli valori del punto x.
Poiché tutte le volte che si esegue un’operazione in aritmetica floating point si ottiene un risul-
tato approssimato, uno dei principali compiti del calcolo numerico è quello di studiare come
questi singoli errori si propaghino e quale effetto diano sul risultato finale.
Consideriamo ora il seguente esempio di radici di equazioni di II grado.

I numeri nel computer A1 15


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
■ Vogliamo calcolare le radici di un’equazione del tipo: ax2 + bx + c = 0.
Le soluzioni sono:
−b − b2 − 4ac −b + b2 − 4ac
x1 = x2 =
2a 2a

La formula risolutiva fornisce una precisa successione di passi, i quali, partendo dai coefficienti a, b, c, conducono
alle radici x1 e x2.
In matematica pura si suppone che a, b e c siano numeri reali e si eseguano operazioni aritmetiche esatte, inclusa
l’estrazione della radice. Come abbiamo visto, però, un calcolatore non è in grado di svolgere queste operazioni e
nemmeno di memorizzare i numeri reali a, b, c in modo esatto; deve sostituire i numeri reali con numeri in virgola
mobile e le operazioni aritmetiche esatte con le operazioni floating point.

Consideriamo il sistema decimale con t = 4 cifre e l’equazione:


x2 − 6,433x + 0,009474 = 0
Applicando la formula risolutiva ed effettuando le singole operazioni in aritmetica floating point, abbiamo:

α = (6,433)2 = 0,6433 ⋅ 101 ⋅ 0,6433 ⋅ 101 = 0,41383489 ⋅ 102


β = 4 ⋅ 0,009474 = 0,4 ⋅ 101 ⋅ 0,9474 ⋅ 10−2 = 0,37896 ⋅ 10−1
γ = fl (α) = 0,4138 ⋅ 102
δ = fl (β) = 0,3789 ⋅ 10−1
γ − δ = 0,4138 ⋅ 102 − 0,0003789 ⋅ 102 = 0,4134211 ⋅ 102
η = fl (γ − δ) = 0,4134 ⋅ 102
fl ( η ) = fl (0,64296 ... ⋅ 101) = 0,6429 ⋅ 101

Da cui otteniamo la radice:

−b − b2 − 4ac ⎛ 0,6433 ⋅10 − 0,6429 ⋅10 ⎞⎟


x1 = = fl ⎜⎜ ⎟⎟ =
2a ⎝ 2 ⎠
⎛ 0,0004 ⋅10 ⎞⎟
= fl ⎜⎜ −2
⎟⎟ = 0,2000 ⋅10 = 0,0020
⎝ 2 ⎠

In aritmetica reale avremmo ottenuto:

6,433 − 41,383489 − 0,037896 6,433 − 41,345593 6,433 − 6,4300538


x1 = = = = 0,0014731
2 2 2

Il risultato ottenuto in aritmetica floating point è molto diverso. Ciò è dovuto in particolare all’ultimo passaggio, dove
calcoliamo la differenza fra numeri molto simili in modulo. Questo produce il fenomeno della “cancellazione di cifre
significative”, che è un’operazione molto pericolosa e, se possibile, da evitare.

Nel caso di somme, invece, il problema è più marginale; verifichiamo sul valore di x2, in aritmetica floating point:

−b + b2 − 4ac
x2 = = 0,6430 ⋅101
2a

In aritmetica reale avremmo ottenuto:

6,433 + 41,383489 − 0,037896 6,433 + 41,345593 6,433 + 6,4300538


x1 = = = = 6,43152694389954
2 2 2

16 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME A1
I NUMERI NEL COMPUTER
AUDIO

Errore computazionale rappresentabile con i bit assegnati (generando


Un calcolatore è costretto a operare con numeri un problema di overflow, se troppo grande,
rappresentati da un numero finito di cifre. di underflow se troppo piccolo) o quando è
I numeri reali possono però essere costituiti anche costituito da un numero di cifre decimali della
da infinite cifre, dal momento che possono avere mantissa superiore a quello consentito dai
uno sviluppo decimale illimitato. Pertanto, per bit a disposizione. Per risolvere questi casi si
poter operare anche con i numeri reali costituiti ricorre ad approssimazioni per troncamento
da infinite cifre, il computer deve utilizzare e arrotondamento, che determinano a ogni
rappresentazioni approssimate dei numeri, passaggio una propagazione dell’errore. L’errore
ottenute per arrotondamento e troncamento. può essere determinato come errore assoluto e
L’errore dovuto agli errori di arrotondamento e di relativo.
troncamento si chiama errore computazionale.
Aritmetica finita
Le operazioni con numeri approssimati generano
Ogni singola architettura di un elaboratore
una propagazione degli errori. Per ottenere
è caratterizzata dalla precisione di macchina.
risultati attendibili eseguendo questo tipo di
Infatti i numeri di macchina non sono un insieme
operazioni è necessario controllare gli errori.
chiuso rispetto alle operazioni aritmetiche.
Rappresentazione dei numeri Perché lo diventino bisogna definire delle
Per rappresentare tutti i numeri reali con numeri operazioni di macchina, che danno luogo
dotati di un numero di cifre finite, il calcolatore all’aritmetica di macchina o aritmetica finita.
esprime i numeri reali nella forma di numeri Per le operazioni di macchina non valgono alcune
in virgola mobile o numeri floating point proprietà delle operazioni aritmetiche.
o numeri di macchina.
Propagazione dell’errore
Allo scopo, si assegnano delle posizioni di memoria
Poiché tutte le volte che si esegue un’operazione
per il segno, per l’esponente e per la mantissa
in aritmetica floating point si ottiene un risultato
del numero. Dal momento che si può assegnare
approssimato, uno dei principali compiti del
un’ampiezza della memoria variabile all’esponente
calcolo numerico è quello di studiare come questi
e alla mantissa, si possono utilizzare diverse
singoli errori si propaghino e quale effetto abbiano
configurazioni. Una configurazione molto diffusa
sul risultato finale.
è quella stabilita dallo standard dell’IEEE (Institute
Una singola operazione tra numeri macchina
of Electrical and Electronics Engineers), che prevede
dà luogo a un errore relativo dell’ordine
una singola precisione a 32 bit e una doppia
della precisione di macchina, che comporta
precisione a 64 bit.
un’approssimazione non superiore all'unità
Errore assoluto e relativo di arrotondamento. La propagazione dell’errore
In un elaboratore, un numero non può sempre accumulato fino al passo precedente dipende
essere rappresentato da un numero di macchina: esclusivamente dalla natura stabile o instabile
non lo può quando ha un esponente non più dell’operazione che si compie al passo considerato.

I numeri nel computer A1 17


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME A1
MAPPA
MODIFICABILE

NUMERI NEL COMPUTER

si rappresentano come

NUMERI
APPROSSIMATI

ottenuti per rappresentabili quelli non


nel calcolatore rappresentabili
nella forma di nel calcolatore per

troncamento arrotondamento

comportano un

errore
computazionale

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Come si rappresentano i numeri nel computer?
2) In quali due modi sono ottenuti i numeri approssimati?
3) Che problema comporta l’utilizzazione di numeri approssimati?
4) In quale forma sono espressi i numeri nel computer?
5) I numeri in virgola mobile sono esprimibili in una sola o in diverse configurazioni?
6) Qual è la configurazione più diffusa per esprimere i numeri in virgola mobile?
7) Lo standard IEEE per esprimere i numeri in virgola mobile che precisione prevede?
8) Per quali motivi un numero può non essere rappresentabile nel computer?
9) Con quali tipi di numeri si rappresentano nel computer i numeri non rappresentabili?
10) A quali due tipi di errore possono dar luogo le approssimazioni utilizzate per rappresentare
nel computer numeri non rappresentabili?
11) Quale problema genera l’esecuzione di operazioni fra numeri in virgola mobile?

18 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE A1
1. • Rappresenta i seguenti numeri secondo 4. • Calcola gli estremi degli intervalli di
lo standard IEEE a singola precisione: definizione dei numeri secondo lo standard IEEE
754 a 32 bit considerando le configurazioni
A 35,16 B −0,78 C 145,09 D −2,22
speciali dell’esponente.
2. • Date le seguenti rappresentazioni binarie 5. • Per ogni numero x che segue, determina
di numeri in floating point a 32 bit, ricava
tr(x) alla quinta cifra decimale e calcola l’errore
i corrispondenti decimali:
assoluto e relativo che si commette (rappresenta
A 00111111100000000000000000000000 inizialmente tutti i numeri nella forma 0,…):
B 11000010110010000000000000000000 A 34,5678934 ⋅ 103 C 1234,5678899
C 00111000010100011011011100010111 B 0,673452917 ⋅ 10−2 D 9,7453285 ⋅ 10−4
D 01000000010101010101010101010101
6. • Per ogni x del precedente esercizio, determina
3. • Date le seguenti rappresentazioni esadecimali arr(x) alla quinta cifra decimale e calcola l’errore
di numeri in floating point a 32 bit, ricava assoluto e relativo che si commette (rappresenta
i corrispondenti decimali: inizialmente tutti i numeri nella forma 0,…).
A 3F400000 C C287C7AE
B D
7. • Dati i seguenti numeri: x 1
= 0,0000345,
AB004511 40E004EA x2 = 0,389475834 e x3 = 12,5673 verifica
l’errore assoluto e relativo che si commette
effettuando la somma (x1 + x2 + x3) dei numeri
troncati alla quarta posizione decimale.

8. • Prendendo in considerazione i numeri dell’esercizio precedente, verifica l’errore assoluto e relativo


che si commette effettuando la somma dei numeri arrotondati alla quarta posizione decimale.

Reali Numeri in formato 0,… Mantissa Esponente Arrotondati


0,0000345 ,3450000000E−04 0,354 −4 0,3540
0,389475834 ,3894758340E+00 0,389475834 0 0,3895
12,5673 ,1256730000E+02 0,125673 2 0,1257

Somma reale somma


Ea arrotondato
Er arrotondato

9. • Riprendi i dati dell’esercizio 7 e verifica 10. • Riprendi i dati dell’esercizio 8 e verifica


la proprietà associativa. la proprietà associativa.

11. •• Completa la seguente tabella come da modello riportato nell’esercizio 8 e calcola l’errore assoluto e
relativo che si commette effettuando la somma dei numeri arrotondati alla terza posizione decimale.

Reali Numeri in formato 0,… Mantissa Esponente Arrotondati


0,00012
0,0000678
5,9123

Somma reale somma


Ea arrotondato
Er arrotondato

I numeri nel computer A1 19


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

12. •• Completa la seguente tabella come da modello riportato nell’esercizio 8 e calcola l’errore assoluto e
relativo che si commette effettuando la somma dei numeri troncati alla quinta posizione decimale.

Reali Numeri in formato 0,… Mantissa Esponente Arrotondati


167,4567
32,9
0,000003

Somma reale somma


Ea troncato
Er troncato

13. •• Completa la seguente tabella come da modello riportato nell’esercizio 8 e calcola l’errore assoluto e
relativo che si commette effettuando la somma dei numeri arrotondati alla quarta posizione decimale.

Reali Numeri in formato 0,… Mantissa Esponente Arrotondati


3,65789
942,6004
95,01234567

Somma reale somma


Ea arrotondato
Er arrotondato

14. •• Completa la seguente tabella come da modello riportato nell’esercizio 8 e calcola l’errore assoluto e
relativo che si commette effettuando la somma dei numeri troncati alla seconda posizione decimale.

Reali Numeri in formato 0,… Mantissa Esponente Arrotondati


18,6666
0,67912356
0,05911001

Somma reale somma


Ea troncato
Er troncato

15. •• Calcola l’errore assoluto e relativo che si commette troncando e arrotondando alla sesta cifra decimale
i seguenti numeri.

Reali Numeri in formato 0,… Mantissa Esponente Troncati Arrotondati


15,67899
22,45691000
12,909098

Somma reale somma


Ea troncato
Er troncato
Ea arrotondato
Er arrotondato

20 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

16. •• Assegnati i seguenti numeri finiti:


x1 = 0,9763 ⋅ 10−5 x2 = 0,9895 ⋅ 10−3
x3 = 0,1289 ⋅ 10−1 x4 = 0,3429 x5 = 0,1234 ⋅ 10

determina la loro somma in aritmetica in base 10 con 4 cifre. Aiutati completando il seguente esercizio:
x1 = 0,9763 ⋅ 10−5 = 0,009763 ⋅ 10−3
x2 = 0,9895 ⋅ 10−3 = 0,9895 ⋅ 10−3
x1 + x2 = 0,999263 ⋅ 10−3

s2 = fl(x1 + x2) = 0,9992 ⋅ 10−3 = ............................. ⋅ 10−1


x3 = 0,1289 ⋅ 10−1
s2 + x3 = ............................. ⋅ 10−1
s3 = fl(s2 + x3) = 0,1388 ⋅ 10−1 = ............................. ⋅ 100
x4 = 0,3429 ⋅ 100
s3 + x4 = ............................. ⋅ 100
s4 = fl(s3 + x4) = 0,3567 ⋅ 100 = ............................. ⋅ 101
x5 = 0,1234 ⋅ 101
s4 + x5 = ............................. ⋅ 101
s5 = fl(s4 + x5) = ............................. ⋅ 101

I numeri sono stati sommati in ordine crescente. La soluzione esatta è S = 0,1590789263,


perciò possiamo dire che la somma approssimata s5 ne è una buona approssimazione a 4 cifre.

Se sommassimo i numeri in ordine decrescente, otterremmo invece:


s2 = ............................. ⋅ 10
s3 = ............................. ⋅ 10
s4 = ............................. ⋅ 10
s5 = ............................. ⋅ 10
Il risultato finale s5 rappresenta una cattiva approssimazione del valore reale.

17. •• Determina l’errore assoluto e relativo che si commette troncando e arrotondando alla terza cifra
decimale i seguenti numeri.

Reali Numeri in formato 0,… Mantissa Esponente Troncati Arrotondati


3,56 ,3560000000E+01 .................. 1 .................. ..................

0,00500000 ,5000000000E−02 .................. −2 .................. ..................

2,66667 ,2666670000E+01 .................. 1 .................. ..................

Somma reale 6,231670000 somma 6,225 6,235

Ea .................. troncato

Er .................. troncato

Ea .................. arrotondato

Er .................. arrotondato

I numeri nel computer A1 21


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

A2 Algebra lineare e algoritmi


in C++
FILE SORGENTI
Codici in C++

ESERCIZI COMMENTATI
Le basi del linguaggio C++
Programmazione in C++
IMPARERAI…

A utilizzare matrici e vettori A svolgere le operazioni A determinare le principali norme


dell’algebra matriciale vettoriali e matriciali

1 Matrici e vettori
Alcuni algoritmi per il calcolo numerico che presenteremo in que- n colonne
aij j cresce
sta unità prevedono la conoscenza di elementi di algebra lineare
quali matrici, vettori e loro proprietà. ⎡ a
⎢ 11 a12 ! a1n ⎥⎤
⎢ a ! a2n ⎥⎥

i cresce
m righe
Una matrice A è una tabella di numeri reali (o complessi) con m ⎢ 21 a22
⎢ ⎥
righe e n colonne, generalmente denotata con A = (aij ) in cui i e ⎢ " " # " ⎥
j rappresentano rispettivamente il numero di riga e di colonna. ⎢ a ! amn ⎥⎥
⎢⎣ m1 am 2

matrice m × n
Una matrice di numeri reali viene indicata con A ∈ !m×n con m ri-
ghe e n colonne.
■ Una matrice O ∈ !m×n con tutti gli elementi uguali a zero si dice
matrice nulla.
In moltissimi ambiti scientifici
■ Una matrice A ∈ !n×n con lo stesso numero di righe e di colonne ci sono fenomeni e grandezze
che possono essere descritti
si dice matrice quadrata di ordine n.
dalle matrici. Basti pensare
■ Data una matrice A ∈ !m×n si dice matrice trasposta e si indica a un foglio elettronico dove
è possibile tabulare e studiare
con A T la matrice B = A T con elementi bij = aji (vengono scambia-
dati di diversa natura. Un altro
te le righe con le colonne): esempio è la modifica delle
⎡ 1 5 9 ⎤ immagini fatta con specifici
⎡ 1 2 3 4 ⎤ ⎢ ⎥ software che permettono
⎢ ⎥ ⎢ 2 6 10 ⎥
A=⎢ 5 6 7 8 ⎥ A =⎢
T
⎥ di agire sui singoli pixel in
⎢ ⎥ ⎢ 3 7 11 ⎥ maniera semplice e intuitiva
⎢⎣ 9 10 11 12 ⎥⎦ ⎢ ⎥ ma, scavando più a fondo, ci si
⎢⎣ 4 8 12 ⎥⎦ accorge che in realtà si stanno
modificando delle matrici che
rappresentano i colori rosso,
■ Una matrice quadrata A ∈ !n×n si dice simmetrica se A = A T, verde e blu.
in pratica se riga e colonna i-esima contengono gli stessi valori
nello stesso ordine.
■ Una matrice quadrata A ∈ !n×n si dice triangolare superiore se tutti gli elementi al di
sotto della diagonale principale sono nulli; si dice invece triangolare inferiore se tutti gli
elementi al di sopra della diagonale principale sono nulli.

22 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Elementi SOPRA la diagonale


principale uguali a zero
⎡ 1 2 5 ⎤
⎢ ⎥
A = ⎢ 0 3 −2 ⎥
⎢ ⎥ ⎡ ⎤
⎢⎣ 0 0 7 ⎥⎦ ⎢ 1 0 0 0 ⎥
Diagonale ⎢ −2 3 0 0 ⎥
principale B=⎢ ⎥
⎢ 5 8 7 0 ⎥
⎢ ⎥
Elementi SOTTO la diagonale ⎢⎣ 6 1 3 8 ⎥⎦
principale uguali a zero Diagonale
principale

Triangolare superiore Triangolare inferiore


aij = 0 per i > j aij = 0 per i < j

■ Una matrice quadrata A ∈ !n×n si dice diagonale quando tutti


Nelle matrici quadrate, il numero
gli elementi al di sotto e al di sopra della diagonale principale di elementi della diagonale
sono nulli. Una particolare matrice diagonale è la matrice iden- principale è uguale al numero di
tica (identità) I ∈ !n×n di ordine n in cui tutti gli elementi della righe e di colonne.
diagonale principale sono pari a 1.

⎡ a1 0 0 É 0 ⎤⎥

⎢ 0 a2 0 É 0 ⎥⎥
⎢ ⎡ ⎤
A = ⎢⎢ ⎥ ⎢ 1 0 0 0 ⎥
0 0 a3 É 0 ⎥ ⎢ 0 1 0 0 ⎥
⎢ ⎥ I4 = ⎢ ⎥
⎢ É É É É É ⎥ ⎢ 0 0 1 0 ⎥
⎢ 0 0 0 É an ⎥⎥ ⎢ ⎥
⎢⎣ ⎦ ⎢⎣ 0 0 0 1 ⎥⎦
Matrice diagonale Identità di ordine 4
aij = 0 per i ≠ j aij = 0 per i ≠ j ∨ aij = 1 per i = j

■ Una matrice a ∈ !1×n è detta vettore riga di dimensione n; in


I vettori sono molto utilizzati
modo analogo, una matrice b ∈ !n×1 è detta vettore colonna di nella definizione di grandezze
dimensione n. Mentre le matrici vengono contraddistinte dalle fisiche.
lettere maiuscole, identifichiamo i vettori con quelle minuscole:
⎡ 4 ⎤
⎢ ⎥
a = ⎡⎣⎢ 1 3 4 ⎤⎥⎦ b=⎢ 3 ⎥
⎢ ⎥
⎢⎣ 5 ⎥⎦

Quando si indica una componente di un vettore riga si usa omettere l’indice di riga. Ana-
logamente, si fa con i vettori colonna. Per esempio, a12 è la seconda componente del vettore
a, ma si scrive a2 (che nell'esempio precedente corrisponde al 3). In modo analogo, dato un
vettore colonna, per esempio b, volendo indicare la terza componente, che sarebbe b31, si
omette l’indice di colonna, cioè si scrive b3 (che nell'esempio precedente corrisponde al 5).

Algebra lineare e algoritmi in C++ A2 23


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sottomatrici
Una sottomatrice di una matrice A è qualsiasi matrice che si ottiene eliminando un certo
numero di righe o di colonne da A.

⎡ a11 a12 a13 a14 ⎤⎥


⎢ ⎡ a a23 a24 ⎤⎥ ⎡ a a23 a24 ⎤⎥
⎢ a24 ⎥⎥ ⎢ 21 ⎢ 22
⎢ a21 a22 a23 ⎢ a34 ⎥ A2 = ⎢⎢ a32
⎥ a34 ⎥⎥
A=⎢ ⎥ A1 = ⎢ a31 a33 a33
⎢ a31 a32 a33 a34 ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢⎣ a41 a43 a44 ⎥ ⎢⎣ a42 a43 a44 ⎥
⎢ a41 a42 a43 a44 ⎥ ⎦ ⎦
⎣ ⎦

■ Una sottomatrice si dice principale quando ha come elementi diagonali gli stessi elemen-
ti diagonali di A:
⎡ a a23 a24 ⎤⎥
⎢ 22 ⎡ a a34 ⎤⎥ ⎡ a a14 ⎤⎥
A1 = ⎢⎢ a32 a34 ⎥⎥ A2 = ⎢⎢ = ⎢ 11
33
a33 A
⎢ ⎥ ⎢⎣ 43
a a44 ⎥⎥ 3 ⎢⎢ a41 a44 ⎥⎥
⎢⎣ a42 a43 a44 ⎥ ⎦ ⎣ ⎦

■ Si dice invece sottomatrice principale di testa di A ogni sottomatrice principale i cui ele-
menti diagonali coincidono in posizione con gli elementi diagonali di A:
⎡ a a12 a13 ⎤⎥
⎢ 11 ⎡ a a12 ⎤⎥
A1 = ⎢⎢ a21 a22 a23 ⎥⎥ A2 = ⎢⎢ 11 A =[ a11 ]
⎢ ⎥ ⎢⎣ a21 a22 ⎥⎥ 3
⎢⎣ a31 a32 a33 ⎥ ⎦

2 Operazioni su matrici
Possiamo applicare alle matrici le operazioni di somma, differenza e prodotto. Le matrici
godono inoltre di varie proprietà, tra cui la proprietà associativa e quella commutativa.

Somma e differenza
Le operazioni di somma e differenza sono così definite:
C = A + B in cui cij = aij + bij
C = A − B in cui cij = aij − bij

La somma gode della proprietà commutativa:


A+B=B+A

La somma gode anche della proprietà associativa:


A + (B + C) = (A + B) + C

24 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
1. Consideriamo due matrici A ∈ !m×n e B ∈ !m×n aventi lo stesso numero m di righe e n di colonne:
⎡ ⎤ ⎡ 4 1 1 1 ⎤
⎢ 1 1 1 3 ⎥ ⎢ ⎥
A= 2 1 2 2 ⎥
⎢ B=⎢ 1 0 0 3 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 1 2 0 2 ⎥ ⎢⎣ 1 2 1 2 ⎥⎦
⎣ ⎦
Calcoliamo la somma e la differenza delle matrici A e B.
⎡ 5 2 2 4 ⎤ ⎡ 2 ⎤⎥
⎢ ⎥ ⎢ −3 0 0
A+B = ⎢ 3 1 2 5 ⎥ A − B = 1 1 2 −1 ⎥

⎢ ⎥ ⎢ ⎥
⎢ 2 4 1 4 ⎥ ⎢ 0 0 −1 0 ⎥
⎣ ⎦ ⎣ ⎦

2. Verifichiamo ora la proprietà commutativa per la somma.


⎡ 2 3 5 ⎤ ⎡ 0 3 −4 ⎤
Siano A = ⎢⎢ ⎥

e B = ⎢⎢ ⎥

due matrici 2 × 3.
⎣ 1 5 9 ⎦ ⎣ 2 1 0 ⎦
⎡ 2 3 5 ⎤ ⎡ 0 3 −4 ⎤ ⎡ 2 + 0 3 + 3 5 − 4 ⎤ ⎡ 2 6 1 ⎤
Risulta: A + B = ⎢⎢ ⎥+⎢ ⎥=⎢ ⎥=⎢ ⎥
⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣ 1 5 9 ⎦ ⎣ 2 1 0 ⎦ ⎢⎣ 1 + 2 5 + 1 9 + 0 ⎥⎦ ⎣ 3 6 9 ⎦
⎡ 0 3 −4 ⎤ ⎡ 2 3 5 ⎤ ⎡ 0 + 2 3 + 3 −4 + 5 ⎤ ⎡ 2 6 1 ⎤
B + A = ⎢⎢ ⎥+⎢ ⎥=⎢ ⎥=⎢ ⎥
⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣ 2 1 0 ⎦ ⎣ 1 5 9 ⎦ ⎢⎣ 2 + 1 1 + 5 0 + 9 ⎥⎦ ⎣ 3 6 9 ⎦

ORA TOCCA A TE
■ Calcola la somma e la differenza delle seguenti matrici:

⎡ 4 −2 5 6 ⎤ ⎡ 4 ⎤⎥
⎢ ⎥ ⎢ 1 2 3
A = ⎢ −1 0 3 −3 ⎥ B = ⎢ −1 −2 −3 −4 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 5 2 4 0 ⎥⎦ ⎢ 0 4 6 7 ⎥⎦
⎣ ⎣

Prodotto
Consideriamo due matrici A ∈ !m×n e B ∈ !n×p in cui il numero di colonne della prima è uguale
al numero di righe della seconda; in questo caso è possibile realizzare il prodotto fra le due
matrici:
C = AB ∈ !m×p
Il risultato del prodotto sarà una matrice avente il numero di righe di A e il numero di colonne
di B ed è ottenuto nel seguente modo:
n
cij = ∑ aik bkj i =1Ém j =1É p
k=1

1 3 2 1 2 9
2 0 1 0 2 =
1 5 3 5 0
in cui:
9 = −1 ⋅ 1 + 3 ⋅ 0 + (−2) ⋅ (−5)

Algebra lineare e algoritmi in C++ A2 25


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Siano date due matrici A e B ∈ !3×3:


⎡ ⎤ ⎡ 4 1 1 ⎤
⎢ 1 1 1 ⎥ ⎢ ⎥
A=⎢ 2 1 2 ⎥ B=⎢ 1 0 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣ 1 2 0 ⎥⎦ ⎢⎣ 1 2 1 ⎥⎦
il risultato del loro prodotto sarà
⎡ 6 3 2 ⎤
⎢ ⎥
AB = ⎢ 11 6 4 ⎥
⎢ ⎥
⎢⎣ 6 1 1 ⎥⎦

Alcune proprietà delle operazioni


Prendiamo ora in considerazione le matrici quadrate A, B ∈ !n×n Le proprietà delle matrici
per evidenziare alcune proprietà relative alle operazioni. vengono studiate principalmente
per le matrici quadrate, poiché
■ Il prodotto tra matrici non è commutativo: AB ≠ BA. per le matrici rettangolari non
In riferimento alle matrici A e B dichiarate in precedenza, i pro- sempre è possibile eseguire
alcune operazioni.
dotti risultano essere:
⎡ 6 3 2 ⎤ ⎡ 7 7 6 ⎤
⎢ ⎥ ⎢ ⎥
AB = ⎢ 11 6 4 ⎥ ≠ BA = ⎢ 1 1 1 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣ 6 1 1 ⎥⎦ ⎢⎣ 6 5 5 ⎥⎦

■ Considerata la matrice identica I ∈ !n×n AI = IA = A:


⎡ 1 1 1 ⎤ ⎡ 1 0 0 ⎤ ⎡ 1 1 1 ⎤
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
A = ⎢ 2 1 2 ⎥ I = ⎢ 0 1 0 ⎥ AI = ⎢ 2 1 2 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 1 2 0 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ 1 2 0 ⎥⎦

■ La trasposta del prodotto equivale al prodotto delle singole trasposte invertite:


(AB)T = B TA T.
⎡ 1 2 1 ⎤ ⎡ ⎤ ⎡ 6 11 6 ⎤ ⎡ ⎤
⎢ ⎥ T ⎢ 4 1 1 ⎥ ⎢ ⎥ T T ⎢ 6 11 6 ⎥
A = ⎢ 1 1 2 ⎥ B = ⎢ 1 0 2 ⎥ ( AB ) = ⎢ 3 6 1 ⎥ B A = ⎢ 3 6 1 ⎥
T T
⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 1 2 0 ⎥⎦ ⎢⎣ 1 0 1 ⎥⎦ ⎢⎣ 2 4 1 ⎥⎦ ⎢⎣ 2 4 1 ⎥⎦

■ Il prodotto è associativo A(BC) = (AB)C.


A(B + C) = AB + AC e (A + B)C = AC + BC

■ Il prodotto fra matrici triangolari superiori (o inferiori) è ancora una matrice triangolare
superiore (o inferiore).
⎡ 1 0 0 ⎤ ⎡ 4 0 0 ⎤ ⎡ 4 0 0 ⎤
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ 2 1 0 ⎥ ⋅ ⎢ 1 0 0 ⎥=⎢ 9 0 0 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 1 2 0 ⎥⎦ ⎢⎣ 1 2 1 ⎥⎦ ⎢⎣ 6 0 0 ⎥⎦

■ Il prodotto fra matrici diagonali è ancora una matrice diagonale.

26 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

ORA TOCCA A TE
■ Data la matrice
⎡ ⎤
⎢ 3 2 1 ⎥
C= 0 2 4 ⎥

⎢ ⎥
⎢ −2 1 −3 ⎥
⎣ ⎦

e le matrici A e B precedenti verifica che:


1) A(BC) = (AB)C 2) A(B + C) = AB + AC

3 Autovalori e autovettori di una matrice


Consideriamo una matrice quadrata di numeri reali o di numeri
complessi A ∈ !n×n (! n×n) se esiste un vettore x non nullo tale che: L’insieme che contiene tutti
i numeri è il campo dei numeri
Ax = λx complessi dove un numero
c = x + iy è la somma di un
numero reale x e di un numero
Allora il numero λ ∈ ! si dice autovalore della matrice A e x si dice immaginario iy, cioè il prodotto
autovettore della matrice rispetto a λ . di un numero reale y e dell’unità
Si denota con σ(A) l’insieme degli autovalori di A e si definisce rag- immaginaria i = (−1).
gio spettrale la seguente quantità:
ρ(A) = max⏐λ⏐
λ ∈σ (A)

4 Determinante di una matrice


Quando la matrice è quadrata, essa esprime un numero o, meglio:

A una matrice quadrata si fa corrispondere un numero che viene detto determinante della
matrice. Il determinante di una matrice viene indicato con il simbolo det(A), oppure con il
simbolo ⏐A⏐.

Per calcolare il determinante possiamo usare diversi metodi. Qui analizzeremo la regola di
Laplace e la regola di Sarrus.

Regola di Laplace
Vediamo di seguito il determinante di ordine 1, 2 e 3.
A ∈ !1×1 det(A) =⏐a11⏐= a11

a11 a12
A ∈ !2×2 det(A) = = a11a22 −a21a12
a21 a22

Algebra lineare e algoritmi in C++ A2 27


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

a11 a12 a13


a22 a23 a21 a23 a21 a22
A∈! 3×3
det ( A ) = a21 a22 a23 = a11 −a12 +a13
a32 a33 a31 a33 a31 a32
a31 a32 a33

Il metodo appena descritto per il calcolo del determinante è noto come regola di Laplace, che
possiamo formalizzare nel seguente modo:
⎧⎪a11 se n =1
⎪⎪
det ( A ) = ⎨ n
⎪⎪∑ (−1)i+ j aij det(Aij ) se n >1
⎪⎪⎩ j=1

in cui Aij è la sottomatrice di ordine n−1 ottenuta eliminando da A la i-esima riga e la j-esima
colonna, (−1)i+j invece rappresenta l’alternanza del segno nelle somme algebriche (positivo, ne-
gativo, positivo, negativo…).

OSSERVA COME SI FA
■ Riportiamo l’algoritmo per il calcolo del determinante di una matrice in C++; notate l’utilizzo della ricorsione
all’interno della funzione det.

C++
// determinante di una matrice
#include <iostream>
using namespace std;
#define MAX 25
// Prototipi
int det(int m[MAX][MAX], int);
void carica_matrice(int m[MAX][MAX], int);
int main()
{
int m[MAX][MAX], c;
cout << "Ordine della matrice: ";
cin >> c;
carica_matrice(m, c);
// Determinante
cout << "Determinante= " << det(m, c) << endl << endl;
system("pause");
return 0;
}
void carica_matrice(int m[MAX][MAX], int c)
{
// Genera matrice
cout << "inserisci gli elementi della matrice" << endl;
for (int i = 0; i < c; i++)

28 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

{
cout << "Riga " << i << ": ";
for (int j = 0; j < c; j++) cin >> m[i][j];
}
}
int det(int m[MAX][MAX], int card)
{
int determinante = 0;
//Cardinalità uno
if (card == 1) determinante = m[0][0];
//Cardinalità due
if (card == 2)
determinante = m[1][1] * m[0][0] − m[0][1] * m[1][0];
//Cardinalità > 2
else {
for (int row = 0; row < card; row++)
{
int sub_m[MAX][MAX];
//Sottomatrice di ordine card − 1
for (int i = 0; i < card − 1; i++)
{
for (int j = 0; j < card − 1; j++)
{
int sub_row = (i < row ? i : i + 1);
int sub_col = j + 1;
sub_m[i][j] = m[sub_row][sub_col];
}
}
//Il segno della sottomatrice: + per pari, − per dispari
if (row % 2 == 0)
determinante += m[row][0] * det(sub_m, card − 1);
else
determinante −= m[row][0] * det(sub_m, card − 1);
}
}
return determinante;
}

Algebra lineare e algoritmi in C++ A2 29


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Regola di Sarrus
Un modo alternativo per il calcolo del determinante di una matrice di terzo grado è dato dalla
regola di Sarrus, dove accanto alla matrice quadrata A, si scrivono le prime due colonne, otte-
nendo così tre diagonali “principali” e tre diagonali “secondarie”.

Il numero che corrisponde al determinante è dato dalla differenza tra la somma dei pro-
dotti dei termini di ciascuna diagonale principale e la somma dei prodotti dei termini di
ciascuna diagonale secondaria.

Per eseguire il calcolo del determinante dobbiamo svolgere i seguenti passaggi:


• si fa il prodotto dei termini di ciascuna diagonale principale (tre prodotti: dall’alto verso il
basso in diagonale);
• si fa la somma dei tre prodotti delle diagonali principali;
• si fa il prodotto dei termini di ciascuna diagonale secondaria (tre prodotti: dal basso verso
l’alto in diagonale);
• si fa la somma dei tre prodotti delle diagonali secondarie;
• si effettua la differenza tra la somma dei tre prodotti delle diagonali principali e la somma
dei tre prodotti delle diagonali secondarie.
+ + + − − −
a11 a12 a13 a11 a12
det A = a21 a22 a23 a21 a22 =
a31 a32 a33 a31 a32
= (a11 a22 a33 + a12 a23 a31 + a13 a21 a32 ) (a13 a22 a31 + a11 a23 a32 + a12 a21 a33 )

ORA TOCCA A TE
■ Realizza l'algoritmo in C++ per il calcolo del determinante di una matrice di ordine 3 utilizzando la regola
di Sarrus.

Una matrice quadrata A ∈ !n×n si dice non singolare se


det(A) ≠ 0

Proprietà del determinante


Vediamo alcune proprietà che contraddistinguono il determinante; date due matrici quadrate
A, B ∈ !n×n non singolari, allora:
⎡ 1 2 3 ⎤ ⎡ 4 1 1 ⎤
⎢ ⎥ ⎢ ⎥
A=⎢ 2 1 2 ⎥ B=⎢ 1 2 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣ 1 2 0 ⎥⎦ ⎢⎣ 1 2 1 ⎥⎦

■ det(AB) = det(A) det(B)


9 11 4
det(A) = 9 det(B) = 7 det(AB) = 11 8 4 = 63
6 5 1

30 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ det(AT) = det(A)
⎡ 1 2 1 ⎤
⎢ ⎥
A =⎢ 2 1 2 ⎥
T
det( AT ) = 9 = det( A)
⎢ ⎥
⎢⎣ 3 2 0 ⎥⎦

■ Se A è una matrice triangolare:


det(A) = Πi=1
n
aii (prodotto degli elementi sulla diagonale principale)

⎡ 4 0 0 ⎤
⎢ ⎥
A=⎢ 1 2 0 ⎥ det( A) = 4 ⋅2⋅3 = 24
⎢ ⎥
⎢⎣ 1 2 3 ⎥⎦

■ Il determinante della matrice identica è uguale a 1:


det(I ) = 1

■ Il determinante di una matrice è nullo se gli elementi di una riga o di una colonna sono
tutti uguali a zero.
■ Il determinante di una matrice cambia di segno se si scambiano due righe o due colonne.

Minori di matrice
Data una matrice A ∈ !m×n si dice minore di ordine k il determinante di una sottomatrice
quadrata di ordine k, mentre si dice minore principale di testa il determinante di una sotto-
matrice principale di testa.

5 Inversa di una matrice


Data una matrice A ∈ !n×n non singolare,

si dice inversa della matrice A e si denota con A −1 la matrice tale che:


AA −1 = A −1 A = I

⎡ 1 2 1 ⎤ ⎡ ⎤ ⎡ 1 0 0 ⎤
⎢ ⎥ −1 ⎢ −1 −1 3 ⎥ ⎢ ⎥
A=⎢ 1 1 2 ⎥ A =⎢ 1 0 −1 ⎥ AA = ⎢ 0 1 0 ⎥
−1
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 1 1 1 ⎥⎦ ⎢⎣ 0 1 −1 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦

Proprietà della matrice inversa


Siano A, B ∈ !n×n matrici non singolari; allora:
■ (A−1)−1 = A
1
■ det(A−1) =
det ( A )
■ (A ) = (A−1)T
T −1

■ (AB)−1 = B−1 A −1

Algebra lineare e algoritmi in C++ A2 31


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

6 Norme
Abbiamo definito in precedenza il concetto di vettore:
■ il vettore riga si può rappresentare come
x ∈ !1×n x = [x1 x2 ... xn]

■ il vettore colonna si può rappresentare come


⎡ x1 ⎤⎥

⎢ x 2 ⎥⎥
x ∈ !n×1 x = ⎢⎢ ⎥
⎢ ! ⎥
⎢ x n ⎥⎥
⎢⎣ ⎦

Di fatto,

quando facciamo riferimento a un generico vettore x, lo considereremo sempre come vetto-


re riga, mentre indicheremo il vettore colonna attraverso il trasposto di x (xT ).

Pertanto, è possibile effettuare il prodotto scalare di due vettori x, y ∈ !n definito nel seguente
modo:
n
xy T = ∑ x i y i
k=1

Ricordiamo che, seguendo la logica del prodotto matriciale, è possibile effettuare il prodotto
fra due matrici se il numero di colonne della prima corrisponde al numero di righe della secon-
da; per questo motivo dobbiamo considerare yT e non y.
Esempio: x = [1 2 3 4] y = [9 7 5 3] xyT = 50

Il prodotto scalare tra due vettori, solitamente, viene indicato con 〈x, y〉 ∈ ! e rappresenta
quindi un valore numerico reale.

Prendendo in considerazione i vettori x, y, z ∈ !n , il prodotto scalare gode delle seguenti pro-


prietà:
■ 〈x, y〉 = 0 solo se ogni elemento è uguale a 0
■ xyT = yxT
■ (ax)yT = a(xyT )
■ (x + z)yT = xyT + zyT

Si definisce lunghezza del vettore la quantità:


n
xx T = ∑x
i=1
2
i

32 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Norme vettoriali
Una norma vettoriale rappresenta una particolare applicazione definita come:
⏐⏐⋅⏐⏐: !n → ! (dato un vettore restituisce un valore reale)

che deve verificare le seguenti proprietà:


■ disomogeneità scalare: ⏐⏐x⏐⏐ ≥ 0 ∀x ∈ !n e ⏐⏐x⏐⏐ = 0 ↔ x = 0
■ disuguaglianza triangolare: ⏐⏐x + y⏐⏐ ≤ ⏐⏐x⏐⏐ + ⏐⏐y⏐⏐ ∀x, y ∈ !n
■ omogeneità rispetto al prodotto scalare: ⏐⏐ax⏐⏐ =⏐a⏐ ⏐⏐x⏐⏐ ≥ 0 ∀a ∈ !

Riportiamo alcune principali norme sui vettori:


■ Norma1:⏐⏐x⏐⏐1 = Σi=1
n
⏐xi⏐=⏐x1⏐+⏐x2⏐+ ... +⏐xn⏐
(somma in valore assoluto di tutti gli elementi);
■ Norma2 o Norma euclidea:⏐⏐x⏐⏐2 = xx T ;
■ Norma infinito:⏐⏐x⏐⏐∞ = max⏐xi⏐ (il valore assoluto più grande).

Riprendendo i vettori x e y dell’esempio precedente:


⏐⏐x⏐⏐1 = 10 ⏐⏐x⏐⏐2 = 5,4772 ⏐⏐x⏐⏐∞ = 4

⏐⏐y⏐⏐1 = 24 ⏐⏐y⏐⏐2 = 12,806 ⏐⏐y⏐⏐∞ = 9

OSSERVA COME SI FA
■ Riportiamo l'algoritmo in C++ per il calcolo della norma euclidea.

C++
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double s,normae,vet[10];
int n = 10;
s = 0;
Carica_Vettore(vet,n);
for (int i = 0; i < n; i++)
s += vet[i] * vet[i];
normae = sqrt(s);
cout << "Norma euclidea= " << normae;
system("pause");
return 0;
}

Algebra lineare e algoritmi in C++ A2 33


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

ORA TOCCA A TE
■ Completa il precedente programma in C++ con il calcolo della norma1 e della norma infinito. Realizza una
funzione per ogni norma da calcolare, inoltre implementa la funzione per il caricamento del vettore.

Norme matriciali
Il concetto di norma può essere esteso anche alle matrici, quindi

una norma matriciale è rappresentata dall’applicazione:


⏐⏐⋅⏐⏐: !m×n → ! (data una matrice restituisce un valore reale)

che deve verificare le seguenti proprietà:


■ disomogeneità scalare: ⏐⏐A⏐⏐ ≥ 0 ∀A ∈ !m×n e ⏐⏐A⏐⏐ = 0 ↔ A = 0
■ disuguaglianza triangolare: ⏐⏐A + B⏐⏐ ≤⏐⏐A⏐⏐ + ⏐⏐B⏐⏐ ∀A, B ∈ !m×n
■ prodotto per uno scalare: ⏐⏐aA⏐⏐ = ⏐a⏐⋅⏐⏐A⏐⏐ ≥ 0 ∀a ∈ !
■ sub-moltiplicatività: ⏐⏐AB⏐⏐ ≤ ⏐⏐A⏐⏐⋅⏐⏐B⏐⏐

A partire dalle norme vettoriali, è possibile costruire alcune norme matriciali, definite appun-
to norme indotte:
■ Norma1: ⏐⏐A⏐⏐1 = maxj=1,...,n Σi=1
m
⏐aij⏐ (il massimo valore delle somme sulle colonne);
■ Norma2 o Norma euclidea: ⏐⏐A⏐⏐2 = ρ( AT A ) (la radice quadrata del raggio spettrale del
prodotto di AT per A);
■ Norma infinito: ⏐⏐A⏐⏐∞ = maxj=1,...,m Σnj=1⏐aij⏐ (il massimo valore delle somme sulle righe).

OSSERVA COME SI FA
■ Proponiamo l'algoritmo in C++ per il calcolo della norma1 e norma infinito:

C++
#include <iostream>
#include <math.h>
#define MAX 25
using namespace std;
void carica_matrice(int m[MAX][MAX], int);

int main()
{
int m[MAX][MAX], c, riga,col,norma1 = 0,normainf = 0;
cout << "Ordine della matrice: ";

34 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

cin >> c;
carica_matrice(m, c);
// calcolo della norma infinito
for (int i = 0; i < c; i++)
{
riga = 0;
for (int j = 0; j < c; j++)
riga + = abs(m[i][j]);
if (normainf < riga) normainf = riga;
}
//calcolo della norma 1
for (int i = 0; i < c; i++)
{
col = 0;
for (int j = 0; j < c; j++)
col + = abs(m[j][i]);
if (norma1 < col) norma1 = col;
}
cout << "norma1= " << norma1 << endl;
cout << "norma infinito= " << normainf << endl;
system("pause");
return 0;
}

Una norma non indotta, invece, è quella di Frobenius, che è pari alla radice quadrata della
somma di ogni elemento della matrice al quadrato:
n m
A fro
= ∑ ∑a
i=1 j=1
ij
2

Esempio:
⎡ 4 2 1 ⎤
⎢ ⎥
A=⎢ 3 1 2 ⎥ A 1 =9 A =7 A = 7,4833
⎢ ⎥ ∞ fro
⎢⎣ 2 4 1 ⎥⎦

ORA TOCCA A TE
■ Realizza il programma in C++ che implementi, attraverso funzioni differenti, il calcolo della norma1, norma
infinito e norma di Frobenius.

Algebra lineare e algoritmi in C++ A2 35


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Se una matrice è simmetrica (A = AT) allora⏐⏐A⏐⏐1 =⏐⏐A⏐⏐∞, ciò è abbastanza evidente per il
fatto che righe e colonne risultano uguali.

Tutte le norme matriciali godono delle seguenti proprietà:


■ ⏐⏐AxT⏐⏐ ≤ ⏐⏐A⏐⏐⋅⏐⏐xT⏐⏐
1
■ ⏐⏐ A−1⏐⏐ ≥
A
■ ⏐⏐I⏐⏐ ≥ 1 (nel caso di norma1 e norma infinito il valore è uguale a 1).

OSSERVA COME SI FA
■ Data la matrice A dell’esempio precedente e il vettore x = [1 3 2], verifichiamo la prima condizione:

⏐⏐AxT⏐⏐1 = 38 ⏐⏐A⏐⏐1⏐⏐xT⏐⏐1 = 54

⏐⏐AxT⏐⏐∞ = 16 ⏐⏐A⏐⏐∞⏐⏐xT⏐⏐∞ = 21

⏐⏐AxT⏐⏐fro = 22,361 ⏐⏐A⏐⏐fro⏐⏐xT⏐⏐fro = 28

36 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME A2
ALGEBRA LINEARE E ALGORITMI IN C++ AUDIO

Matrici e vettori Prodotto. Il prodotto di due matrici in cui


Matrice A. È una tabella di numeri reali il numero di colonne della prima è uguale
(o complessi) con m righe e n colonne. al numero di righe della seconda è una matrice
Una matrice di numeri reali viene indicata avente il numero di righe della prima e il numero
con A ∈ !m×n con n righe e m colonne. di colonne della seconda.
Matrice nulla. È una matrice 0 ∈ !m×n con tutti Alcune proprietà delle operazioni. Il prodotto
gli elementi uguali a zero. tra matrici non è commutativo ed è associativo.
Matrice quadrata. È una matrice A ∈ !n×n con La trasposta del prodotto equivale al prodotto
lo stesso numero di righe e di colonne. Una matrice delle singole trasposte invertite. Il prodotto
quadrata A ∈ !n×n si dice simmetrica se A = AT, tra matrici triangolari superiori (o inferiori)
in pratica se riga e colonna i-esima contengono è ancora una matrice triangolare superiore (o
gli stessi valori nello stesso ordine. Una matrice inferiore). Il prodotto fra matrici diagonali è
quadrata A ∈ !n×n si dice triangolare superiore ancora una matrice diagonale.
(o inferiore) se tutti gli elementi al di sotto (o al Determinante di una matrice
di sopra) della diagonale principale sono nulli. A una matrice quadrata si fa corrispondere
Una matrice quadrata A ∈ !n×n si dice diagonale un numero che viene detto determinante della
quando tutti gli elementi al di sotto e al di
matrice. Tale numero viene indicato con det(A)
sopra della diagonale principale sono nulli. Una
oppure con | A |. Il calcolo del determinante
particolare matrice diagonale è la matrice identica
si esegue con la regola di Laplace. Il calcolo
(identità) in cui tutti gli elementi della diagonale
del determinante di una matrice di terzo grado
principale sono pari a 1.
si esegue con la regola di Sarrus.
Vettore. Una matrice a ∈ !1×n è detta vettore riga
di dimensione n; in modo analogo, una matrice b ∈  Inversa di una matrice
!n×1 è detta vettore colonna di dimensione n. Data A ∈ !n×n con det(A) ≠ 0, A−1 è la matrice
Matrice trasposta. Data una matrice A ∈ ! m×n inversa tale che AA−1 = A−1 A = I.
si dice matrice trasposta e si indica con AT la
matrice B = AT con elementi bij = aji (vengono
Norme
Si chiama vettore riga di dimensione n una
scambiate le righe con le colonne).
matrice a ∈ !1×n; in modo analogo, si chiama
Sottomatrice di una matrice A. È qualsiasi
vettore colonna di dimensione n una matrice b ∈ 
matrice che si ottiene eliminando un certo numero
!n×1. Quando facciamo riferimento a un vettore
di righe o di colonne da A.
generico x, lo consideriamo sempre come vettore
Autovalori e autovettori di una matrice riga, mentre si indica il vettore colonna mediante il
Data A matrice quadrata (n × n), se esiste x ∈ !n trasposto di x (xT). Il prodotto scalare di due vettori
non nullo tale che Ax = λx, allora λ è autovalore n
x, y ∈ !n è definito da: xy T = ∑ x i y i .
e x è autovettore rispetto a λ. Inoltre ρ(A) = max⏐λ⏐, k=1
λ ∈σ(A) è il raggio spettrale.
Alcune principali norme sui vettori sono
Operazioni su matrici la norma1, la norma2 o norma euclidea
Somma e differenza. La somma e la differenza e la norma infinito. Dalle norme vettoriali
di due matrici aventi lo stesso numero n di righe è possibile costruire alcune norme matriciali,
e m di colonne sono così definite: C = A + B in cui chiamate norme indotte, come per esempio
cij = aij + bij; C = A − B in cui cij = aij − bij. La somma la norma1 e la norma infinito. Una norma non
gode della proprietà commutativa e associativa. indotta è invece la norma di Frobenius.

Algebra lineare e algoritmi in C++ A2 37


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME A2
MAPPA
MODIFICABILE

MATRICI

sono

tabelle di numeri reali


(o complessi) su cui si eseguono operazioni
con m righe e n colonne

possono essere

nulle

quadrate

vettori

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Che cosa sono le matrici?
2) Quali sono i principali tipi di matrici?
3) Che cosa possiamo eseguire sulle matrici?
4) Quali sono le principali operazioni eseguibili sulle matrici?
5) Che tipo di numero corrisponde a una matrice quadrata?
6) Quali norme sono definite sui vettori?
7) Quali norme sono definite sulle matrici?
8) Quali sono le principali proprietà di cui sono dotate le operazioni sulle matrici?

38 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE A2

Operazioni con le matrici


1. • Date le seguenti matrici, calcolane la somma A + B.
N. Matrice A Matrice B
32416 24503
1 53421 41670
78342 13645
11111 11 10 9 8 7
2 11111 65432
11111 10000
10 11 12 13 14 65432
3 98765 7 8 9 10 11
43210 2 4 6 8 10

Svolgiamo insieme il primo degli esercizi proposti


Siano A, B ∈ !3×5 due matrici rettangolari così definite
⎡ ⎤ ⎡ ⎤
⎢ 3 2 4 1 6 ⎥ ⎢ 2 4 5 0 3 ⎥
A = ⎢ 5 3 4 2 1 ⎥⎥
⎢ B = ⎢ 4 1 6 7 0 ⎥⎥

⎢ 7 8 3 4 2 ⎥ ⎢ 1 3 6 4 5 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

Le due matrici hanno lo stesso numero di righe e di colonne, pertanto è possibile eseguire la somma.
⎡ 3+2 2+4 4+5 1+0 6+ 3 ⎤ ⎡ 5 6 9 1 9 ⎤
⎢ ⎥ ⎢ ⎥
A + B = ⎢⎢ 5 + 4 3 + 1 4 + 6 2 + 7 1 + 0 ⎥⎥ = ⎢⎢ 9 4 10 9 1 ⎥⎥
⎢ 7 + 1 8 + 3 3 + 6 4 + 4 2 + 5 ⎥ ⎢ 8 11 9 8 7 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

Proprietà commutativa
Verifichiamo la validità della proprietà commutativa cioè A + B = B + A. Utilizziamo le matrici definite sopra, quindi
calcoliamo B + A e verifichiamo che il risultato sia uguale al precedente.
⎡ 2+2 4+2 5+4 0+1 3+6 ⎤ ⎡ 5 6 9 1 9 ⎤
⎢ ⎥ ⎢ ⎥
B + A = ⎢⎢ 4 + 5 1 + 3 6 + 4 7 + 2 0 + 1 ⎥⎥ = ⎢⎢ 9 4 10 9 1 ⎥⎥
⎢ 1 + 7 3 + 8 6 + 3 4 + 4 5 + 2 ⎥ ⎢ 8 11 9 8 7 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

Come potete vedere confrontando i risultati A + B è uguale a B + A, pertanto la proprietà commutativa è verificata.
Proprietà associativa
Siano A, B, C ∈ !3×4 tre matrici rettangolari così definite
⎡ ⎤ ⎡ ⎤ ⎡ 1 2 2 1 ⎤
⎢ 1 0 4 2 ⎥ ⎢ 2 3 0 1 ⎥ ⎢ ⎥
A = ⎢⎢ 3 1 0 3 ⎥⎥ B = ⎢⎢ 2 1 0 4 ⎥⎥ C = ⎢⎢ 1 0 2 3 ⎥⎥
⎢ 2 1 1 2 ⎥ ⎢ 1 5 2 1 ⎥ ⎢ 3 4 2 1 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

Verifichiamo la validità della proprietà associativa, cioè che (A + B) + C = A + (B + C).


Cominciamo calcolando A + B e al risultato aggiungiamo C.

Algebra lineare e algoritmi in C++ A2 39


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

⎡ 2+1 3 + 0 0 + 4 1 + 2 ⎤⎥ ⎡⎢ 3 3 4 3 ⎥⎤

A + B = ⎢⎢ 2 + 3 1 + 1 0 + 0 4 + 3 ⎥⎥ = ⎢⎢ 5 2 0 7 ⎥⎥
⎢ 1+2 5 + 1 2 + 1 1 + 2 ⎥⎥ ⎢⎢ 3 6 3 3 ⎥⎥
⎢⎣ ⎦ ⎣ ⎦
⎡ 3+1 3 + 2 4 + 2 3 + 1 ⎤⎥ ⎡⎢ 4 5 6 4 ⎤⎥

(A + B) + C = ⎢⎢ 5 + 1 2 + 0 0 + 2 7 + 3 ⎥⎥ = ⎢⎢ 6 2 2 10 ⎥⎥
⎢ 3+ 3 6 + 4 3 + 2 3 + 1 ⎥⎥ ⎢⎢ 6 10 5 4 ⎥⎥
⎢⎣ ⎦ ⎣ ⎦

Adesso calcoliamo B + C e al risultato aggiungiamo A.


⎡ ⎤ ⎡ ⎤
⎢ 2+1 3+2 0+2 1+1 ⎥ ⎢ 3 5 2 2 ⎥
⎢ ⎥ ⎢
B + C = ⎢ 2 + 1 1 + 0 0 + 2 4 + 3 ⎥ = ⎢ 3 1 2 7 ⎥⎥
⎢ 1+ 3 5+4 2+2 1+1 ⎥ ⎢ 4 9 4 2 ⎥
⎣⎢ ⎥⎦ ⎢⎣ ⎥⎦
⎡ ⎤ ⎡ ⎤
⎢ 3+1 3+2 4+2 3+1 ⎥ ⎢ 4 5 6 4 ⎥
⎢ ⎥ ⎢
(A + B) + C = ⎢ 5 + 1 2 + 0 0 + 2 7 + 3 ⎥ = ⎢ 6 2 2 10 ⎥⎥
⎢ 3 + 3 6 + 4 3 + 2 3 + 1 ⎥ ⎢ 6 10 5 4 ⎥
⎣⎢ ⎥⎦ ⎢⎣ ⎥⎦

Ecco quindi dimostrato che il risultato di (A + B) + C è uguale al risultato di A + (B + C).

2. • Calcola A − B in riferimento alle matrici 3. •• Date le matrici A e B dell’esercizio 1,


dell’esercizio precedente. determina delle sottomatrici di terzo ordine
(3 ⋅ 3) in base ai seguenti suggerimenti:
• elimina le ultime due colonne
• elimina seconda e terza colonna
• elimina prima riga, prima, quarta e quinta colonna

4. •• Date le seguenti matrici, calcolane il prodotto A ⋅ B.


N. Matrice A Matrice B
23 123
1 45 456
16
213 042
2 405 213
136 216
213 04
3 405 23
16
405 213
4
136 024
111 2416
5 111 5421
111 7842

Svolgiamo insieme il primo degli esercizi proposti


Siano A ∈ !3×2 e B ∈ !2×3 due matrici rettangolari
⎡ ⎤
⎢ 2 3 ⎥ ⎡ 1 2 3 ⎤
A = ⎢⎢ 4 5 ⎥⎥ B = ⎢⎢ ⎥

⎢ 1 6 ⎥ ⎣ 4 5 6 ⎦
⎢⎣ ⎥⎦

40 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Svolgiamo il prodotto tra A e B (possiamo farlo perché il numero di colonne di A è uguale al numero di righe di B).
Alla fine del procedimento troveremo una matrice C (2 × 4). Allora
⎡ 2 3 ⎤ ⎡ ⎤
⎢ ⎥ ⎡ 1 2 3 ⎤ ⎢ 14 19 24 ⎥
⎢ ⎥
C = A ⋅B = ⎢ 4 5 ⎥ ⎢⎢ ⎥ ⎢ ⎥
⎥ = ⎢ 24 33 42 ⎥
⎢ 1 6 ⎥ ⎣ 4 5 6 ⎦ ⎢ 25 32 39 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

dove la prima riga è data da


c1,1 = 2 ⋅1 + 3 ⋅4 = 2 + 12 = 14
c1,2 = 2 ⋅2 + 3 ⋅5 = 4 + 15 = 19
c1,3 = 2 ⋅ 3 + 3 ⋅6 = 6 + 18 = 24

la seconda riga è data da


c2,1 = 4 ⋅1 + 5 ⋅4 = 4 + 20 = 24
c2,2 = 4 ⋅2 + 5 ⋅5 = 8 + 25 = 33
c2,3 = 4 ⋅ 3 + 5 ⋅6 = 12 + 30 = 42

e infine la terza riga si ottiene da


c3,1 = 1 ⋅1 + 6 ⋅4 = 1 + 24 = 25
c3,2 = 1 ⋅2 + 6 ⋅5 = 2 + 30 = 32
c3,3 = 1 ⋅ 3 + 6 ⋅6 = 3 + 36 = 39

Proprietà associativa
Verifichiamo la validità della proprietà associativa anche per il prodotto, cioè A ⋅ (B ⋅ C) = (A ⋅ B) ⋅ C
Siano A, B, C ∈ !3×3 tre matrici quadrate così definite
⎡ ⎤ ⎡ 2 1 1 ⎤ ⎡ ⎤
⎢ 1 0 1 ⎥ ⎢ ⎥ ⎢ 1 1 3 ⎥
⎢ ⎥
A= ⎢ 2 2 1 ⎥ B = ⎢⎢ 1 0 0 ⎥⎥ C = ⎢ 0 2 1 ⎥⎥

⎢ 1 6 0 ⎥ ⎢ 0 1 4 ⎥ ⎢ 1 2 1 ⎥
⎢⎣ ⎦⎥ ⎢⎣ ⎥⎦ ⎢⎣ ⎦⎥
Cominciamo calcolando B ⋅ C
⎡ ⎤
⎢ 3 6 8 ⎥

B ⋅C = ⎢ 1 1 3 ⎥⎥
⎢ 4 10 5 ⎥
⎢⎣ ⎥⎦

Poi
⎡ 7 16 13 ⎤
⎢ ⎥
A ⋅(B ⋅C) = ⎢⎢ 12 24 27 ⎥⎥
⎢ 9 12 26 ⎥
⎢⎣ ⎥⎦

Allo stesso modo, cominciamo calcolando A ⋅ B


⎡ ⎤
⎢ 2 2 5 ⎥
A ⋅B = ⎢ 6 3 6 ⎥⎥

⎢ 8 1 1 ⎥
⎢⎣ ⎦⎥
Quindi
⎡ 7 16 13 ⎤
⎢ ⎥
(A ⋅B) ⋅C = ⎢⎢ 12 24 27 ⎥⎥
⎢ 9 12 26 ⎥
⎢⎣ ⎥⎦

Algebra lineare e algoritmi in C++ A2 41


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Verifica, con le stesse matrici A, B e C, che


(A + B) ⋅ C = A ⋅ C + B ⋅ C
A ⋅ (B + C) = A ⋅ B + A ⋅ C

Proprietà commutativa: non validità


Verifichiamo che la proprietà commutativa non è applicabile tra matrici quadrate (perché tra matrici rettangolari
non è possibile invertire il prodotto). Pertanto siano A, B ∈ !3 due matrici quadrate così definite:
⎡ ⎤ ⎡ ⎤
⎢ 1 0 2 ⎥ ⎢ 2 1 1 ⎥
A = ⎢ 0 1 1 ⎥⎥
⎢ ⎢ ⎥
B=⎢ 1 1 0 ⎥
⎢ 2 2 0 ⎥ ⎢ 2 0 2 ⎥
⎢⎣ ⎦⎥ ⎢⎣ ⎦⎥
Svolgiamo i due prodotti A ⋅ B e B ⋅ A e verifichiamo che A ⋅ B ≠ B ⋅ A:
⎡ ⎤ ⎡ ⎤
⎢ 6 1 5 ⎥ ⎢ 4 3 5 ⎥
A ⋅B = ⎢⎢ 3 1 2 ⎥⎥ ≠ ⎢⎢ 1 1 3 ⎥⎥ = B ⋅ A
⎢ 6 4 2 ⎥ ⎢ 6 4 4 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

Prodotto tra due matrici triangolari


Verifichiamo che moltiplicando due matrici triangolari inferiori (rispettivamente superiori) otteniamo ancora una
matrice inferiore (rispettivamente superiore). Siano A ∈ !3×3 e B ∈ !3×3 così definite
⎡ ⎤ ⎡ ⎤
⎢ 1 0 0 ⎥ ⎢ 2 0 0 ⎥
A = ⎢⎢ 2 1 0 ⎥⎥ B = ⎢⎢ 1 3 0 ⎥⎥
⎢ 1 2 3 ⎥ ⎢ 1 1 2 ⎥
⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦

Allora A ⋅ B sarà
⎡ ⎤
⎢ 2 0 0 ⎥
A ⋅B = ⎢ 5 3 0 ⎥⎥

⎢ 7 9 6 ⎥
⎢⎣ ⎦⎥
Quindi la matrice ottenuta è ancora triangolare inferiore. Possiamo dimostrare che il prodotto di due matrici triangolari
superiori è ancora triangolare superiore. Per esempio, possiamo considerare AT e BT e calcolarne il prodotto.

5. •• Con riferimento all’esercizio 4, verifica che (AB) T


= BTAT.

Svolgiamo insieme il primo degli esercizi proposti Adesso possiamo determinare BT e AT e calcolarne
il prodotto:
Verifichiamo che (AB)T = BTAT considerando le matrici
⎡ 1 4 ⎤
⎡ 2 3 ⎤ ⎢ ⎥ ⎡ 2 4 1 ⎤
⎢ ⎥ ⎡ 1 2 3 ⎤ B = ⎢⎢ 2 5 ⎥⎥
T
AT = ⎢ ⎥
A = ⎢⎢ 4 5 ⎥⎥ B = ⎢⎢ ⎥

⎢ 3 5 6 ⎥
⎢ 3 6 ⎥ ⎣ ⎦
⎢ 1 6 ⎥ ⎣ 4 5 6 ⎦ ⎣ ⎦
⎢⎣ ⎥⎦
Abbiamo già calcolato AB nell’esercizio 4 svolto: Allora abbiamo
⎡ 14 19 24 ⎤⎥ ⎡ 14 24 25 ⎤
⎢ ⎢ ⎥
⎢ 24 33 42 ⎥⎥ BT AT = ⎢⎢ 19 33 32 ⎥⎥

⎢ 25 32 39 ⎥⎥ ⎢ 24 42 39 ⎥
⎢⎣ ⎦ ⎢⎣ ⎥⎦
allora è facile ricavare (AB)T Quindi abbiamo verificato che (AB)T = BTAT.
⎡ 14 24 25 ⎤
⎢ ⎥
⎢ 19 33 32 ⎥
⎢ ⎥
⎢ 24 42 39 ⎥
⎢⎣ ⎥⎦

42 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

6. •• Data la seguente matrice A e il vettore x, calcola il prodotto A ⋅ x.


N. Matrice A Vettore x
011 1
1 101 1
112 2
011 1
2 321 2
223 3
3,2 1,6 4
3
1,6 0,8 2

Svolgiamo insieme il primo degli esercizi proposti


Calcoliamo il prodotto A ⋅ x
⎡ ⎤ ⎡ 1 ⎤
⎢ 0 1 1 ⎥ ⎢ ⎥
A = ⎢⎢ 1 0 1 ⎥⎥ x=⎢ 1 ⎥
⎢ ⎥
⎢ 1 1 2 ⎥ ⎢ 2 ⎥
⎢⎣ ⎦⎥ ⎣ ⎦
Applicando il prodotto righe per colonne troviamo
⎡ 3 ⎤
⎢ ⎥
Ax = ⎢⎢ 3 ⎥⎥
⎢ 6 ⎥
⎢⎣ ⎥⎦

Calcolo di autovalori e autovettori


7. ••• Determina gli autovalori di ogni matrice A dell’esercizio 6 considerando come autovettore
il corrispondente vettore x.

Svolgiamo insieme il primo degli esercizi proposti

Premessa
Analizziamo come calcolare gli autovalori e gli autovettori di una matrice di ordine 2.
Sia A la seguente matrice
⎡ 1 2 ⎤
A= ⎢ ⎥
⎢ 3 2 ⎥
⎣ ⎦
allora possiamo considerare
⎡ 1 2 ⎤ ⎡ ⎤ ⎡ ⎤
A −λI = ⎢ ⎥ −λ ⎢ 1 0 ⎥ = ⎢ 1 −λ 2 ⎥
⎢ 3 2 ⎥ ⎢ 0 1 ⎥ ⎢ 3 2 −λ ⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦
A questo punto si calcola il det(A − λI) e si risolve l’equazione det(A − λI) = 0 per trovare i valori degli autovalori
relativi alla matrice A.
Quindi:
det(A −λI) = (1 −λ)(2 −λ) − 6 = 2 − 2λ −λ + λ2 − 6 = λ2 − 3λ − 4
Pertanto scrivendo l’equazione e risolvendo
det(A −λI) = 0 ⇔ (λ − 4)(λ + 1) = 0 ⇔ λ1 = 4 ∧ λ2 = −1
abbiamo trovato due autovalori per la matrice di ordine 2.

Algebra lineare e algoritmi in C++ A2 43


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

NOTA: vi è un legame tra il numero di autovalori e l'ordine della matrice, infatti il numero delle soluzioni
dell’equazione det(A − λI) = 0, contate le molteplicità, è uguale all’ordine della matrice A.

Una volta individuati gli autovalori, passiamo a determinare gli autovettori. In questo calcolo troveremo
una famiglia di vettori che variano per un parametro. Pertanto, per sceglierne uno, daremo un valore al parametro
e calcoleremo un solo autovettore.
Cominciamo determinando l’autovettore v1 relativo all’autovalore λ1 = 4. Dobbiamo risolvere il sistema
⎡ x ⎤
(A − λ1I)v1 = 0 dove v1 = ⎢ ⎥ è l’autovettore cercato.
⎢ y ⎥
⎢⎣ ⎥⎦
Allora
⎡ 1−4 2 ⎤⎥ ⎢⎡ x ⎥⎤ ⎡⎢ 0 ⎤⎥ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤
⎢ −3 2 ⎥ ⎢ x ⎥ = ⎢ 0 ⎥
(A − 4I)v 1 = 0 ⇔  ⎢ ⎢ ⎥ =  ⎢  ⇔  ⎢ ⎥
⎢ 3
⎣ 2 − 4 ⎥⎦ ⎢⎣ y ⎥⎦ ⎣ 0 ⎥⎦ ⎢ 3 −2 ⎥ y
⎣ ⎦ ⎢⎣

⎥⎦ ⎣ 0 ⎦

Pertanto possiamo scrivere il sistema




⎪ −3x + 2y = 0


⎪ 3x − 2y = 0

Come già accennato, questo sistema ha infinite soluzioni al variare di un parametro. Per trovare l’insieme
2
di autovettori poniamo y = a quindi, sostituendo in un’equazione del sistema, troveremo x = a.
3
Perciò, la famiglia di vettori al variare di a sarà
⎡2 ⎤
⎢ a,a⎥ , a ∈ R − {0}
⎢⎣ 3 ⎥⎦

NOTA: escludiamo il valore 0 perché il vettore ⎡⎢ 0 0 ⎤⎥ non è autovettore per definizione.


⎣ ⎦
⎡ 2 ⎤
Adesso, possiamo scegliere a = 3 e otteniamo l’autovettore v 1 = ⎢⎢ ⎥.
⎣ 3 ⎥⎦
⎡ −1 ⎤
Analogamente troviamo l’autovettore v 2 = ⎢ ⎥ relativo all’autovalore λ2 = −1.
⎢ 1 ⎥
⎣ ⎦
Infine, possiamo determinare il raggio spettrale
ρ(A) = max λ , λ ∈ σ(A)
infatti avremo λ1 = 4 e λ2 = 1 e quindi ρ ( A) = 4.

Vediamo ora come determinare l’autovalore di una matrice conoscendo l’autovettore.


Siano A una matrice e x un suo autovettore come di seguito
⎡ ⎤ ⎡ 1 ⎤
⎢ 0 1 1 ⎥ ⎢ ⎥
A = ⎢⎢ 1 0 1 ⎥⎥ e x = ⎢ 1 ⎥
⎢ ⎥
⎢ 1 1 2 ⎥ ⎢ 2 ⎥
⎢⎣ ⎥⎦ ⎣ ⎦
Allora consideriamo il sistema
⎡ −λ 1 1 ⎤ ⎡ 1 ⎤ ⎡ 0 ⎤
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
(A −λI)x = 0 ⇔ ⎢⎢ 1 −λ 1 ⎥ ⎢ 1 ⎥=⎢ 0 ⎥
⎥ ⎢ ⎥ ⎢ ⎥
⎢ 1 1 2 −λ ⎥ ⎢ 2 ⎥ ⎢ 0 ⎥
⎣ ⎦ ⎣ ⎦ ⎢⎣ ⎦⎥
ed eseguendo il prodotto avremo

⎪ −λ + 1 + 2 = 0 ⎧
⎪ −λ + 3 = 0

⎪ ⎪


⎨ ⎪
1 −λ + 2 = 0 ⇔ ⎨ −λ + 3 = 0

⎪ ⎪



⎩ 1 + 1 + 2(2 −λ) = 0 ⎪
⎩−2λ + 6 = 0

Le tre equazioni sono equivalenti, quindi risolvendo la prima troveremo l’autovalore λ = 3.

44 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Calcolo del determinante


8. •• Calcola il determinante della matrice A dell’esercizio 6.
9. •• Calcola il determinante delle seguenti matrici A e B.
N. Matrice A Matrice B
213 041
1 405 231
100 161
23 23
2
45 56
213 042
3 405 213
136 216
45 13
4
16 24
111 2 4 1 6
111 5 4 2 1
5
111 7 8 4 2
1 2 3 4

Svolgiamo insieme il primo degli esercizi proposti


Calcoliamo il determinante della seguente matrice utilizzando la regola di Laplace e la regola di Sarrus.
⎡ ⎤
⎢ 2 1 3 ⎥
A = ⎢ 4 0 5 ⎥⎥

⎢ 1 0 0 ⎥
⎢⎣ ⎦⎥

Regola di Laplace
Per comodità la calcoliamo rispetto l’ultima riga, allora avremo
⎡ 1 3 ⎤ ⎡ 2 3 ⎤ ⎡ 2 1 ⎤
1 ⋅ ⎢⎢ ⎥ −0 ⋅

⎢ ⎥+0 ⋅ ⎢ ⎥
⎢ 4 5 ⎥ ⎢ 4 0 ⎥
⎣ 0 5 ⎦ ⎣ ⎦ ⎣ ⎦
Quindi
det(A) = 1 ⋅ (1 ⋅ 5) − (3 ⋅ 0) − 0 ⋅ (2 ⋅ 5 − 3 ⋅ 4) + 0 ⋅ (2 ⋅ 0 − 1 ⋅ 4) = 5 − 0 + 0 = 5.

Regola di Sarrus
Scriviamo la matrice come segue e calcoliamo i prodotti in diagonale
⎡ 2 1 3 2 1 ⎤
⎢ ⎥
⎢ 4 0 5 4 0 ⎥
⎢ ⎥
⎢ 1 0 0 1 0 ⎥
⎢⎣ ⎥⎦

Allora troveremo
(1 ⋅ 0 ⋅ 0) + (1 ⋅ 5 ⋅ 1) + (3 ⋅ 4 ⋅ 0) − (3 ⋅ 0 ⋅ 1) − (2 ⋅ 5 ⋅ 0) − (1 ⋅ 4 ⋅ 0) = 0 + 5 + 0 − 0 − 0 − 0 = 5
Quindi abbiamo ottenuto lo stesso risultato.

Algebra lineare e algoritmi in C++ A2 45


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Norme vettoriali e matriciali


10. • Calcola la norma1 dei seguenti vettori:
• 1204
• 653410
• 111000
• 1150111
• 3 5 6 7 8 10
• 2 4 6 8 10 12
• −3 −5 0 −1 0 1
• −3 −5 −8 4

Svolgiamo insieme il primo degli esercizi proposti


Svolgiamo il primo punto:

v = ⎢⎡ 1 2 0 4 ⎤⎥
⎣ ⎦

v 1 = 1 + 2 + 0 + 4 =7

11. • Calcola la norma euclidea dei vettori dell’esercizio 10.

Svolgiamo insieme il primo degli esercizi proposti


Determina la norma euclidea del vettore del primo punto dell’esercizio 10
v 2 = vv T .

Cominciamo calcolando vvT


⎡ 1 ⎤
⎢ ⎥
⎡ ⎤ ⎢ 2 ⎥
vv = ⎢ 1 2 0 4 ⎥ ⎢
T
⎥ = 1 ⋅ 1 + 2 ⋅ 2 + 0 ⋅ 0 + 4 ⋅ 4 = 1 + 4 + 0 + 16 = 21
⎣ ⎦ ⎢ 0 ⎥
⎢ ⎥
⎢⎣ 4 ⎥⎦

Ora possiamo calcolare la radice quadrata


v 2 = vv T = 21 = 4,58.

12. • Calcola la norma infinito dei vettori dell’esercizio 10.

Svolgiamo insieme il primo degli esercizi proposti


Determina la norma infinito del vettore del primo punto dell’esercizio 10
v ∞ = max v 1 .

Determiniamo i valori assoluti di tutte le componenti del vettore v e individuiamo il massimo


v 1 = 1 v 2 = 2 v 3 = 0 v 4 = 4.

Il massimo tra i valori ottenuti è 4, quindi


v ∞ =4

46 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

13. •• Determina la norma1, la norma infinito e la norma di Frobenius delle seguenti matrici.
N. Matrice
1234
1 4321
1010
010
2
321
12345
3
43210
41324
4 41240
13142
12441240
5
13511422
0 0 1 1
1 1 0 0
6
1 2 3 4
4 3 2 1
5 6
1 1
1 2
7
3 4
4 3
0 1

Svolgiamo insieme il primo degli esercizi proposti Come prima, calcoliamo la somma di tutte le righe e poi
individuiamo il massimo.
Svolgiamo l’esercizio per la prima matrice:
Prima riga
⎡ ⎤
⎢ 1 2 3 4 ⎥ 1 + 2 + 3 + 4 = 10
A = ⎢⎢ 4 3 2 1 ⎥⎥
⎢ 1 0 1 0 ⎥ Seconda riga
⎢⎣ ⎥⎦
4 + 3 + 2 + 1 = 10
Cominciamo dalla norma1 che è il massimo valore delle
somme sulle colonne in valore assoluto. Per iniziare Terza riga
calcoliamo la somma di tutte le colonne e poi 1 + 0 + 1 + 0 =2
determiniamo il massimo.
Pertanto il massimo è 10, quindi A ∞ = 10.
Prima colonna
1+ 4 + 1 =6 Infine, calcoliamo la norma di Frobenius. Questo valore
è dato dalla radice quadrata della somma degli elementi
Seconda colonna della matrice al quadrato. Per semplicità scriviamo
la matrice con tutti i suoi elementi elevati al quadrato,
2+ 3+ 0 =5
poi ne calcoliamo la somma e infine la radice quadrata
Terza colonna ⎡ ⎤
⎢ 1 4 9 16 ⎥
3+ 2+ 1 =6 ⎢ 16 9 4 1 ⎥⎥

⎢ 1 0 1 0 ⎥
Quarta colonna ⎢⎣ ⎥⎦
4 + 1+ 0 =5 A questo punto, calcoliamo la somma di tutti
gli elementi
Il massimo tra i valori ottenuti è 6 quindi A 1 = 6.
1 + 4 + 9 + 16 + 16 + 9 + 4 + 1 + 1 + 0 + 1 + 0 = 62
Calcoliamo, ora, la norma infinito che è il massimo
valore delle somme sulle righe in valore assoluto. allora avremo A fro = 62 = 7,87.

Algebra lineare e algoritmi in C++ A2 47


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

14. •• Dato il vettore x = [3 7 0 1] e le seguenti 16. •• Date le seguenti matrici, verifica che
matrici, determina la norma1 del vettore e delle ⏐⏐A + A⏐⏐1 =⏐⏐A⏐⏐1 +⏐⏐A⏐⏐1.
matrici e verifica che ⏐⏐AxT⏐⏐1 ≤⏐⏐A⏐⏐1⏐⏐xT⏐⏐1.

1) 2) 3) 1) 2) 3)
4 67 8 5231 1001 0 0 0 1 17 9002
9 00 2 0103 0001 4 4 4 4 90 4101
8 10 1 1010 3 3 3 3 3240
5 42 0 2 2 2 2

15. •• Dato il valore a = 15 e le seguenti matrici, 17. •• Date le seguenti matrici, verifica che
verifica che ⏐⏐aA⏐⏐1 =⏐a⏐⋅⏐⏐A⏐⏐1 ≥ 0. ⏐⏐A + A⏐⏐∞ =⏐⏐A⏐⏐∞ +⏐⏐A⏐⏐∞.
1) 2) 3) 1) 2) 3)
124 2310 3 5 1 1 3 3 3 3 6517 6003
420 1033 1 2 3 4 1 1 2 2 8290 3101
5146 3 6 2 1 5 1 5 4 1234 0240
7 5 3 0 6 2 1 5

18. •• Calcola la norma di Frobenius delle matrici dell’esercizio 14.


19. •• Calcola la norma di Frobenius delle matrici dell’esercizio 15.
20. •• Verifica che per le matrici dell’esercizio 17 sia valida l’uguaglianza ⏐⏐A + A⏐⏐fro= 2⏐⏐A⏐⏐fro.
21. •• Completa la seguente tabella e verifica la proprietà ⏐⏐AxT⏐⏐≤⏐⏐A⏐⏐ ⏐⏐xT⏐⏐ per la norma1.
Matrice Vettore AxT ||AxT||1 ||A||1 ||xT||1 ||A||1||xT||1
431 361
672
538
5 8 3 1 6110
0 3 2 4
5 7 2 3
7 8 1 5
12 20 58
10 14

48 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

A3 Algebra vettoriale
e matriciale in Octave
FILE SORGENTI
Codici in Octave
File Excel

IMPARERAI…

A utilizzare Octave come strumento di calcolo A utilizzare Octave come linguaggio


per algebra vettoriale e matriciale di programmazione

1 Octave: una valida alternativa gratuita


a MATLAB
Primi passi
Nella precedente unità abbiamo affrontato alcuni concetti salienti in merito all’algebra vetto-
riale e matriciale.
Tale algebra richiede dei calcoli su matrici e vettori che, se gestiti con i tradizionali linguaggi
di programmazione, risulterebbero complicati e ostici da amministrare (pensate al prodotto
di due matrici o al calcolo del determinante).
Sarebbe auspicabile, pertanto, utilizzare un ambiente ad hoc per il calcolo numerico in cui, per
esempio, la somma o il prodotto di due matrici si ridurrebbero a una semplice operazione di
somma o prodotto fra due variabili.

L’ambiente che utilizzeremo allo scopo si chiama


Il Progetto GNU è stato lanciato nel Settembre
GNU Octave: attualmente è un programma mante- 1983 da Richard M. Stallman, con lo scopo di
nuto e sviluppato dal progetto GNU, rilasciato con creare un sistema operativo completo basato
licenza GPL (è, quindi, un software libero) ed è in- su Software Libero. Il nome del Progetto GNU è
derivato dall’acronimo ricorsivo “GNU’s Not Unix”.
cluso nelle principali distribuzioni GNU/Linux.
Nell’ottobre 1985, Stallman ha anche fondato
Tra gli ambiti di utilizzo di GNU Octave (Octave per la “Free Software Foundation” per affrontare gli
aspetti giuridici e organizzativi del Progetto GNU e
semplicità, d’ora in poi) si trovano: l’aritmetica di per diffondere l’uso e la conoscenza del Software
base, l’algebra lineare, il calcolo matriciale, le equa- Libero. Le licenze principali usate dal Progetto
zioni algebriche e differenziali, la statistica, la ricer- GNU sono la GNU General Public License (GPL)
ca operativa, la matematica finanziaria, la teoria dei e la GNU Lesser General Public License (LGPL,
originariamente chiamata GNU Library Public
controlli, l’analisi delle immagini, l’analisi dei segna- License). Negli anni, esse si sono affermate come le
li, l’analisi del suono, e molti altri. licenze più usate per il Software Libero.

Algebra vettoriale e matriciale in Octave A3 49


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Octave rappresenta una valida alternativa al più noto MATLAB


MATLAB combina un ambiente
(software proprietario), con il quale ha un livello di compatibilità desktop ottimizzato per
molto elevato (tutti i programmi riportati nel presente volume sono l’analisi iterativa e i processi di
stati testati su entrambi gli ambienti e su entrambi sono risultati progettazione con un linguaggio
perfettamente funzionanti). di programmazione che esprime
le operazioni matematiche con
Octave è principalmente un programma a linea di comando ma, matrici e array in modo diretto.
nelle ultime versioni, è corredato da un’interfaccia grafica che com-
prende anche un editor.

menu dei comandi principali

area nella quale


impartire singoli
comandi

editor per la creazione


di programmi

La figura sopra riporta la schermata che appare all’avvio del programma. Affronteremo in se-
guito l’aspetto relativo all’editor; per il momento impariamo a conoscere Octave esclusivamen-
te a linea di comando.

Octave dispone di un vero e proprio linguaggio ad alto livello, interpretato e basato sulla
creazione di array che non richiedono alcun dimensionamento iniziale.

Questo permette di risolvere più velocemente problemi formulati in forma vettoriale o matri-
ciale che, invece, richiederebbero tempi più lunghi se risolti con linguaggi quali il C o il Pascal.

A livello più basso, Octave può essere utilizzato come una calcolatrice scientifica.

Sono disponibili le classiche operazioni aritmetiche (+ − * /), l’elevamento a potenza (∧) oltre
che una vastissima libreria di funzioni pronte all’uso.

50 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Comandi per l’assegnazione di variabili


Quando le espressioni non sono assegnate ad alcuna variabile, il si- Octave
stema restituisce il risultato all’interno della variabile di sistema ans; Finestra dei comandi
l’esempio a fianco riporta delle semplici espressioni algebriche con il >> 123/61
relativo risultato. ans = 2.0164
Essendo un linguaggio interpretato, una volta impartito il comando, o >> 2^10
una serie di comandi (posti all’interno di un file), il sistema lo compila e ans = 1024
contemporaneamente lo esegue evidenziando la presenza di eventuali >> 15*5−6
errori. A differenza di altri linguaggi di programmazione, un program- ans = 69
ma in Octave non ha bisogno di una parte dichiarativa in cui definire
le variabili utilizzate all’interno del programma; inoltre, il tipo e la dimensione delle variabili
non sono fissati a priori, ma possono essere modificati direttamente in fase di assegnazione,
riconoscendo, in modo automatico, il tipo e la dimensione della variabile e allocando, di volta
in volta, lo spazio necessario a contenerla. I calcoli avvengono sempre in doppia precisione
e i dettagli dell’implementazione sono dipendenti dall’architettura hardware della macchina.
Per assegnare il risultato di un’espressione a una variabile basta utilizzare la classica sintassi
matematica/informatica (nome_variabile = espressione). Qui sotto illustreremo alcuni esempi
di assegnazione; notate come la variabile a, inizialmente utilizzata per contenere un valore
reale, verrà successivamente utilizzata per contenere una stringa.

Octave
Finestra dei comandi
>> a = 256*123
a = 31488
>> b = 1456/2
b = 728
>> a = "Gabriele"
>> who
Variables in the current scope:
a ans b

>> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
a 1x8 8 char
ans 1x1 8 double
b 1x1 8 double

Total is 10 elements using 24 bytes

Una volta create delle variabili, queste rimangono attive in memoria e possono essere utilizzate
in qualsiasi momento. Il comando who permette di sapere quali sono le variabili dell’utente
attualmente in memoria. Il comando whos mostra la dimensione delle variabili e la relativa
occupazione di memoria (numero di byte).

Algebra vettoriale e matriciale in Octave A3 51


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il contenuto di una variabile può sempre essere ispezionato; scrivendo il nome della variabile
nella riga di comando, il valore contenuto in essa verrà visualizzato sullo schermo.
Ogni volta che viene eseguita un’espressione, Octave ne visualizza, subito dopo l’invio, il risul-
tato; se volessimo non visualizzare tale risultato sarebbe sufficiente porre alla fine dell’espres-
sione il simbolo “ ; ”.
Le variabili rimangono “in vita” fino alla chiusura del programma, o fino alla loro eliminazione
per mezzo del comando clear, con conseguente liberazione delle aree di memoria.
Per “pulire” invece il terminale dai comandi precedentemente inseriti, si utilizza il comando
clc. Per evitare che il risultato delle operazioni di assegnazione sia riportato sullo schermo, si
termina l’istruzione con un punto e virgola.

Octave
Finestra dei comandi
>> base = 35;
>> altezza = 12;
>> perimetro = 2*(base+altezza);
>> area = base*altezza;
>> perimetro
perimetro = 94
>> area
area = 420
>>

Comandi per la visualizzazione dei risultati


Il comando format permette di modificare il formato di visualizzazione dei risultati ma non
modifica la precisione con cui i calcoli vengono eseguiti. Questi vengono effettuati utilizzando
i numeri in virgola mobile in doppia precisione, secondo lo standard IEEE 754.
Per esempio, data l’operazione 1/17 ecco come verrebbe visualizzato il risultato nei diversi for-
mati:
• format short produce 0,058824;
• format short e produce 5,8824e−002;
• format long produce 0,0588235294117647;
• format long e produce 5,88235294117647e−002.

Comandi sulla cartella di lavoro


La linea di comando agisce anche da interprete dei comandi del file system. L’ambiente Octave
fa riferimento a un’area di lavoro in cui potete eventualmente memorizzare i file contenenti i
programmi, e pertanto è dotato di appositi comandi:
• cd per spostarsi in una cartella di lavoro;
• pwd per visualizzare l’attuale cartella di lavoro;
• dir o ls per visualizzare i file della cartella di lavoro;
• what per elencare i file contenenti i programmi Octave (solitamente con estensione .m).
Per avere spiegazioni circa i singoli comandi, potete digitare help seguito dal nome del coman-
do di cui volete conoscere le caratteristiche.

52 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

2 Calcolo matriciale
Il principale punto di forza di Octave è il calcolo matriciale. Poiché è inconsueto che linguaggi
di uso generale pongano le matrici come tipo di dati predefiniti, può essere utile spendere qual-
che parola per illustrare le più semplici manipolazioni matriciali che Octave permette.
Le variabili per MATLAB/Octave hanno una struttura di tipo matriciale:
• gli scalari sono considerati matrici 1 × 1;
• i vettori riga sono matrici 1 × n;
• i vettori colonna sono matrici n × 1.

Per costruire una matrice, è necessario seguire alcune convenzioni di base:


• separare gli elementi della riga con una virgola o uno spazio bianco;
• delimitare l’ultimo elemento della riga con il punto e virgola (tranne l’ultima riga);
• racchiudere l’intera lista di elementi fra parentesi quadre [ ].

Octave
Finestra dei comandi
>> A = [1 2 3;4 5 6;7 8 9]
A=

1 2 3
4 5 6
7 8 9

>> A(1,1) = 10
A=

10 2 3
4 5 6
7 8 9

Per definire una matrice le si possono, innanzitutto, assegnare direttamente gli elementi
riga per riga. All’elemento in riga i e colonna j di A si accede digitando A(i, j). Per la matrice A
dell’esempio precedente si è scelto di assegnare al solo elemento A(1,1) il valore 10.
Essendo A, B, C matrici con coefficienti reali e s un numero reale, si definiscono le operazioni:
• C=s⋅A=A⋅s prodotto di una matrice per un numero reale (tutti gli elementi di A
vengono moltiplicati per s);
• C = A' trasposizione di una matrice;
• C=A+B somma di due matrici di dimensione m × n;
• C=A−B sottrazione di due matrici m × n;
• C=A*B prodotto righe per colonne di A (m righe e n colonne) per B
(m righe e p colonne);
• C = A. B cij = aij bij prodotto di due matrici componente per componente.
* *

Come potete notare nella figura successiva, tra le due matrici A e B è stata effettuata una som-
ma (elemento per elemento) e due prodotti. Nel primo caso, si ha il classico prodotto tra ma-
trici, mentre nel secondo la presenza del punto (A. * B) ha determinato un risultato in cui ogni
elemento di A è stato moltiplicato con il corrispettivo elemento di B.

Algebra vettoriale e matriciale in Octave A3 53


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Octave
Finestra dei comandi
>> A = [1 2 3;4 5 6;7 8 9];
>> B = [2 3 1;5 6 9;4 9 7];

>> C = A+B >> C = A.*B >> C = A*B


C= C= C=

3 5 4 2 6 3 24 42 40
9 11 15 20 30 54 57 96 91
11 17 16 28 72 63 90 150 142

Possiamo comprendere ora le potenzialità di uno strumento di calcolo numerico, apprezzando


la possibilità di effettuare delle operazioni tra matrici, anche complesse, semplicemente utiliz-
zando gli operatori matematici.
Con questo strumento di calcolo gli elementi delle espressioni possono essere indifferentemen-
te dei numeri, dei vettori o delle matrici.
Naturalmente, le espressioni sono rese possibili se vi è la compatibilità fra gli elementi coinvolti
(la somma di due matrici che hanno un differente numero di righe provocherà un errore).

Octave
Finestra dei comandi
>> A' >> C = 2*A+B' >> C = (A+B−A')*B'
ans = C= C=

1 4 7 4 9 10 4 −11 −4
2 5 8 11 16 21 39 134 131
3 6 9 15 25 25 56 169 180

Oltre agli operatori di base, Octave mette a disposizione tutta una serie di funzioni tipiche delle
matrici.
Elenchiamo di seguito quelle principali.

Funzione Significato
zeros(n) Genera una matrice n × n di zeri
zeros(m,n) Genera una matrice m × n di zeri
Ritorna un vettore [r c] con il numero r di righe e c di colonne della matrice; se M ha più
size(M)
dimensioni, ritorna un vettore con numero di elementi per ogni dimensione
zeros(size(M)) Genera una matrice di zeri della stessa dimensione di M
ones(n) Genera una matrice n × n di uno
ones(m,n) Genera una matrice m × n di uno
ones(size(M)) Genera una matrice di uno della stessa dimensione di M
eye(n) Genera la matrice identità n × n

54 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Funzione Significato
eye(m,n) Genera la matrice identità m × n
Ritorna la dimensione più grande della matrice; in caso di vettore length(vet) corrisponderà
length(M)
al numero di elementi del vettore
diag(M) Ritorna un vettore colonna con gli elementi della diagonale di M
diag(diag(M)) Ritorna una matrice diagonale avente la stessa diagonale di M
tril(M) Ritorna la matrice triangolare inferiore di M
triu(M) Ritorna la matrice triangolare superiore di M
rand(n) Genera una matrice n × n con valori random compresi tra 0 e 1
rand(m,n) Genera una matrice m × n con valori random compresi tra 0 e 1
det(M) Fornisce il determinante di M
inv(M) Ritorna la matrice inversa di M(M−1 con M matrice quadrata)
linspace(Base, Limit, n) Ritorna un vettore riga di n elementi equamente distribuiti fra i valori Base e Limit
Ritorna la norma di M il cui tipo è identificato da t, che può assumere i seguenti valori:
•1 : norma1
norm(M,t) •2 : norma2
• inf : norma infinito
• fro : norma di Frobenius
trace(M) Restituisce la somma degli elementi della diagonale principale

OSSERVA COME SI FA
■ Calcoliamo la matrice inversa di B e verifichiamo che: BB−1 = I. Della matrice B, inoltre, calcoliamo la norma1
(ricordiamo che corrisponde alla somma più alta delle singole colonne) e la norma infinito (somma più alta
delle singole righe).

Octave – Finestra dei comandi


>> B = [0 2 3;2 3 0;1:3] >> C = inv(B) >> B*C
B= C= ans =

0 2 3 −1.00000 0.00000 1.00000 1.00000 0.00000 0.00000


2 3 0 0.66667 0.33333 −0.66667 0.00000 1.00000 0.00000
1 2 3 −0.11111 −0.22222 0.44444 0.00000 0.00000 1.00000

>> norm(B,1)
ans = 7
>> nom(B,inf)
ans = 6

ORA TOCCA A TE
■ Data una matrice quadrata M, determina una nuova matrice uguale a M ma con gli elementi sulla diagonale
principale di valore raddoppiato rispetto a quelli della matrice M. Prova da solo, ma se ti trovi in difficoltà,
puoi confrontare lo svolgimento guidato negli esercizi di fine Unità.

Algebra vettoriale e matriciale in Octave A3 55


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

3 Variabili e operatori
Abbiamo detto precedentemente che l’unità fondamentale di dati in Octave è la matrice.

Una variabile è una regione di memoria che contiene, quindi, i dati della matrice.

Octave è un linguaggio a tipizzazione debole, quindi le variabili vengono create assegnando a


esse dei valori. Il tipo di una variabile è determinato dal tipo dei valori assegnati, che possono
anche mutare durante il corso del programma (una variabile può contenere un valore scalare,
subito dopo una matrice, un vettore, una stringa…).
Il nome delle variabili non può iniziare con un numero né con qualsiasi altro simbolo differente
da una vocale o consonante (fatta esclusione per il simbolo _).
Il linguaggio utilizzato da Octave è molto simile al linguaggio C e, come tale, è un linguaggio
case sensitive (la variabile y è differente dalla variabile Y).
Il linguaggio memorizza gli elementi scalari in variabili di tipo double espressi in 64 bit con
doppia precisione; questi numeri possono essere:
• reali, per esempio: var1 = −10,7;
• immaginari, per esempio: var2 = 4i; var3 = 4i;
• complessi, per esempio: var4 = 10,3 + 10i.

Inoltre le parti reali e immaginarie possono essere positive e negative nell’intervallo di valori
[10−308, 10308].
Una variabile di tipo char contiene uno scalare o un array di valori a 8 bit, ciascuno dei quali
rappresenta un carattere; le stringhe vanno racchiuse tra apici singoli. Per esempio:
commento = 'questa è una stringa'

Oltre agli operatori matematici di base (tabella a sinistra), Octave mette a disposizione una
serie di funzioni matematiche predefinite (tabella a destra).

Operatori matematici di base Descrizione Funzione Descrizione

+ Somma sin Seno

− Differenza cos Coseno

* Prodotto tan Tangente

/ Divisione asin Arcoseno



Elevamento a potenza acos Arco coseno

. Operatore puntuale atan Arco tangente

exp ex
In particolare, facendo riferimento all’operatore log Logaritmo base e
puntuale (.) (di cui abbiamo già parlato nei volumi
log2 Logaritmo base 2
precedenti), ricordiamo che se A è una matrice
A∧2 = A *A mentre A.∧2 = {aij } log10 Logaritmo base 10
2

cioè a una matrice i cui elementi sono i quadrati dei abs Valore assoluto
singoli elementi di A. sqrt Radice quadrata

56 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Operatori relazionali
Possiamo utilizzare gli operatori relazionali per mettere in atto un confronto che produce
un risultato vero (1) o falso (0).
Gli operatori relazionali sono:
< <= > >= == !=
In particolare, ricordiamo che l’operatore == è di confronto sui valori uguali (l’operatore = non
è di confronto, ma di assegnazione) mentre l’operatore != restituisce vero (1) quando gli ele-
menti confrontati sono differenti.
Nel caso in cui gli elementi confrontati siano due matrici delle stesse dimensioni (A==B),
l’output fornito è una matrice composta da valori 1 nelle posizioni in cui gli elementi delle due
matrici sono uguali e valori 0 nelle altre posizioni.

Octave
Finestra dei comandi
>> A >> B >> A==B
A= B= ans =

1 2 3 0 2 3 0 1 1
4 5 6 2 3 0 0 0 0
7 8 9 1 2 3 0 0 0

Operatori logici
Gli operatori logici confrontano gli elementi di vettori o matrici aventi le stesse dimensioni;
possono essere utilizzati attraverso i relativi simboli o attraverso funzioni equivalenti:
A&B and(A,B) A⏐B or(A,B) ∼A not(A) xor(A,B)
Un elemento è logicamente vero se non è nullo. Pertanto, l’output fornito è una matrice com-
posta da valori 1, nelle posizioni in cui gli elementi delle due matrici sono verificati funzional-
mente, e da valori 0 nelle altre posizioni.
• A&B restituisce una matrice con valori nulli solo se nella corrispondente posizione di A o/e
B vi sono elementi nulli, altrimenti restituisce 1.
• A|B restituisce una matrice con valori nulli solo se nella corrispondente posizione di A e B
vi sono elementi nulli, altrimenti restituisce 1.
• xor(A,B) restituisce una matrice con valori uguali a 1 solo se nella corrispondente posizione
di A o B vi sono elementi nulli (solo in uno dei due), altrimenti restituisce 0.
Prendiamo in considerazione le matrici A e B dell’esempio precedente e verifichiamo i risultati
per A&B, A⏐B, xor(A,B), come illustrato di seguito.

Octave
Finestra dei comandi
>> A&B >> A|B >> xor(A,B)
ans = ans = ans =

0 1 1 1 1 1 1 0 0
1 1 0 1 1 1 0 0 1
1 1 1 1 1 1 0 0 0

Algebra vettoriale e matriciale in Octave A3 57


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’operatore “ : ”
L’operatore “ : ” è molto importante e può essere usato per scopi diversi; solitamente determina
un range di valori; per esempio, l’espressione:
v = 1 : 10
genera un vettore riga contenente i valori da 1 a 10, con passo unitario (v = 1 2 3 4 5 6 7 8 9 10);
da notare il fatto che le parentesi quadre possono essere omesse.
Possiamo ottenere una spaziatura differente da quella unitaria nel seguente modo:
v=1:2:8 (= 1 3 5 7)
v = 100 : − 10 : 50 (= 100 90 80 70 60 50)
Il termine centrale stabilisce il passo della sequenza. Quindi, in Octave utilizzeremo il coman-
do v = a:h:b per indicare un vettore di elementi compresi tra a e b con passo h.
Utilizzato con una matrice, l’operatore permette di riferirsi a porzioni della matrice. Per esem-
pio, A(i : j, x : y) fornisce una sottomatrice dalla riga i alla riga j e dalla colonna x alla y.

Octave
Finestra dei comandi
>> B >> B(1:3,2:3)
B= ans =

0 2 3 2 3
2 3 0 3 0
1 2 3 2 3

4 Octave come linguaggio di programmazione


Sino a ora abbiamo utilizzato Octave esclusivamente impartendo
istruzioni sulla linea di comando, ma il linguaggio messo a disposizio-
ne può essere considerato a tutti gli effetti alla stregua di linguaggi di
programmazione come il C o il Fortran.
Un m-file è un file di testo
con estensione .m privo di
Un programma è composto da una sequenza di comandi salvati caratteri di formattazione,
all’interno di un m-file, che può essere di due tipi: script e function. solo testo puro.

Lo script
I comandi all’interno di uno script vengono eseguiti sequenzialmente, come se fossero scritti
nella finestra dei comandi. Per eseguire il file si digita il suo nome (senza estensione) e i risultati
sono visualizzati nella finestra dei comandi (ricordiamo che il punto e virgola alla fine di ogni
comando evita di visualizzare il risultato del comando stesso).
Uno script non accetta variabili di input, ma può generare variabili di output. Inoltre, opera
sulle variabili dello spazio di lavoro che può essere arricchito introducendone di nuove duran-
te l’esecuzione dello script stesso. Ricordiamo che le variabili permangono dopo l’esecuzione
dello script.

58 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Supponiamo di voler realizzare uno script che effettui il prodotto di due matrici quadrate e,
successivamente, la trasposta e l’inversa della matrice risultante dal prodotto. Poiché è richie-
sta una sequenza di istruzioni, sarebbe opportuno memorizzarle in uno script da eseguire
all’occorrenza.
La nuova interfaccia di Octave contempla al suo interno una finestra di Editor in cui inserire
lo script, il cui salvataggio è un’operazione semplicissima che consente di attribuire un nome
allo script (file con estensione .m). Nel nostro caso, lo script seguente ha il nome “prodotto.m”.
L’esecuzione dello script avviene semplicemente facendo clic sul pulsante salva ed esegui.
Quanto prodotto dallo script è visualizzabile all’interno della finestra dei comandi. Nel nostro
esempio, notiamo che l’uscita prodotta è quella in corrispondenza dei comandi privi del punto
e virgola finale.
L’esecuzione dello script equivale a digitare sulla linea di comando il nome del file, senza esten-
sione, come avrai avuto modo di verificare nella finestra dei comandi precedente.

Octave
Finestra dei comandi
>> prodotto
La finestra dell’editor offre,
Ct = attraverso opportuni pulsanti, la
possibilità di eseguire il codice
5 4 2 passo dopo passo inserendo dei
15 16 11 punti di interruzione (breakpoint).
19 22 15
Ci =

0.090909 0.727273 −1.181818


0.727273 −1.681818 1.545455
−0.545455 1.136364 −0.909091

Algebra vettoriale e matriciale in Octave A3 59


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il file verrà cercato dal sistema nella directory di lavoro (verificabile con il comando pwd) o,
eventualmente, spostandosi in un’altra cartella di lavoro (comando cd).
Attraverso l’interfaccia grafica potete salvare i file in qualsiasi punto del file system; dovete
tener presente, però, che Octave può eseguire un file solo se lo trova dentro la cartella di lavoro.
Fortunatamente l’interfaccia grafica ci aiuta a cambiare o aggiungere una nuova cartella di
lavoro in modo molto semplice e intuitivo.

La function
Una function è anch’essa una sequenza di istruzioni ma, a differenza dello script, accetta dei
parametri in ingresso. Inoltre, le eventuali variabili create al suo interno non permangono nel-
lo spazio di lavoro a function conclusa. La sua definizione inizia con la parola chiave function:
function [ out1, . . . , outn ] = nomefun (in1, . . . , inm)
dove:
• out1, …, outn sono i parametri di output (opzionali);
• in1, …, inm sono i parametri di input.

La function termina all’ultima sua istruzione all’interno del file, oppure quando si incontra per
la prima volta il comando return. Solitamente, il file prende il nome della funzione in cui esso
è contenuto ma, se questo non dovesse accadere, la chiamata alla funzione avviene esclusiva-
mente attraverso il nome del file (e non sul nome della funzione).
È buona norma inserire all’inizio di ogni file (e quindi di ogni function) delle linee di commen-
to, precedute dal simbolo %, per evidenziare il nome della funzione e i parametri di input e
output prodotti. La linea di commento permette una maggiore comprensione e leggibilità della
function stessa.
File funzione_prodotto.m
% function [Ct,Ci] = funzione_prodotto(A,B)
% INPUT
% A,B matrici da moltiplicare
% OUTPUT
% Ct = matrice trasposta del prodotto
% Ci = matrice inversa del prodotto
function [Ct,Ci] = funzione_prodotto(A,B)
C = A*B;
Ct = C’;
Ci = inv(C);

60 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il vantaggio di una function è proprio quello di essere applicabile a differenti valori in input;
il fatto di essere parametrica la rende più versatile di uno script. L’intestazione della funzione:
function [Ct,Ci] = funzione_prodotto(A,B)

dichiara delle variabili locali Ct e Ci che saranno restituite al successivo comando, chiamate
rispettivamente come X e Y. L’esecuzione di una funzione, proprio perché richiede dei parame-
tri di input e di output, provocherà un errore se avverrà direttamente dall’ambiente di editor;
pertanto è necessario utilizzare la finestra dei comandi per impartire il seguente comando:
[X,Y] = funzione_prodotto(A,B)

Octave
Finestra dei comandi
>> [X,Y] = funzione_prodotto(A,B)
X=

5 4 2
15 16 11
19 22 15
Y=

0.090909 0.727273 −1.181818


0.727273 −1.681818 1.545455
−0.545455 1.136364 −0.909091

Dopo l’esecuzione della function, lo spazio di lavoro conterrà le variabili globali A,B,X,Y e non
quelle dichiarate all’interno della funzione.

Salvare lo spazio di lavoro


Quando l’ambiente di lavoro di Octave viene chiuso, l’area di memoria occupata dal suo spazio
di lavoro (workspace) viene liberata, con la conseguente cancellazione delle variabili contenu-
te al suo interno. Il comando save consente di salvare una o più variabili o tutto il workspace
all’interno di un file di testo, che può essere successivamente utilizzato per ricreare lo spazio
di lavoro.
Il comando:
save dati.dat

salva l’intero workspace nel file dati.dat, che si presenta nel modo seguente:

# Created by Octave, Fri Dec 16 21:48:15 2016


# name: A
# type: matrix
# rows: 2
# columns: 2
1 3
4 2
# name: B

Algebra vettoriale e matriciale in Octave A3 61


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

# type: matrix
# rows: 2
# columns: 2
2 0
1 3
# name: ans
# type: scalar
52

Il comando:
save matrici.dat A B

conserva invece nel file matrici.dat solo le variabili elencate di seguito al nome del file, in
questo caso le matrici A e B.
Si può usare qualsiasi estensione per questi file ed è buona norma distinguerli dai file.m.
All’avvio dell’ambiente Octave, può essere ricaricato il workspace precedentemente salvato
con il comando load:
load dati.dat

5 Le strutture di controllo
Come in tutti i linguaggi di programmazione, anche in Octave esistono delle strutture di con-
trollo che consentono sviluppi algoritmici dei problemi; nello specifico le strutture sono cinque:
• il comando di selezione if;
• il comando di selezione multipla switch;
• il ciclo for;
• il ciclo while;
• il ciclo do-until. if (espressione logica)
istruzione1;
■ Il comando if calcola un’espressione lo- istruzione2;
gica ed esegue una serie di operazioni
……
quando questa espressione è vera; la sua
end
sintassi è quella illustrata qui a fianco.
Le opzioni elseif ed else permettono di eseguire diversi gruppi di istruzioni soggette a di-
verse condizioni; la sintassi in questo caso è:

Sintassi Esempio
if (espressione logica 1) if(a > 2)
istruzioni; x = sqrt(a);
elseif (espressione logica 2) elseif(a == 0)
istruzioni; x = 0;
… else
else x = 'argomento minore di zero';
istruzioni; end
end

62 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Il comando switch esegue un gruppo di istruzioni basate sul valore di una variabile o di
un’espressione. Le parole chiave case e otherwise delimitano i gruppi di istruzioni e sol-
tanto un caso viene eseguito; la sintassi è:

Sintassi Esempio
switch (espressione logica) switch (a)
case 0 case 0
istruzioni; x = 'zero';
case 1 case 1
istruzioni; x = 'uno';
case 2 case 2
istruzioni; x = 'due';
otherwise otherwise
istruzioni; x = 'fuori limite';
end end

Il comando switch valuta il contenuto della variabile a ed esegue il case relativo (se a==2,
esegue soltanto le istruzioni contenute nel blocco case 2).
■ Il ciclo for ripete un gruppo di istruzioni per un determinato numero di volte; la sintassi è:

Sintassi Esempio
for k = n:m for n = 0:10
istruzioni; x(n+1) = sin(pi*n/10);
end end

I comandi che si trovano tra “for” ed “end” sono eseguiti per tutti i valori di k compresi
nell’intervallo n:m; l’esempio crea un vettore con i valori della funzione sin(x) in undici
punti equispaziati da 0 a 10 (pi è una costante inizializzata a π).
■ Il ciclo while è usato quando le istruzioni devono essere ripetute fino a quando rimane
vera l’espressione logica; la sintassi è data da:

Sintassi Esempio
while (espressione logica) a = [2,5,3,7,8,1];
istruzioni; x = 1; somma = 0;
end [r c] = size(a);
while(x < = c)
somma = somma + a(x);
x = x+1;
end
somma

L’esempio precedente produce somma = 26.

Algebra vettoriale e matriciale in Octave A3 63


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’esempio seguente effettua la somma degli elementi di un vettore.


Il linguaggio consente, inoltre, di creare dei cicli annidati; supponiamo di voler creare un
nuovo vettore x, i cui elementi sono il fattoriale degli elementi corrispondenti di un vettore
a iniziale.

Esempio Descrizione
a = [3,5,3,7,8,1]; Vettore iniziale
x = zeros(1,6); Vettore risultato inizialmente con valori 0
s = 1;
[r c] = size(a); Dimensioni del vettore
while(s < = c) Itera per tutti gli elementi di a
fatt = 1;
i = 1;
while(i < = a(1,s)) Itera per il fattoriale di ogni elemento
fatt = fatt*i;
i = i+1;
end
x(1,s) = fatt; Inserisce nel vettore x il fattoriale
s = s+1;
end
x Visualizza x

■ Il ciclo do-until viene usato nel caso in cui le istruzioni debbano essere ripetute fino a
quando rimane falsa l’espressione logica; la sintassi è data da:

Sintassi Esempio
x = 0;
do do
istruzioni; x = x+1;
until (espressione logica) until (x > = 10)

L’esempio visualizzerà tutti gli elementi di x da 1 a 10 e terminerà quando la condizione


(x > = 10) risulterà vera. Nel linguaggio implementato da Octave, le parentesi tonde per
racchiudere le espressioni logiche possono essere omesse ma, per una maggiore leggibilità
e comprensione del codice, è consigliabile inserirle sempre.

64 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
1. Determiniamo la precisione di macchina.
L’algoritmo in C++ è stato già realizzato nell’unità relativa alla teoria dell’errore; qui ne riproponiamo una versione
implementabile direttamente in Octave:

% function [i,e] = precisione


% OUTPUT
% i = numero di cifre della mantissa
% e = precisione di macchina

function [i,e] = precisione


e = 1;
i = 0;
while(e+1 > 1)
e = e/2;
i = i+1;
end
i = i−1; Octave – Finestra dei comandi
e = 2*e; >> [cifre,pre] = precisione
cifre = 52
Ricordiamo che il file va salvato nel file precisione.m e la chiamata alla fun-
zione avviene attraverso la sintassi illustrata qui a destra. pre = 2.22044e−016

2. Calcoliamo il valore del polinomio attraverso lo schema naturale:


p(x) = anxn + an−1xn−1 + … + a1x + a0

% function val = pol(a,x0)


% INPUT
% a: vettore dei coefficienti
% x0: il punto in cui si vuole calcolare il valore del polinomio
% OUTPUT
% val: conterrà il valore del polinomio
% Es. 3x^3 + 6x^2 + 5x + 4 a=4563
function val = pol(a,x0)
n = length(a);
val = a(1); % se il polinomio è costante il valore sarà il 1 coeff
x = 1;
for ind = 2:n
x = x*x0; Octave – Finestra dei comandi
val = val + x*a(ind); >> a = [4 5 6 3];
end
>> risultato = pol(a,2)

Una possibile esecuzione dell’algoritmo è mostrata a destra. risultato = 62

Algebra vettoriale e matriciale in Octave A3 65


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

3. Calcoliamo il valore del polinomio attraverso il metodo di Horner.


% function val = horner(a,x0)
% INPUT:
% a vettore dei coefficienti Notare il vettore
% x0 è il punto in cui si vuole calcolare il valore del polinomio dei coefficienti a;
% OUTPUT a differenza dello
schema naturale,
% val conterrà il valore del polinomio l’ordine degli
% Es. ((3x + 6)x + 5)x + 4 a=3654 elementi è invertito.

function val = horner(a,x0)


n = length(a);
val = a(1); % se il polinomio è costante il valore sarà il 1 coeff
for ind = 2:n
val = x0*val + a(ind);
end

4. Calcoliamo la norma1 di una matrice.


% Calcola la norma1 di una matrice A
% n1 = massimo della somma degli elementi di ogni singola colonna
% function n1 = norma1(A)
% Elenco variabili di input
% A:matrice di cui calcolare la norma1
% Elenco variabili di output
% n1:norma1 della matrice A
function n1 = norma1(A)
% si calcolano le dimensioni della matrice
[n,m] = size(A);
somma = 0;
% si calcola la somma dei valori assoluti degli elementi delle colonne
for j = 1:m
newsomma = 0; Octave – Finestra dei comandi
for i = 1:n >> M = [1 3 4;2 1 5;6 5 8]
newsomma = newsomma + abs(A(i,j)); M=
end
1 3 4
% se la nuova somma è maggiore della somma degli elementi
2 1 5
della colonna precedente
6 5 8
% allora si assume questo valore come norma1 della matrice
if newsomma > somma >> ris = norma1(M)
somma = newsomma; ris = 17
end >> norm(M,1)
end ans = 17
n1 = somma;

A destra è mostrata l’esecuzione della funzione norma1(M); come riscontro, è stata calcolata la norma1 con la fun-
zione predefinita norm(M,1) messa a disposizione da Octave.

66 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

5. Calcoliamo la norma infinito di una matrice.


% Calcola la norma infinito di una matrice A
% dove la norma infinito è pari a
% ninf = massimo della somma degli elementi di ogni singola riga
% function: ninf = normainf(A)
% Elenco variabili di input Octave
% A:matrice di cui calcolare la norma infinito Finestra dei comandi
% Elenco variabili di output >> M
% ninf:norma inf della matrice A M=

function ninf = normainf(A) 1 3 4


% si calcolano le dimensioni della matrice 2 1 5
[n,m] = size(A); 6 5 8
somma = 0; >> r = normainf(M)
% si calcola la somma dei valori assoluti degli elementi delle righe
r = 19
for i = 1:n
>> norm(M,inf)
newsomma = 0;
for j = 1:m ans = 19
newsomma = newsomma + abs(A(i,j));
end
% se la nuova somma è maggiore della somma degli elementi della riga precedente
% allora si assume questo valore come norma infinito della matrice
if newsomma > somma
somma = newsomma;
end
end
ninf = somma;

6. Calcoliamo la norma di Frobenius di una matrice.


% Calcola la norma di Frobenius di una matrice A
% dove la norma di Frobenius è pari a
% n = radice quadrata della somma di ogni elemento della matrice al quadrato
% Function: n = normafro(A)
% Elenco variabili di input
% A:matrice di cui calcolare la norma di Frobenius Octave
% Elenco variabili di output Finestra dei comandi
% n:norma di Frobenius della matrice A >> M
M=
function n = normafro(A)
1 3 4
% si calcolano le dimensioni della matrice
2 1 5
[n,m] = size(A);
6 5 8
somma = 0;
for j = 1:m >> r = normafro(M)
for i = 1:n r = 13.454
somma = somma + A(i,j)^2; >> norm(M,"fro")
end ans = 13.454
end
n = sqrt(somma);

Algebra vettoriale e matriciale in Octave A3 67


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

7. Calcoliamo la norma euclidea di un vettore.


% Calcola la norma euclidea di un vettore v
% dove la norma euclidea è pari alla radice quadrata del prodotto fra v e v trasposto
% Function: n = normaeuclide(v)
% Elenco variabili di input Octave
% v:vettore di cui calcolare la norma euclidea Finestra dei comandi
% Elenco variabili di output >> v = [1,2,3,4,5]
% n:norma euclidea del vettore v v=

function n = normaeuclide(v) 1 3 4 5
lun = length(v); >> n = normaeuclide(v)
somma = 0;
n = 7.4162
for i = 1:lun
somma = somma + v(1,i)*v(1,i); >> norm(v,2)
end ans = 7.4162
n = sqrt(somma);
La norma euclidea è anche definita come norma2, pertanto la figura riportata accanto illustra i risultati della norma
ottenuti con la funzione realizzata e con quella predefinita disponibile nel sistema.

8. Calcoliamo tutti i minori principali di testa di una matrice A ∈!n×n.


Ricordiamo che, data una matrice A ∈ !n×n, si dice minore principale di testa il determinante di una sottomatrice princi-
pale di testa e, cioè, di ogni sottomatrice i cui elementi diagonali coincidono in posizione con gli elementi diagonali di A.
% function [a] = minori(A)
% Elenco variabili di input
% A: matrice di dimensione n x n
% Elenco variabili di output Octave
% a: vettore dei minori Finestra dei comandi
>> M
function [a] = minori(A) M=
% Controllo sulla dimensione della matrice di input
1 3 4
[m,n] = size(A);
if (m ∼ = n) 2 1 5
error('La matrice di input deve essere quadrata'); 6 5 8
return; >> [x] = minori(M)
end x=

% calcolo dei minori principali di testa 1.0000 −5.0000 41.0000


for i = 1:n
minoreprinc = A(1:i,1:i);
a(1,i) = det(minoreprinc);
end
L’algoritmo prevede di restituire un vettore contenente tutti i minori principali di testa, la funzione error restituisce a
video il messaggio di errore contenuto al suo interno.

ORA TOCCA A TE
■ Implementa una funzione che calcoli il determinante di una matrice utilizzando la regola di Laplace.

68 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME A3
ALGEBRA VETTORIALE E MATRICIALE
IN OCTAVE AUDIO

Octave memorizza gli elementi scalari in variabili di tipo


Octave è un ambiente progettato per il double espressi in 64 bit con doppia precisione.
calcolo numerico, in cui le operazioni tra Per eseguire confronti, Octave utilizza i normali
matrici si riducono a operazioni tra variabili. operatori relazionali e logici.
GNU Octave è un software libero, incluso nelle Un operatore molto importante in Octave
principali distribuzioni GNU/Linux. Costituisce è l’operatore “ : ”.
una valida alternativa al più noto MATLAB
Octave come linguaggio di
(software proprietario), con il quale ha un livello
programmazione
di compatibilità molto elevato.
Octave può essere usato come un linguaggio
Calcolo matriciale di programmazione, simile al C o al Fortran.
Il principale punto di forza di Octave è il calcolo Un programma è una sequenza di comandi
matriciale. Con Octave si possono effettuare e può essere di due tipi: script o function.
operazioni tra matrici, anche complesse, I comandi all’interno di uno script sono eseguiti
semplicemente utilizzando gli operatori sequenzialmente, come se fossero scritti nella
matematici. Gli elementi delle espressioni finestra dei comandi. Anche una function è una
calcolabili con Octave possono essere sequenza di istruzioni, ma – a differenza di uno
indifferentemente numeri, vettori o matrici. script – accetta dei parametri in ingresso.
Oltre agli operatori di base, Octave mette Chiudendo l’ambiente di lavoro di Octave, l’area di
a disposizione tutta una serie di funzioni tipiche memoria occupata dal suo spazio di lavoro viene
delle matrici. liberata. Per salvare una o più variabili o l’intero
spazio di lavoro, bisogna operarne il salvataggio
Variabili e operatori all’interno di un file di testo.
La matrice è l’unità fondamentale di Octave.
Una variabile è una regione di memoria che Le strutture di controllo
contiene i dati della matrice. Octave è un Come in tutti i linguaggi di programmazione,
linguaggio a tipizzazione debole, per cui il anche Octave dispone di strutture di controllo,
tipo di una variabile è determinato dal tipo dei che consentono sviluppi algoritmici dei problemi.
valori assegnati. Il linguaggio utilizzato da Octave Le strutture di controllo sono cinque: il comando
è molto simile al linguaggio C ed è anch’esso di selezione if, il comando di selezione multipla
un linguaggio case sensitive. Il linguaggio switch, il ciclo for, il ciclo while, il ciclo do-until.

Algebra vettoriale e matriciale in Octave A3 69


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME A3
MAPPA
MODIFICABILE
OCTAVE

il suo punto
è un è anche
di forza è

software
libero

progettato per

calcolo
numerico

valida
alternativa a

MATLAB

che è

software
proprietario

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Che cos’è Octave?
2) Per che tipo di calcolo matematico è progettato Octave?
3) Octave è l’alternativa free di quale software proprietario?
4) Qual è il punto di forza di Octave?
5) Quale tipo di entità matematica tratta Octave?
6) Di quali operatori e funzioni dispone Octave?
7) Oltre che un ambiente per eseguire il calcolo matriciale, che cos’altro è Octave?
8) Quali due tipi di programmi può scrivere Octave?
9) Di quali strutture di controllo dispone Octave come linguaggio di programmazione?

70 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE A3
1. • ESERCIZIO SVOLTO Determina il volume di una sfera di diametro pari a 30 cm. Inoltre, ricava il nuovo
volume se il diametro aumenta del 20%. Di quanto è aumentato il volume in totale?
E in percentuale rispetto al caso con diametro 30 cm?

Svolgiamo insieme l’esercizio


% file di tipo script per la risoluzione dell’esercizio.
d1 = 30; % diametro
V1 = 4/3*(3.14)*(d1/2)3 % volume = 4/3*PiGreco*(raggio)3
% aumentiamo il diametro del 20%
d2 = d1 + (d1*20)/100;
% calcoliamo il nuovo volume
V2 = 4/3*(3.14)*(d2/2)3
% facendo la differenza tra V2 e V1 troviamo di quanto è aumentato il secondo volume.
DV = V2−V1
% in percentuale
Aumento = (DV*100)/V1

Octave
Finestra dei comandi
>> Esercizio 1
V1 = 14130
V2 = 24416.64000
DV = 10286.64000
Aumento = 72.800

2. • Determina le radici dell’equazione di secondo 5. • Data la seguente tabella, rispondi


grado ax2 + bx + c inserendo i coefficienti a, alle domande.
b, c all’interno di un vettore. Verifica, inoltre,
l’esistenza di una funzione predefinita per la op1 op2 op3 op4 op5
soluzione dello stesso problema.
Paga oraria 5 5,50 6,50 6 6,25
3. • Crea delle matrici per rappresentare le Ore settimanali 40 43 37 50 45
bandiere di Italia e Germania, in cui a ogni colore
è associato un numero. Realizzale attraverso Pezzi prodotti 1000 1100 1000 1200 1100
delle sottomatrici. (Suggerimento: rappresenta
• Quanto guadagna ogni operaio?
il bianco con lo zero).
• Qual è il salario totale di tutti gli operai?
• Quanti pezzi vengono prodotti?
4. • Abbiamo un portfolio con le azioni di tre • Qual è il costo medio di un pezzo?
società. Possediamo rispettivamente 100, 20
• Quante ore occorrono in media per un pezzo?
e 50 azioni. Crea un vettore colonna:
• Qual è l’operaio più efficiente?
• vendiamo 50 azioni della prima società e ne
compriamo 100 della seconda
• i prezzi delle azioni sono rispettivamente 150, 400
e 200 euro; calcola il valore totale del portfolio.

Algebra vettoriale e matriciale in Octave A3 71


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

6. • Disegna la Tavola pitagorica. 9. •• Scrivi una funzione che prenda in ingresso


un voto in centesimi e lo converta in una parola,
7. • Progetta una funzione che, preso in ingresso secondo la seguente tabella:
il valore di un anno (es.: 1492, 2003, …), • da 90 in su OTTIMO
stabilisca se l’anno è bisestile o no: mostri • da 80 a 89 BUONO
a video un messaggio che dia in uscita 1 (se • da 70 a 79 DISCRETO
bisestile) o 0 (altrimenti). Un anno è bisestile se • da 60 a 69 SUFFICIENTE
è divisibile per 4 e, qualora sia l’anno d’inizio di • sotto 60 INSUFFICIENTE
un secolo, solo se è divisibile per 400 (es.: 1900
non bisestile, 2000 bisestile, 1984 bisestile). 10. •• Realizza una funzione che prenda in ingresso
un intero pari a N, ricavi e stampi a video tutte
8. •• Scrivi uno script che richieda in input le terne pitagoriche con i cateti minori o uguali a
una data (giorno, mese, anno), calcoli la data N. Una terna pitagorica è formata da tre numeri
successiva e la visualizzi. Per verificare se un naturali (a, b, c) tali che a2 + b2 = c2. Esempio: 3,
anno sia bisestile o meno, utilizza la funzione 4, 5 (9 + 16 = 25). N.B. Calcola solo le terne in
definita nell’esercizio precedente. cui a < b.

Esercizi sui vettori


11. • ESERCIZIO SVOLTO Dato un vettore, estrapola due vettori contenenti, rispettivamente, gli elementi
di indici pari e dispari del vettore di partenza.

Svolgiamo insieme l’esercizio


File function vett.m
% file di tipo function
[v p, v d] = vett(v)
% INPUT: v = vettore di partenza
% OUTPUT: v_p = vettore di elementi di indici pari
% v_d = vettore di elementi di indici dispari

% calcoliamo la lunghezza del vettore


l = length(v);
% se l è pari avremo due vettori della stessa lunghezza se invece è dispari avremo v_d più grande di v_p

if(mod(l,2) == 0)
% se il resto della divisione tra l è 2 e 0 allora è pari
v_d = zeros((l/2),1)';
v_p = zeros((l/2),1)';
else
v_d = zeros((l/2+1/2),1)';
v_p = zeros((l/2−1/2),1)';
end
% abbiamo così costruito dei vettori di zeri, adesso inseriamo gli elementi tramite un ciclo for
for(i = 1:l)
if(mod(i,2) == 0)
v_p(1,i/2) = v(1,i);

72 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

else
j = i/2+1/2;
v_d(1,j) = v(1,i);
end
end

12. • Realizza la funzione Tempo2secondi che, 15. •• Scrivi una funzione che prenda in ingresso
preso in ingresso un vettore di tre elementi, che un vettore e un valore di soglia (scalare).
rappresentano, rispettivamente, il numero di ore, La funzione copi tutti gli elementi del vettore
di minuti e di secondi, calcoli il numero totale in altri due vettori, separando elementi sopra
di secondi e lo dia in output. la soglia e sotto la soglia. I due vettori sono
l’output della funzione.
13. • Realizza la funzione Secondi2tempo che, ESEMPIO
preso in ingresso il numero totale di secondi, vettore = [2 7 4 1 8 8 9]; soglia = 5;
crei il vettore contenente ore, minuti e secondi in uscita si avrà: sopra = [7 8 8 9]
e lo dia in output. sotto = [2 4 1]
14. • Creare le funzioni DistanzaEuclidea e 16. •• Dato un vettore b, determina il numero delle
DistanzaManhattan che prendano in ingresso sue componenti negative, delle sue componenti
due vettori (lunghi a piacere) e ne calcolino positive, di quelle nulle.
la distanza nei due modi diversi.
17. •• Dato un vettore b, determina la posizione
dmanh = a1 − b1 + a2 − b2 +É della sua massima componente.
2 2
deuclidea = (a1 − b1 ) + (a2 − b2 ) +É 18. •• Dati due vettori a e b, verifica che abbiano
la stessa lunghezza. Successivamente, determina
il numero delle componenti di a maggiori delle
corrispondenti componenti di b.
Esercizi sulle matrici
19. • Determina autovalori e autovettori della seguente matrice:
⎡ 1 0 1 ⎤
⎢ ⎥
A = ⎢ −1 0 1 ⎥
⎢ ⎥
⎢ 1 1 2 ⎥
⎣ ⎦

20. • ESERCIZIO SVOLTO Data una matrice quadrata M, determina una nuova matrice uguale a M
ma con gli elementi sulla diagonale principale di valore raddoppiato rispetto a quelli della matrice M.

Svolgimento guidato ORA TOCCA A TE (pag. 55)


File script Calcolo_Matrice.m
% file di tipo script per determinare una nuova matrice uguale a M ma con gli elementi sulla diagonale
principale di valore raddoppiato rispetto a quelli della matrice M
% definiamo una matrice M quadrata
M = [1,4,2,2;3,2,4,1;1,5,6,1;2,7,4,8];
% tramite il comando diag(diag(M)) costruiamo una matrice diagonale D avente la stessa diagonale di M
D = diag(diag(M));
% costruiamo la matrice finale A sommando M e D
A = M+D

Algebra vettoriale e matriciale in Octave A3 73


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Nella finestra di comando di Octave avremo


Octave
Finestra dei comandi
⎡ 2 4 2 2 ⎥⎤

⎢ 3 4 4 1 ⎥⎥
A= ⎢
⎢ 1 5 12 1 ⎥
⎢ ⎥
⎢⎣ 2 7 4 16 ⎥⎦

Function per il calcolo del determinante con la regola di Sarrus.


File function det_Sarrus
function [d] = det_Sarrus(A)
% file di tipo function per il calcolo del determinante di una matrice quadrata di ordine 3
% INPUT: A = matrice quadrata di ordine 3
% OUTPUT: d = determinante della matrice A
% per applicare la regola di Sarrus cominciamo definendo una matrice ausiliare
B definita come A con l’aggiunta delle prime due colonne di A a destra
B = zeros(3,5);
B(1:3,1:3) = A;
B(1:3,4:5) = A(1:3,1:2);
% adesso eseguiamo il prodotto degli elementi delle tre diagonali principali
d1 = B(1,1)*B(2,2)*B(3,3);
d2 = B(1,2)*B(2,3)*B(3,4);
d3 = B(1,3)*B(2,4)*B(3,5);
% sommiamo tutti i valori ottenuti
s1 = d1+d2+d3;
% eseguiamo lo stesso procedimeno rispetto le tre diagonali secondarie
d4 = B(1,3)*B(2,2)*B(3,1);
d5 = B(1,4)*B(2,3)*B(3,2);
d6 = B(1,5)*B(2,4)*B(3,3);
s2 = d4+d5+d6;
% determiniamo il determinante calcolando s1−s2
d = s1−s2;

21. • Poni in ordine crescente gli elementi di una 22. • Data una matrice A, verifica che essa
matrice qualsiasi quadrata. sia quadrata e restituisci i determinanti
Proponi le due soluzioni per l’ordinamento sulle delle sue sottomatrici principali di testa.
righe e sulle colonne.

74 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

23. • ESERCIZIO SVOLTO Data una matrice reale A, fornisci di essa il numero di elementi positivi, negativi
e nulli.

Svolgiamo insieme l’esercizio


File function matrix.m
function [p,z,n] = matrix(A)
% INPUT: A matrice reale
% OUTPUT: p = numero di valori positivi, z = numero di zeri, n = numero di valori negativi
% inizializziamo le variabili a zero
p = 0;
n = 0;
z = 0;
[r,c] = size(A);
% r numero di righe e c numero di colonne della matrice
% costruiamo due cicli for concatenati per analizzare tutti gli elementi della matrice
for i = 1:r
for j = 1:c
if(A(i,j) > 0)
p = p+1;
elseif(A(i,j) == 0)
z = z+1;
else
n = n+1;
end
end
end

24. • Data una matrice A, se ne moltiplichino 28. •• Considera la matrice A formata da n = 4 righe
gli elementi positivi per 100 e se ne dividano e m = 6 colonne.
per due gli elementi negativi.
⎡ 1 2 3 4 5 6 ⎤⎥

⎢ 5 6 7 8 9 10 ⎥⎥
25. • Dati un vettore b e una matrice A, verifica se A= ⎢
almeno un elemento di b è anche elemento di A. ⎢ 9 10 11 12 13 14 ⎥
⎢ ⎥
⎢⎣ 15 16 17 18 19 20 ⎥⎦
26. • Dati un vettore b e una matrice A, verifica se
tutti gli elementi di b sono anche elementi di A. • Costruisci la matrice B formata dalle colonne
di A disposte in ordine inverso (ossia, la 1°
27. •• Data una matrice A = (aij), individua colonna di B è la 6° di A, la 2° di B è la 5° di A,
le posizioni (riga e colonna) del massimo e così via).
elemento e del minimo elemento di A. • Costruisci la matrice B formata dalle sole
colonne pari di A.
• Costruisci la matrice B formata dalle sole righe
dispari di A.
• Costruisci la matrice B formata dalle righe 1, 4,
3 e dalle colonne 5, 2.
• Costruisci il vettore v formato dagli elementi
diagonali akk con k = 1, …, n.

Algebra vettoriale e matriciale in Octave A3 75


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

29. •• Esamina e descrivi l’effetto del seguente 30. ••• Dati i tre punti
codice Octave: A = (−1, 0, 2), B = (−2, 1, 3), C = (0, 1, 0)
calcola:
A >> for x = 3 : 7 : 25, x, end !!!" !!!"
• i vettori AB e AC ;
B >> x = 3, while x < 25, x = x + 7, end % confrontare
• la distanza fra i punti !A!!"e B;!!!"
con (a)
• il prodotto scalare di AB e AC ;
C >> m = magic(5) % quadrato magico • l’angolo BAC in gradi e in radianti.
>> r2 = m(2, :), somma = sum(r2) % seconda riga
>> c3 = m( :, 3), somma = sum(c3) % terza
colonna
>> d = diag(m), somma = sum(d) % diagonale
principale
>> ad = diag(m( :,[5 4 3 2 1]), somma = sum(ad)
% antidiagonale
>> d 1 4 = diag([m,m],4), sum(d 1 4) % 1a sotto e
4a sovra diagonale
D >> perms([1 2 3]) % permutazioni

76 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

A4 Applicazioni scientifiche
in Octave, in Excel e in C++
FILE SORGENTI
Codici in Octave
File Excel

LABORATORIO CASE STUDY


Analisi delle immatricolazioni
in Università
IMPARERAI…

A servirti di alcuni algoritmi per la soluzione A utilizzare alcuni metodi di interpolazione


dei sistemi lineari e di approssimazione dei dati

1 Risoluzione di sistemi lineari:


metodo di Cramer
Consideriamo un sistema di n equazioni in n incognite:
⎧⎪ a x +a x +a x +...+a x = b
⎪⎪ 11 1 12 2 13 3 1n n 1
⎪⎪ a x +a x +a x +...+a x = b
⎪⎨ 21 1 22 2 23 3 2n n 2

⎪⎪ É
⎪⎪
⎪⎪ an1 x1 +an 2 x 2 +an 3 x 3 +...+ann x n = bn

Possiamo rappresentarlo in notazione matriciale con la seguente formula:
Ax = b
Dove
⎡ a a a13 É a1n ⎤⎥ ⎡ x1 ⎤⎥ ⎡ b1 ⎤⎥
⎢ 11 12 ⎢ ⎢
⎢ a a a23 É a2n ⎥⎥ ⎢ x 2 ⎥⎥ ⎢ b2 ⎥⎥
⎢ 21 22 ⎢ ⎢
A=⎢ ⎥ x = ⎢ ⎥ b = ⎢ ⎥
⎢ É ⎥ ⎢ É ⎥ ⎢ É ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ an1 an 2 an 3 É ann ⎥ ⎢ xn ⎥ ⎢ bn ⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦
Per esempio, il seguente sistema:
⎧⎪ 5x1 −2x 2 +1x 3 = 5
⎪⎪
⎨ 2x1 + x 2 −2x 3 =−1
⎪⎪
⎪⎪⎩ −x1 +3x 3 = 7
in notazione matriciale viene considerato come:
⎡ 5 −2 1 ⎤ ⎡ 5 ⎤ ⎡ 5 −2 1 ⎤ ⎡ 5 ⎤
⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
A=⎢ 2 1 −2 ⎥ b = ⎢ −1 ⎥ → ⎢ 2 1 −2 ⎥ x = ⎢ −1 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ −1 0 3 ⎥⎦ ⎢⎣ 7 ⎥⎦ ⎢⎣ −1 0 3 ⎥⎦ ⎢⎣ 7 ⎥⎦

Applicazioni scientifiche in Octave, in Excel e in C++ A4 77


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

in cui A è la matrice dei coefficienti, x il vettore delle incognite e b il vettore dei termini noti.
Il sistema ammette una e una sola soluzione se e solo se la matrice dei coefficienti A ha il deter-
minante diverso da zero. Quindi la soluzione del problema può essere calcolata con la regola di
Cramer, che permette di individuare gli elementi del vettore x tramite la formula:
det( Ai )
xi = i =1Én
det( A)
La i-esima componente del vettore x si trova dividendo il determinante della matrice Ai , ot-
tenuta sostituendo la i-esima colonna di A con il vettore b, per il determinante di A. Infatti
nell’esempio avremo
⎡ 5 −2 1 ⎤ ⎡ 5 5 1 ⎤⎥ ⎡ 5 −2 5 ⎤
⎢ ⎥ ⎢ ⎢ ⎥
A1 = ⎢ −1 1 −2 ⎥ A2 = ⎢ 2 −1 −2 ⎥ A3 = ⎢ 2 1 −1 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣ 7 0 3 ⎥⎦ ⎢⎣ −1 7 3 ⎥⎦ ⎢⎣ −1 0 7 ⎥⎦
Le soluzioni del sistema sono pertanto date dai seguenti rapporti:
det(A1 ) 30 det( A2 ) 48 det( A3 ) 66
x1 = = =1,25 x 2 = = = 2 x3 = = = 2,75
det(A) 24 det( A) 24 det( A) 24

L’implementazione in Octave
Riportiamo ora l’algoritmo per la soluzione del sistema con la regola di Cramer da implemen-
tare in Octave.

% function x = cramer(A, b)
% Soluzione con cramer del sistema Ax = b.
% La matrice deve essere quadrata e invertibile
% INPUT:
% A,b:dati iniziali del sistema lineare Ax = b
% OUTPUT
% x:vettore soluzioni

function x = cramer(A, b)
[m, n] = size(A);
if m ∼ = n
error('Matrice non quadrata.')
end
if det(A) == 0
error('Matrice singolare.')
end
for j = 1:n
B = A;
B(:, j) = b;
x(j) = det(B)/det(A);
end
x = x';

78 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

All’interno del ciclo for è posto il blocco di istruzioni da iterare (3 volte nel nostro caso). A ogni
iterazione viene creata una matrice B inizializzata, a ogni passaggio, ad A e l’istruzione succes-
siva B(:, j) = b; consente di modificare B inserendo nella colonna j di B il vettore b (l’operatore “:”
in questo caso indica tutte le righe della matrice).

Octave
Finestra dei comandi
>> A = [5 −2 1;2 1 −2;−1 0 3] >> b = [5 −1 7] >> x = cramer(A,b)

A= b= x=

5 −2 1 1.2500
2 1 −2 5 −1 7 2.0000
−1 0 3 2.7500

L’implementazione in Excel
Excel prevede, all’interno della categoria “Matema-
tica e trigonometria”, delle formule per la gestione In Excel è possibile visualizzare
contemporaneamente tutte le formule
delle matrici; in questo caso la funzione MATR.DE- inserite all’interno del foglio di lavoro: basta
TERM è quella che fa al caso nostro, consentendoci andare nelle opzioni → Impostazioni
di calcolare il determinante della matrice. avanzate e nella sezione relativa a Opzioni
di visualizzazione per il foglio di lavoro e
Riportiamo il foglio Excel con i risultati dei calcoli
inserire la spunta in corrispondenza della
prima e con le formule esplicitate subito dopo. voce Visualizza formule nelle celle anziché
i risultati calcolati.

Applicazioni scientifiche in Octave, in Excel e in C++ A4 79


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per determinare le soluzioni del sistema dobbiamo calcolare n + 1 determinanti; possiamo de-
durre che il numero di operazioni necessarie per il calcolo del determinante di una matrice
n × n è dell’ordine di n!, pertanto per sistemi con un numero di equazioni (e quindi di incognite)
elevato tale metodo risulta poco veloce.

L’implementazione in C++
Riportiamo l’algoritmo del metodo di Cramer anche in C++ utilizzando come soluzione per il
calcolo del determinante la funzione realizzata attraverso il metodo di Laplace vista in prece-
denza.

C++
#include <iostream>
using namespace std;
#define MAX 25
int det(int A[MAX][MAX], int); //Prototipo
int main()
{
int A[MAX][MAX], B[MAX][MAX], b[MAX], c;
float x[MAX];
cout << "Ordine della matrice: ";
cin >> c;
//Genera matrice e vettore
for (int i = 0; i < c; i++)
{
cout << "Riga " << i << ": ";
for (int j = 0; j < c; j++) cin >> A[i][j];

80 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

cout << "b["<< i <<"]=";


cin >> b[i];
}
//metodo di Cramer
for (int j = 0; j < c; j++)
{
// copia matrice A in B
for (int i = 0; i < c; i++)
for (int k = 0; k < c; k++)
B[i][k] = A[i][k];
//Copia nella colonna j-esima il vettore b
for (int k = 0; k < c; k++)
B[k][j] = b[k];
x[j] = (float)det(B,c)/det(A,c);
}
cout << "Soluzioni x:"<< endl;
for (int i = 0; i < c; i++)
cout << x[i] << endl;
system("pause");
return 0;
}

2 Risoluzione di sistemi lineari:


i sistemi triangolari
Un sistema si definisce triangolare se la matrice ⎪⎧⎪ a11 x1 +a12 x 2 +a13 x 3 +...+a1n x n = b1
⎪⎪
A dei coefficienti è una matrice triangolare. ⎪⎪ +a22 x 2 +a23 x 3 +...+a2n x n = b2

⎪⎪ É
Nel caso di matrice triangolare superiore (vedi ⎪⎪
⎪⎪ ann x n = bn
a destra) la soluzione del sistema è agevole, in ⎩
quanto l’ultima equazione è facilmente risolvibile
(xn = bn/ann) e, di conseguenza, possono essere risolte
⎪⎧⎪ x = bn
man mano tutte le altre. ⎪⎪ n a
Per questo motivo il metodo prende il nome di me- ⎪ nn

todo di sostituzione all’indietro, poiché il vettore ⎪⎪ bi −Σnj=i+1aij x j
x viene calcolato partendo dall’ultima componente, ⎪⎪ x i = i = n−1,É,1
⎪⎪⎩ aij
come illustrato qui a fianco.

Applicazioni scientifiche in Octave, in Excel e in C++ A4 81


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’implementazione in Octave del metodo di sostituzione all’indietro

% ritorna il vettore x delle soluzioni di una matrice triangolare superiore Octave


% Metodo di sostituzione all’indietro Finestra dei comandi
% function [x] = trisup(A,b) >> A = [1 3 4;0 1 5;0 0 8]
% A = matrice dei coefficenti b = vettore termini noti A=

1 3 4
function [x] = trisup(A,b) 0 1 5
[rig,col] = size(A); 0 0 8
if or(rig ~ = col,size(b,1) ~ = rig)
fprintf('ERRORE:Dati in input non validi'); >> b = [4;2;1]
x = "; b=
return
4
end
2
if isequal(A,triu(A)) == 0 1
fprintf('ERRORE:Matrice non triangolare superiore\n');
x = "; >> x = trisup(A,b)
return x=
end
−0.62500
n = rig;
1.37500
if A(n,n) == 0 error('La funzione verrà interrotta per un denominatore = 0'); 0.12500
x =";return; end
x(n,1) = b(n)/A(n,n);

for i = n−1:−1:1
somma = 0;
for j = i+1:n
somma = somma+A(i,j)*x(j,1);
end
if A(i,i) == 0 error('La funzione verrà interrotta per un denominatore = 0');
x =";
return;
end
x(i,1) = (b(i)−somma)/A(i,i);
end

Anche nel caso di un sistema triangolare inferiore valgono le medesime considerazioni:


⎧⎪ a11 x1 = b1
⎪⎪
⎪⎪ a21 x1 +a22 x 2 = b2

⎪⎪ !
⎪⎪
⎪⎩ an1 x1 +an 2 x 2 +an 3 x 3 +É+ann x n = bn

82 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

In questo caso, la soluzione immediata è fornita dalla prima equazione (x1 = b1/a11) e da questa
a ogni passo possono essere calcolate tutte le altre soluzioni; per questo motivo il metodo è
denominato metodo di sostituzione in avanti, in quanto il vettore x viene calcolato partendo
dalla prima componente con la seguente formula:
⎪⎧⎪ x = b1
⎪⎪ 1 a
⎪ 11

⎪⎪ bi −Σi−1
j=1 aij x j
⎪⎪ i x = i = 2, ..., n
⎪⎪⎩ aij

L’implementazione in Octave del metodo di sostituzione in avanti

% ritorna il vettore x delle soluzioni di una matrice triangolare Octave


inferiore Finestra dei comandi
% Metodo di sostituzione in avanti >> A = [1 0 0;2 1 0;6 5 8]
% function [x] = triinf(A,b) A=
% A = matrice dei coefficenti b = vettore termini noti
1 0 0
2 1 0
function [x] = triinf(A,b)
6 5 8
[rig,col] = size(A);
if or(rig ~ = col,size(b,1) ~ = rig) >> b = [4;2;1]
fprintf('ERRORE:Dati in input non validi'); b=
x = ";
4
return
2
end
1
if isequal(A,tril(A)) == 0
fprintf('ERRORE:Matrice non triangolare inferiore'); x = ";
return >> x = triinf(A,b)

end x=

n = rig;
4.00000
if A(1,1) == 0 error('La funzione verrà interrotta a causa di un −6.00000
denominatore = 0'); x = ";return; end 0.87500
x(1,1) = b(1)/A(1,1);
for i = 2:n
somma = 0;
for j = 1:i−1
somma = somma+A(i,j)*x(j,1);
end
if A(i,i) == 0 error('La funzione verrà interrotta a causa di un denominatore = 0'); x = ";return; end
x(i,1) = (b(i)−somma)/A(i,i);
end

Applicazioni scientifiche in Octave, in Excel e in C++ A4 83


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’implementazione in Excel
Riportiamo ora un esempio in Excel di entrambi i metodi con dei semplici sistemi a tre incogni-
te; anche in questo caso visualizziamo sia le formule sia i risultati finali.

84 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’implementazione in C++
Proponiamo di seguito entrambi i listati in C++ per il metodo di sostituzione all’indietro e in
avanti. Per entrambi è stato definito un valore massimo della dimensione della matrice pari a
25(MAX); la dimensione reale viene chiesta all’inizio del programma e conservata all’interno
della variabile c.

C++
#include <iostream>
using namespace std;
#define MAX 25
//Prototipi
void carica_matrice(int m[MAX][MAX], int);
int main()
{
int m[MAX][MAX], c;
float x[MAX], b[MAX], somma;
cout << "Ordine della matrice: ";
cin >> c;
cout << "inserisci matrice TRIANGOLARE SUPERIORE" << endl;
carica_matrice(m, c);
// carica termini noti(vettore b)
for (int i = 0; i < c; i++)
{
cout << "Termine noto Riga " << i << ": ";
cin >> b[i];
}
if (m[c−1][c−1] == 0) cout << "Funzione interrotta a causa di un denominatore=0";
else
{
x[c−1] = (float)b[c−1]/m[c−1][c−1];
for (int i = c−2; i >= 0; i−−)
{
somma = 0;
for (int j = i+1; j < c; j++)
somma+ = m[i][j]*x[j];
x[i] = (b[i]−somma)/m[i][i];
}
// stampa soluzioni
for (int i = 0; i < c; i++)
{
cout << "x" << i << ": " << x[i] << endl;
}
}
system("pause");
return 0;

Applicazioni scientifiche in Octave, in Excel e in C++ A4 85


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

}
void carica_matrice(int m[MAX][MAX], int c)
{
//Genera matrice
cout << "inserisci gli elementi della matrice" << endl;
for (int i = 0; i < c; i++)
{
cout << "Riga " << i << ": ";
for (int j = 0; j < c; j++) cin >> m[i][j];
}
}

C++
#include <iostream>
using namespace std;
#define MAX 25
//Prototipi
void carica_matrice(int m[MAX][MAX], int);
int main()
{
int m[MAX][MAX], c,j;
float x[MAX], b[MAX], somma;
cout << "Ordine della matrice: ";
cin >> c;
cout << "inserisci matrice TRIANGOLARE INFERIORE" << endl;
carica_matrice(m, c);
// carica termini noti(vettore b)
for (int i = 0; i < c; i++)
{
cout << "Termine noto Riga " << i << ": ";
cin >> b[i];
}
if (m[0][0] == 0) cout << "Funzione interrotta a causa di un denominatore=0";
else
{
x[0] = (float)b[0]/m[0][0];
for (int i = 1; i < c; i++)
{
somma = 0;
for (j = 0; j <= i−1; j++)
somma+ = m[i][j]*x[j];
x[i] = (b[i]−somma)/m[i][i];
}
// stampa soluzioni
for (int i = 0; i < c; i++)

86 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

{
cout << "x" << i << ": " << x[i] << endl;
}
}
system("pause");
return 0;
}
void carica_matrice(int m[MAX][MAX], int c)
{
//Genera matrice
cout << "inserisci gli elementi della matrice" << endl;
for (int i = 0; i < c; i++)
{
cout << "Riga " << i << ": ";
for (int j = 0; j < c; j++) cin >> m[i][j];
}
}

3 Risoluzione di sistemi lineari:


metodo di eliminazione di Gauss
Il metodo di eliminazione di Gauss consente di calcolare le soluzioni del sistema Ax = b
partendo dal concetto di trasformare il sistema in uno equivalente più semplice da risolvere.
Due sistemi si dicono equivalenti quando hanno la stessa soluzione.

Nel paragrafo precedente abbiamo appurato che, nel caso di un sistema in cui la matrice A sia
una matrice triangolare, la soluzione risulta molto più agevole e veloce, pertanto l’obiettivo
che tale metodo si prefigge è quello di trasformare il sistema in modo tale da rappresentare la
matrice A come una matrice triangolare superiore.
La trasformazione in un sistema equivalente avviene mediante le seguenti operazioni elementari:
• scambiando la i-esima equazione con la j-esima;
• sostituendo la i-esima equazione con un suo multiplo (moltiplicando per uno scalare diver-
so da zero);
• sostituendo la j-esima equazione con una combinazione lineare di se stessa con la i-esima
equazione.
Per raggiungere l’obiettivo di realizzare un sistema triangolare dobbiamo procedere per passi;
ogni i-esimo passo contribuisce a modificare le equazioni dalla Ei+1 alla En , pertanto per otte-
nere il nuovo sistema triangolare occorrono n−1 passi. Consideriamo il seguente sistema di En
equazioni:
E1 ⎪⎧⎪ a11 x1 +a12 x 2 +a13 x 3 +É+a1n x n = b1

E2 ⎪⎪⎪ a21 x1 +a22 x 2 +a23 x 3 +É+a2n x n = b2

É ⎪⎪ É

En ⎪⎪ an1 x1 +an 2 x 2 +an 3 x 3 +É+ann x n = bn
⎪⎩

Applicazioni scientifiche in Octave, in Excel e in C++ A4 87


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il primo passo prevede di riscrivere le equazioni da E2 a En con lo scopo di eliminare tutti i ter-
mini ai1x1 dalla seconda equazione in poi lasciando intatta l’equazione E1.
Ogni equazione Ei (i = 2...n) verrà riscritta come combinazione lineare con E1 e, nello specifico,
come:
a
E1 −mi1 E1 dove mi1 = i1 per i =1Én e a11 ≠ 0
a11

⎧⎪
(1) ⎪⎪ (1) (1) (1) (1) (1)
⎪⎪ + + +É+ =
E1 ⎪⎪ a11 x1 a12 x 2 a13 x 3 a1n x n b1
⎪⎪
(2) ⎪⎪ (2) (2) (2) (2)
⎪⎪ + +É+ =
E2 ⎨ a22 x 2 a23 x 3 a2n x n b2
⎪⎪
É ⎪⎪ É
⎪⎪
(2) ⎪⎪ (2) (2) (2) (2)
⎪⎪ + +É+ =
En ⎪⎪ an 2 x 2 an 3 x 3 ann x n bn
⎪⎩

I numeri fra parentesi tonde, sopra i vari coefficienti, indicano che gli stessi sono stati ricalco-
lati al passo successivo, in questo caso al passo 2, pertanto sia i coefficienti sia i termini noti al
passo (2) sono stati calcolati tenendo in considerazione i termini del passo (1):
(2) (1) (1) (2) (1) (1)
e per i, j = 2, ..., n
aij = aij − mi1a1j bi = bi − mi1b1

Così facendo tutti i coefficienti e i termini noti dalla seconda equazione (E2) all’ultima (En) sono
stati ricalcolati e i coefficienti relativi a x1 sono stati eliminati.

OSSERVA COME SI FA
■ Supponiamo di dover risolvere il seguente sistema di quattro equazioni con quattro incognite:

⎧ 3x1
⎪ + 2x2 − 4x3 + x4 = 1



⎪ 12x1 − 2x2 − 1x3 + 3x4 = 3


⎪ 9x1 + 7x2 + 4x3 + x4 = −4


⎩−3x1

⎪ + 5x2 −10x3 + 6x4 = −2

Calcoliamo mi1 per tutte le equazioni:


a11 a21 a31 a41
m11 = =1 m21 = =4 m31 = =3 m41 = = −1
a11 a11 a11 a11

Al passo (1) avremo pertanto la seguente situazione (in blu sono rappresentati i valori che non verranno ricalcolati al
passaggio successivo):

88 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

(1)

mi1 x1 x2 x3 x4 b

1 3 2 −4 1 1

4 12 −2 −1 3 3

3 9 7 4 1 −4

−1 −3 5 −10 6 −2

Alla luce di questo, ricalcoliamo tutti i coefficienti e i termini noti dalla seconda equazione in poi:

(2) (1) (1)


a21 = a21 − a11 ⋅ m21 = 12 − 3 ⋅ 4 = 0

(2) (1) (1)


a22 = a22 − a12 ⋅ m21 = −2 − 2 ⋅ 4 = −10

(2) (1) (1)


a23 = a23 − a13 ⋅ m21 = −1 − (−4) ⋅ 4 = 15

(2) (1) (1)


a24 = a24 − a14 ⋅ m21 = 3 − 1 ⋅ 4 = −1

(2) (1) (1)


b2 = b2 − b1 ⋅ m21 = 3 − 1 ⋅ 4 = −1

(2)

x1 x2 x3 x4 b

3 2 −4 1 1

0 −10 15 −1 −1

0 1 16 −2 −7

0 7 −14 7 −1

Così facendo, tutti i coefficienti di x1 (tranne la prima equazione) sono divenuti nulli. A questo punto dobbiamo consi-
derare la seconda equazione e applicare lo stesso procedimento in modo da annullare, dalla terza equazione in poi,
tutti i coefficienti di x2.

Calcoliamo quindi mi2 dalla seconda equazione in poi:


a22 a32 a42
m22 = =1 m32 = = −0,1 m42 = = −0,7
a22 a22 a22

e i coefficienti e i termini noti con le seguenti formule:

(3) (2) (2) (3) (2) (2)


e per i, j = 3, ..., n
aij = aij − mi2a2j bi = bi − mi2b2

Applicazioni scientifiche in Octave, in Excel e in C++ A4 89


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

(2) (3)

mi2 x1 x2 x3 x4 b x1 x2 x3 x4 b

3 2 −4 1 1 3 2 −4 1 1

1 0 −10 15 −1 −1 0 −10 15 −1 −1

−0,1 0 1 16 −2 −7 0 0 17,5 −2,1 −7,1

−0,7 0 7 −14 7 −1 0 0 −3,5 6,3 −1,7

Così facendo, tutti i coefficienti di x2 (tranne la prima e la seconda equazione) sono diventati nulli. A questo punto
dobbiamo considerare la terza equazione e applicare lo stesso procedimento in modo da annullare, nella quarta e
ultima equazione, il coefficiente di x3.
Calcoliamo quindi mi3 dalla terza equazione in poi:
a33 a43
m33 = =1 m43 = = −0,2
a33 a33

e i coefficienti e i termini noti con le seguenti formule:

(4) (3) (3) (4) (3) (3)


e per i, j = 4, ..., n
aij = aij − mi3a3j bi = bi − mi3b3

(3) (4)

mi2 x1 x2 x3 x4 b x1 x2 x3 x4 b

3 2 −4 1 1 3 2 −4 1 1

0 −10 15 −1 −1 0 −10 15 −1 −1

1 0 0 17,5 −2,1 −7,1 0 0 17,5 −2,1 −7,1

−0,2 0 0 −3,5 6,3 −1,7 0 0 0 5,88 −3,12

A questo punto il processo di trasformazione del sistema è terminato e il risultato finale è un sistema equivalente
rispetto a quello di partenza:

⎪ 3x1 + 2x2 − 4x3 + ⎧
x4 =
⎪ 3x1 + 2x2 − 4x3 +
1 1x4 = 1

⎪ ⎪


⎪ 12x1 − 2x2 − 1x3 + 3x4 = 3 ⎪
⎪ − 10x2 + 15x3 − 1x4 = −1
⎨ ≡ ⎨
⎪⎪ 9x1 + 7x2 + 4x3 + x4 = −4 ⎪
⎪ 17,5x3 − 2,1x4 = −7,1
⎪⎪ ⎪

⎪⎪⎩ −3x1 + 5x2 − 10x3 + 6x4 = −2 ⎪

⎩ 5,88x4 =−3,12

ORA TOCCA A TE
■ Trasforma il seguente sistema in uno equivalente
in cui i coefficienti rappresentano una matrice
−2x1
3x1
+ 3x2 − x3 +
+ 5x2 − 3x3 +
4x4
2x4
=
=
−2
2
triangolare superiore. 6x1 + x2 + 3x3 − 5x4 = 1
4x1 + x3 + 2x4 = −1

90 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Prima di formalizzare il metodo di eliminazione di Gauss, controlliamo in Octave l’equivalen-


za dei due sistemi, verificando le soluzioni con l’algoritmo del metodo di Cramer analizzato in
precedenza:

Octave Octave
Finestra dei comandi Finestra dei comandi

M= S=

3 2 −4 1 3.00000 2.00000 −4.00000 1.00000


12 −2 −1 3 0.00000 −10.00000 15.00000 −1.00000
9 7 4 1 0.00000 0.00000 17.50000 −2.10000
−3 5 −10 6 0.00000 0.00000 0.00000 5.88000

>> b = [1;3;−4;−2] >> s = [1;−1;−7.1;−3.12]


b= b=

1 1.0000
3 −1.0000
−4 −7.1000
−2 −3.1200

>> cramer(M,b) >> cramer(S,s)


ans = ans =
0.25170 0.25170
−0.55102 −0.55102
−0.46939 −0.46939
−0.53061 −0.53061

Come si può notare, i differenti sistemi hanno prodotto gli stessi risultati, pertanto possiamo
affermare che i due sistemi sono equivalenti.
I coefficienti delle incognite del sistema equivalente sono, pertanto, rappresentati attraverso
una matrice triangolare superiore alla quale applicare agevolmente il metodo di sostituzione
all’indietro per un sistema triangolare visto in precedenza.
Formalizziamo ora il metodo di eliminazione di Gauss riportando le formule che permetto-
no di trasformare il sistema dal passo k al passo k+1 e cioè eliminando la variabile xk dalla
k + 1-esima equazione in poi.
(k)
Se akk ≠ 0 (gli elementi akk si dicono elementi pivotati del metodo)

allora è possibile calcolare i moltiplicatori:


(k)
a ik
mik = (k) per i = k +1,É,n
a kk

Applicazioni scientifiche in Octave, in Excel e in C++ A4 91


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Si aggiornano quindi i coefficienti e i termini noti nel seguente modo:


(k + 1) (k) (k) (k + 1) (k) (k)
e per i, j = k + 1, ..., n
aij = aij − mikakj bi = bi − mikbk

L’implementazione in Octave
Riportiamo ora l’algoritmo di eliminazione di Gauss in Octave.

% trasformazione di una matrice quadrata in triangolare superiore


% con il metodo di eliminazione di Gauss
% function [A,b] = meg(A,b)
% INPUT
% A,b:dati iniziali del sistema lineare Ax = b
% OUTPUT
% A:matrice finale triangolare superiore
% b:Vettore finale dei termini noti

function [A,b] = meg(A,b)


[rig,col] = size(A);
if or(rig ~ = col,size(b,1) ~ = rig)
disp('ERRORE:Dati in input non validi');
return;
end
r = input('Vuoi visualizzare tutti i passaggi (s/n)','s'); La variabile r si è resa
for i = 1:rig−1 utile per consentire
la visualizzazione di tutti
pivot = A(i,i);
i passaggi allo scopo
for j = i+1:rig di verificare il variare
if pivot == 0 disp('Interruzione a causa di un denominatore = 0'); di A e b a ogni passo k.

return;
end
m = A(j,i)/pivot;
A(j,:) = A(j,:)−m*A(i,:); % modifica riga di A
b(j) = b(j)−m*b(i); % modifica termine noto
end
if and(r == 's',i ~ = rig−1)
disp(A);
disp(b); La funzione disp
pause; visualizza il valore
di una variabile senza
end mostrarne il nome
end o la dicitura ans:
disp('Matrice finale (triangolare superiore):'); >> log(10)
ans = 2.306
disp(A); >> disp(log(10)
disp('Vettore finale dei termini noti:'); 2.306
disp(b);

92 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’implementazione in Excel
Verifichiamo la correttezza dei risultati ottenuti nell’esempio precedente attraverso l’ausilio di
un foglio di calcolo Excel visualizzando le formule utilizzate:

e i relativi risultati:

Applicazioni scientifiche in Octave, in Excel e in C++ A4 93


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

4 Risoluzione di sistemi lineari:


metodo iterativo di Jacobi
Un generico metodo
Se la matrice dei coefficienti del sistema lineare è molto grande e spar- del punto fisso consiste
sa (il numero di elementi non nulli della matrice è una piccola parte del nel trasformare il
numero complessivo degli elementi), gli algoritmi diretti non rappresen- problema f(x) = 0 in un
tano una buona soluzione del sistema. Per sistemi di grandi dimensioni, il problema equivalente
x − g(x) = 0, dove la
metodo di eliminazione è rallentato a causa dei problemi di gestione della funzione g(x) è scelta
memoria. in modo tale che valga
g(alfa) = alfa ogni
Un approccio differente è dato dai metodi iterativi, i quali, per la solu- volta che f(alfa) = 0.
Pertanto il calcolo degli
zione di sistemi lineari, si basano sulla trasformazione dell’equazione zeri della funzione f
Ax = b in un problema equivalente di calcolo di un punto fisso e cioè diventa il calcolo dei
di calcolare xk+1 in funzione di xk . punti fissi di g.

■ Consideriamo la matrice dei coefficienti del sistema A ∈ !n×n e decomponiamola attraverso


un’operazione di splitting in due o più matrici:
A=N−P
con N ∈ !n×n matrice non singolare e P = N − A.
■ Il sistema lineare può essere così riscritto:
Ax = b → (N − P)x = b → Nx = Px + b
da cui ricaviamo la soluzione x come punto fisso della seguente equazione:
x = N−1Px + N−1b
■ Sostituendo c = N−1b e M = N−1P, il problema di determinare la soluzione del sistema lineare
Ax = b è stato trasformato nel problema di determinare il vettore x punto fisso dell’equazione:
x = Mx + c
M è detta matrice di iterazione ed è ricavata splittando (decomponendo) la matrice A,
pertanto il problema viene risolto con l’iterazione:
x(k+1) = Mx(k) + c
A partire da un vettore iniziale assegnato x ∈ !n , ogni passo k + 1 vie-
ne calcolato sui valori di x prodotti dal passo k.
■ Quanti passi deve durare l’iterazione? Questo dipende dalla tolleran- Nei metodi iterativi è
necessario inserire dei
za (errore accettabile) che il problema si prefigge all’inizio, e cioè: criteri per interrompere
il procedimento,
⏐⏐x(k+1) − x(k)⏐⏐1 < tolleranza pertanto si fissa una
Se all’iterazione k + 1 si verifica questa condizione, allora il sistema tolleranza (solitamente
un valore molto
si arresta, altrimenti continua a iterare; naturalmente, poiché il con- piccolo) e si confronta
fronto deve avvenire fra vettori, abbiamo utilizzato la norma1 per la con la condizione
verifica. scelta. Quando la
condizione imposta
risulta minore della
Condizione necessaria affinché il calcolo converga verso le soluzioni tolleranza il metodo
del sistema è che il raggio spettrale della matrice di iterazione M sia converge, altrimenti il
minore di 1 (ρ(M) < 1). metodo diverge.

94 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il metodo di Jacobi decompone la matrice A del sistema iniziale Ax = b partendo dalla seguen-
te scomposizione:
0 0 + aij
aij = aij + +
0 + aij 0
A D L U
Consideriamo ora P = −(L + U) e N = D la matrice diagonale di A; è facile verificare che A = N − P:
⎡ 0 −a12 −a13 É −a1n ⎤ ⎡ a11 0 0 É 0 ⎥⎤
⎢ ⎥ ⎢
⎢ −a ⎥ ⎢ É 0 ⎥⎥
⎢ 21 0 −a23 É −a2n ⎥ ⎢ 0 a22 0
⎢ ⎥ ⎢ ⎥
P =−( L+U ) = ⎢ ! ! 0 É É ⎥ N = ⎢ ! ! akk " 0 ⎥
⎢ −a ⎥ ⎢ ⎥
⎢ n−1,1 −an−1,2 É 0 −an−1,n ⎥ ⎢ 0 0 É an−1,n−1 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ −an1 −an 2 É −an ,n−1 0 ⎥ ⎢ 0 0 É 0 ann ⎥⎥
⎣ ⎦ ⎢⎣ ⎦
Una volta calcolato N−1 ed eseguiti i prodotti c = N−1b e M = N−1P, risolviamo l’equazione:
x(k+1) = Mx(k) + c
partendo da un vettore x iniziale.

L’implementazione in Octave
Proponiamo di seguito l’algoritmo in Octave per il metodo iterativo di Jacobi.

% Funzione per il metodo di Jacobi


% function [ xk ] = jac (A,b,x0)
% JAC metodo iterativo di Jacobi
% INPUT:
% A,b,x0:dati iniziali del sistema lineare A*x0 = b
% OUTPUT
% xk:approssimazione vettore soluzioni
function [xk] = jac (A,b,x0)
% splitting di A
clc
U = triu(A,1)
L = tril(A, −1)
N = A−(L+U)
P = −(L+U)
M = inv(N)*P
rs = max(abs(eig(M))) % raggio spettrale
% condizione necessaria per continuare
if(rs > = 1) disp('Convergenza non possibile'); return; end
c = inv(N)*b
% risoluzione del sistema x = Mx+c
tol = input('Tolleranza:');
xk = iterajac(M,x0,c,tol);

Applicazioni scientifiche in Octave, in Excel e in C++ A4 95


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Octave – Finestra dei comandi


>> x0 = [2;1;−1;4] >> b = [1;3;−4;−2]
A= x0 = b=

4 −1 0 2 2 1
−1 4 2 1 1 3
3 −1 4 −1 −1 −4
3 0 1 4 4 −2

>> [xk] = jac(A,b,x0)

Octave – Finestra dei comandi

U=

0 −1 0 2
0 0 2 1
0 0 0 −1
Inserito il valore
0 0 0 0 della tolleranza,
il programma inizia
L= le iterazioni e dopo
una serie di
0 0 0 0 output intermedi
−1 0 0 0 restituisce
3 −1 0 0 il vettore delle
3 0 1 0 soluzioni xk:
xk =
N=
4 0 0 0 1.27271
0 4 0 0 2.10181
0 0 4 0 −1.61115
0 0 0 4 −0.93878
P=

−0 1 −0 −2
1 −0 −2 −1
−3 1 −0 1
−3 −0 −1 −0

M=

0.00000 0.25000 0.00000 −0.50000


0.25000 0.00000 −0.50000 −0.25000
−0.75000 0.25000 0.00000 0.25000
−0.75000 0.00000 −0.25000 0.00000

rs = 0.69627
c=
0.25000
0.75000
−1.00000
−0.50000

Tolleranza: 0.5

96 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Osserviamo il controllo sul raggio spettrale su M, % iterajac funzione ricorsiva per il calcolo di x
che rappresenta un fattore essenziale, in quanto
% function [x] = iterajac(M,x,c,tol)
il metodo potrebbe divergere. Possiamo inoltre
notare che l’iterazione è demandata a un’altra % x = Mx+c tol = tolleranza
funzione (iterajac da salvare in un file separato function [x] = iterajac(M,x,c,tol)
dal nome iterajac.m), che è ricorsiva, cioè richia- x1 = M*x+c
ma se stessa con il nuovo valore del vettore x, o if norm((x−x1),1) < tol x = x1; return
termina se si è giunti alla condizione per cui:
else x = iterajac(M,x1,c,tol);
⏐⏐x(k+1) − x(k)⏐⏐1 < tolleranza end

L’implementazione in Excel
Riportiamo ora in Excel un esempio pratico sul metodo appena visto.
Consideriamo il seguente sistema Ax = b:

Da esso è sempli-
ce determinare le
seguenti matrici U
e L:

e le matrici N e P:

Applicazioni scientifiche in Octave, in Excel e in C++ A4 97


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Prima di continuare, occorre fare una premessa: Excel prevede le formule multi-cella che rap-
presentano la soluzione ideale per le funzioni matriciali.
Fino a questo momento, abbiamo realizzato delle semplici matrici inserendo in ogni cella una
formula differente per calcolarne il singolo valore contenuto in essa.
Dovendo, invece, calcolare la matrice M come prodotto tra la matrice P e la matrice inversa di
N, abbiamo bisogno di utilizzare le funzioni matriciali e applicarle contemporaneamente a più
celle.
Per far questo potete procedere nel seguente modo:
• selezionate le celle destinate a contenere la matrice M;
• inserite all’interno della barra della formula la funzione appropriata, ma non date INVIO;
• premete la combinazione di tasti CTRL + MAIUSC + INVIO.

Excel racchiude automaticamente la formula tra parentesi graffe {} riportandola in tutte le


celle selezionate e, di fatto, calcolando la matrice M.

Digitando manualmente le parentesi graffe intorno a una formula, questa non verrà conver-
tita in una formula matriciale. È necessario premere CTRL + MAIUSC + INVIO per completa-
re una formula matriciale.
Ogni volta che si modifica una formula matriciale, le parentesi graffe scompaiono e si deve pre-
mere nuovamente CTRL + MAIUSC + INVIO per salvare le modifiche apportate alla formula.
Se si dimentica di premere CTRL + MAIUSC + INVIO, la formula si comporta come una for-
mula standard ed Excel processerà solo il primo valore o i valori presenti nella matrice spe-
cificata.
Operiamo allo stesso modo per ottenere il vettore c:

98 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Anche in questo caso, notiamo la stessa formula matriciale inserita in più celle; notare la pre-
senza delle parentesi graffe all’interno della barra della formula.
A questo punto vi sono tutti gli elementi necessari per risolvere l’equazione
x(k+1) = Mx(k) + c
partendo dal vettore x0 iniziale:

Iterando successivamente avremo la situazione illustrata di seguito.

Nell’iterazione successiva per il calcolo di Mx vengono prese le x dell’iterazione precedente


(celle con il fondo di colore verde).

Applicazioni scientifiche in Octave, in Excel e in C++ A4 99


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Nel nostro caso specifico i valori calcolati sono:

Ribadiamo che per determinare il numero di iterazione bisogna stabilire una tolleranza tale
che:
|| x(k+1)−x(k) || < tolleranza

5 Metodi di interpolazione:
polinomio di interpolazione di Lagrange
Il calcolo numerico è utile anche per affrontare il problema dell’interpolazione di funzioni e
cioè della possibilità di costruire una funzione regolare che interpoli un insieme di punti di-
screti; formalizzando il problema, possiamo scrivere:
dato un insieme di coppie di valori (x0,y0),(x1,y1),(x2,y2),…,(xn ,y n), dove le
xi sono n+1 nodi, si trovi il polinomio di grado minore o uguale a n tale
che: pn(xi) = y i i = 0,1,…n
Quindi, noto un insieme di dati reali, il problema è costruire un polinomio che si adatti a questi
dati.

Quello che segue rappresenta il polinomio di Lagrange per interpolare i punti


n
pn (x)= ∑( y k Lk (x))
k=0

100 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

n
in cui Lk (x)= ∏
i=0,i≠k
x−x i
x k −x i k = 0,1,Én sono definiti base di Lagrange, per cui il polinomio di
Lagrange può essere riscritto come:
n ⎛ n
x −x i ⎞⎟
pn (x)= ∑⎜⎜⎜ y k ∏ ⎟⎟
k=0 ⎝ i=0,i≠K x k −x i ⎠

Condizione essenziale per l’interpolazione è quella di avere tutti i nodi distinti, e cioè xi ≠ xj
per i ≠ j. Vediamo attraverso un esempio di comprendere il funzionamento di questa formula;
consideriamo i punti:
(2,−3) (1,15) (5,2) (6,1) (4,0) (0,6)
in cui la coppia (2,−3) rappresenta (x0,y0) e la coppia (0,6) rappresenta (x5,y5):

(x −1)(x −5)(x −6)(x −4)(x −0) x 5 −16x 4 +89x 3 +120x


L0 (x)= =
(2−1)(2−5)(2−6)(2−4)(2−0) −48

(x −2)(x −5)(x −6)(x −4)(x −0) x 5 −17x 4 +104x 3 −268x 2 +240x


L1 (x)= =
(1−2)(1−5)(1−6)(1−4)(1−0) 60

(x −2)(x −1)(x −6)(x −4)(x −0) x 5 −13x 4 +56x 3 −92x 2 + 48x


L2 (x)= =
(5−2)(5−1)(5−6)(5−4)(5−0) −60

(x −2)(x −1)(x −5)(x −4)(x −0) x 5 −12x 4 + 49x 3 −78x 2 + 40x


L3 (x)= =
(6−2)(6−1)(6−5)(6−4)(6−0) 240

(x −2)(x −1)(x −5)(x −6)(x −0) x 5 −14x 4 +65x 3 −112x 2 +60x


L4 (x)= =
(4−2)(4−1)(4−5)(4−6)(4−0) 48

(x −2)(x −1)(x −5)(x −6)(x −4) x 5 −18x 4 +121x 3 −372x 2 +508x −240
L5 (x)= =
(0−2)(0−1)(0−5)(0−6)(0−4) −240

Il polinomio finale sarà dato dalla somma delle basi moltiplicate per i rispettivi y i:

pn (x)=−3L0 ( x )+15L1 ( x )+2L2 ( x )+1L3 ( x )+0L4 ( x )+6L5 ( x ) =


31x 5 −530x 4 +3.225x 3 −8.050x 2 +6.404x +720
=
120
Pertanto sarà facile verificare che:
pn(2) =−3 pn(1) = 15 pn(5) = 2 pn(6) = 1 pn(4) = 0 pn(0) = 6

L’implementazione in Octave
Riportiamo ora il programma in Octave per la creazione di un polinomio di Lagrange; Octave
incorpora uno strumento per rappresentare i grafici con semplici comandi, opportunamente
commentati all’interno del listato (pagina seguente).

Applicazioni scientifiche in Octave, in Excel e in C++ A4 101


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

% Funzione che calcola il polinomio di Lagrange e disegna il grafico


% function [poly] = lagrange (x,y)
% Elenco variabili di input:
% x:vettore dei nodi(ascisse)
% y:vettore delle ordinate
% Elenco variabili di output:
% poly:polinomio interpolante con le basi di Lagrange(stringa)
% grafico del polinomio interpolante di Lagrange
function [poly] = lagrange(x,y)
% controllo sulla dimensione dei vettori
poly = "; % stringa per costruire il polinomio
n = length(x);m = length(y);
if n ~ = m
error ('I vettori dei nodi e quello delle ordinate devono avere la stessa dimensione');
end
% verifico che x non contenga elementi uguali
xs = sort(x);
for i = 1:n−1
if xs(i) == xs(i+1) error('Non è possibile proseguire due ascisse coincidono')
return;
end
end
% polinomio interpolante
for i = 1:n
den = 1;num = num2str(y(i));
for j = 1:n
if i ~ = j den = den*(x(i)−x(j));
num = strcat(num,'*(x−',num2str(x(j)),')');
%if j < n num = strcat(num,'*'); end
end
end
if(i < n)
poly = strcat(poly,num,'/(', num2str(den),')+');
else poly = strcat(poly,num,'/(', num2str(den),')');
end
end
% istruzioni per disegnare il grafico
ig = 5 ; % fattore per aumentare o ridurre la visuale del piano
x1 = min(x)−ig;x2 = max(x)+ig; y1 = min(y)−ig;y2 = max(y)+ig;
p = inline(poly);% si trasforma la stringa in una funzione
hold on; % consente di tenere traccia di quanto disegnato nella sessione precedente
grid on; % abilita la griglia di fondo
title ('Grafico del polinomio interpolante di Lagrange');
xlabel('ascisse'); ylabel ('ordinate');
fplot(p,[x1,x2,y1,y2]); % disegna il grafico e gli assi
% comandi per disegnare i nodi
for i = 1:n
plot(x(i),y(i), 'rh');
end;
% legenda
legend ('nodi', 'polinomio');

102 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il grafico compare automaticamente alla fine del processo di creazione del polinomio e rappre-
senta l’esecuzione dei comandi per disegnare il grafico, posti all’interno del programma.

L’implementazione in Excel
Excel mette a disposizione delle importanti funzionalità legate ai grafici
Un grafico a dispersione
che ci consentono di risolvere il problema dell’interpolazione a partire è la rappresentazione
da un insieme di punti. Consideriamo quindi le sei coppie di punti esa- nello spazio cartesiano di
minate sino a ora e rappresentiamole con un grafico a dispersione: un insieme di dati.

Dalla scheda “Progettazione del grafico” aggiungiamo una linea di tendenza:

Applicazioni scientifiche in Octave, in Excel e in C++ A4 103


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sulla destra si aprirà un colonnino in cui impostare le opzioni della linea di tendenza di tipo
polinomiale e di grado 5, in quanto sono presenti sei coppie di valori. La spunta su “Visualizza
l’equazione” sul grafico consentirà di rendere visibile il polinomio interpolante che, come pote-
te verificare, è realizzato con il metodo di Lagrange appena visto.

L’implementazione in C++
Riportiamo in C++ l’algoritmo per calcolare il valore del polinomio in un punto x0 fornito in
input utilizzando il metodo di Lagrange.

C++
#include <iostream>
using namespace std;
#define MAX 25
int main()
{
float x[100], y[100], p = 0, x0, prod = 1;
int i, k, n;
cout << "Inserire il numero dei punti : ";
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Inserire ascissa(x) del punto " << i+1 << ": ";
cin >> x[i];
cout << "Inserire ordinata(y) del punto " << i+1 << ": ";
cin >> y[i];
}
cout << "Inserire il punto in cui calcolare il valore di f(x): ";
cin >> x0;
for (k = 0; k < n; k++)
{
for (i = 0; i < n; i++)
{

104 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

if (k ! = i)
prod* = (x0−x[i])/(x[k]−x[i]);
cout << "dd(K"<< k <<")=" << prod <<endl;
}
p+ = (y[k]*prod);
}
cout << "f(x) nel punto " << x0 << " vale : " << p << endl;
system("pause");
return 0;
}

6 Metodi di interpolazione:
polinomio di interpolazione di Newton
Una variante del problema visto in precedenza è data dall’approssimazione di una funzione f
mediante funzioni più semplici, tipicamente polinomi; pertanto:
dato un insieme di x0,x1,x2,…xn(n + 1 nodi) e una funzione continua f(x),
trovare il polinomio di grado minore o uguale a n tale che:
pn(xi) = f(xi) i = 0,1,…n

Quindi, nota l’espressione analitica della funzione f(x), si ricerca una sua approssimazione fra i
polinomi di grado n che coincida con la funzione data sull’insieme dei nodi.

Una soluzione a questo problema è fornita dal polinomio di Newton:


n
pn (x)= ∑ ak ω k−1 ( x )
k=0

in cui i coefficienti ak si chiamano differenze divise e vengono calcolate nel seguente modo:
⎧⎪ f (x0 ) per k = 0
⎪⎪
⎪⎪
ak = ⎨ k f (x j )
⎪⎪ ∑ per k ≥1
⎪⎪ j=0 Πi=0 i≠ J ( x i −x j )
k
⎪⎩
mentre ωk−1(x) rappresenta il polinomio nodale definito come:
k−1
ω k−1 ( x ) = ∏( x −x i ) in cui ω 0−1 ( x ) =1
i=0

Anche in questo caso un esempio è utile per chiarire i concetti espressi dalle formule; conside-
riamo i seguenti dati iniziali:
• i valori x0 = 2, x1 = 3, x2 = 1, x3 = 5;
• la funzione f(x) = sin(x);
e determiniamo i valori della f(x) nei valori dati:
f(x0 = 2) = 0,90930 f(x1 = 3) = 0,14112 f(x2 = 1) = 0,84147 f(x3 = 5) = −0,95892

Applicazioni scientifiche in Octave, in Excel e in C++ A4 105


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Si vuole, pertanto, determinare un polinomio che passi per i punti indicati in modo da appros-
simare al meglio la funzione data. Procediamo con il calcolo delle differenze divise:
f (x0 ) f ( x1 )
a0 = f ( x 0 ) = 0,90930 a1 = + =−0,76818
( x 0 −x1 ) ( x1 −x 0 )
f (x0 ) f ( x1 ) f (x2 )
a2 = + + =−0,418005
( x 0 −x1 )( x 0 −x 2 ) ( x1 −x 0 )( x1 −x 2 ) ( x 2 −x 0 )( x 2 −x1 )
f (x0 ) f ( x1 )
a3 = + +
( x 0 −x1 )( x 0 −x 2 )( x 0 −x 3 ) ( x1 −x 0 )( x1 −x 2 )( x1 −x 3 )
f (x2 ) f (x3 )
+ + = 0,12268
( x 2 −x 0 )( x 2 −x1 )( x 2 −x 3 ) ( x 3 −x 0 )( x 3 −x1 )( x 3 −x 2 )
Il polinomio finale sarà dato dal prodotto delle differenze divise per il rispettivo polinomio
nodale:
pn(x) = 0,90930 − 0,76818(x − 2) − 0,418005(x − 2)(x − 3) + 0,12268(x − 2)(x − 3)(x − 1)

L’implementazione in Octave
Riportiamo ora il programma in Octave per la creazione di un polinomio di Newton e della
sua rappresentazione grafica; Octave incorpora uno strumento per rappresentare i grafici con
semplici comandi, opportunamente commentati all’interno del listato (ricordiamo di utilizza-
re help nome_comando per maggiori informazioni).

% Funzione che calcola il polinomio interpolante di Newton disegna il grafico


% function [poly] = newton(xf,f)
% Elenco variabili di input:
% xf:vettore dei nodi
% f:funzione continua in [a,b], passata come stringa
% Elenco variabili di output:
% poly:polinomio interpolante di Newton(stringa)
% grafico del polinomio interpolante di Newton
function [poly] = newton(xf,f)
poly = "; n = length(xf);
% genera vettore y come f(x)
for i = 1:n
x = xf(i);y(i) = eval(f);
end
% verifico che x non contenga elementi uguali
xs = sort(xf);
for i = 1:n−1
if xs(i) == xs(i+1) error('Non è possibile proseguire due ascisse coincidono')
return;
end
end

106 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

% differenze divise
dd = zeros(n,1); %vettore con i valori delle differenze divise
for ind = 1:n
for j = 1:ind
pr = 1;
for i = 1:ind
if i ~ = j pr = pr*(xf(j)−xf(i));
end
end
dd(ind) = dd(ind)+(y(j)/pr);
end
end
% polinomio interpolante
poly = num2str(dd(1)); % polinomio nodale di −1 = 1 quindi solo a0 = dd[1]
pnod = ";
for i = 1:n−1
pnod = strcat(pnod,'*(x−',num2str(xf(i)),')'); % polinomio nodale
poly = strcat(poly,'+',num2str(dd(i+1)),pnod);
end
poly
% si trasforma la stringa in una funzione
fi = inline(f); p = inline(poly);
% comandi per disegnare il grafico
ig = 5 ; % fattore di ingrandimento rispetto ai nodi
x1 = min(xf)−ig; x2 = max(xf)+ig; y1 = min(y)−ig; y2 = max(y)+ig;
hold on; grid on;
title ('Grafico del polinomio di interpolazione di Newton');
xlabel('ascisse'); ylabel ('ordinate');
fplot(p,[x1,x2,y1,y2], 'b'); fplot(fi,[x1,x2,y1,y2], 'r');
% funzione errore
er = strcat(f,'−(',poly,')') erx = inline(er);
fplot(erx,[x1,x2,y1,y2], 'g−');
% comandi per disegnare i nodi
for i = 1:n
plot(xf(i),y(i), 'rh');
end;
legend ('Polinomio', 'Funzione', 'Errore', 'Nodi');

L’esecuzione della funzione avviene attraverso l’istru-


zione:
p = newton(xf,"sin(x)")
Il grafico illustra in rosso la funzione iniziale (sin(x)), in
blu il polinomio interpolante sui punti e in verde una
funzione che stabilisce l’errore, ricavato come differen-
za tra la funzione iniziale e il polinomio generato.

Applicazioni scientifiche in Octave, in Excel e in C++ A4 107


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’implementazione in Excel
Il polinomio di interpolazione di Newton si presta a essere realizzato attraverso un procedi-
mento algoritmo, pertanto per risolvere il problema con Excel dobbiamo utilizzare il linguag-
gio di programmazione VBA (Visual Basic). Lo scopo di questo paragrafo non è quello di intro-
durre al linguaggio VBA, ma semplicemente di mostrarne un suo utilizzo, utile al nostro scopo.
Vengono fornite di seguito le indicazioni sui passi da eseguire, prendendo a riferimento i valori
utilizzati sino a ora.

Prendiamo in considerazione i quattro valori di x e la funzione seno (la formula è visualizzata


all’interno della barra della formula). Per calcolare le differenze divise e la generazione del po-
linomio abbiamo fatto ricorso a due subroutine realizzate in Visual Basic, la cui esecuzione è
stata associata a due pulsanti, così come rappresentato nella figura precedente.
Per creare una subroutine e associarla a un pulsante occorre inserire il “Pulsante (controllo
modulo)” dalla scheda “Sviluppo” (vedi immagine successiva).

La scheda “Sviluppo” non viene visualizzata per impostazione


predefinita, ma è possibile aggiungerla alla barra multifunzione
ogni volta che lo si desidera.
Per visualizzare la scheda “Sviluppo” all'interno di Excel
procedere come indicato:
1) Fare clic sulla scheda “File”.
2) Fare clic su “Opzioni”.
3) Fare clic su “Personalizzazione barra multifunzione”.
4) In “Personalizzazione della barra multifunzione” e “Schede
principali” selezionare la casella di controllo “Sviluppo”.
La scheda “Sviluppo” viene inoltre visualizzata automaticamente
quando si eseguono le operazioni seguenti:
• scrittura di macro;
• esecuzione di macro registrate in precedenza;
• utilizzo di comandi XML;
• utilizzo di controlli ActiveX;
• utilizzo di controlli di modulo.

Appena inserito il pulsante, viene attivata la finestra “Assegna macro”, all’interno della quale
inserire il nome della macro (subroutine); facendo clic su “Nuovo” verrà attivata la finestra di
gestione della subroutine in cui inserire il codice.

108 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Lo stesso iter deve essere svolto per quanto concerne il pulsante “Genera polinomio”. Di seguito
il codice relativo alle due subroutine.
Private Sub Differenze_divise() Private Sub Polinomio()
' calcola differenze divise ' genera polinomio di Newton
Dim n, i, j, ind As Integer Dim i, k, n As Integer
Dim xf(1 To 4) As Integer Dim pol, segno As String
Dim y(1 To 4) As Double n=4
Dim dd(1 To 4) As Double pol = "pol(x)="
Dim pr As Double For i = 1 To n
n=4 If Cells(i+2, 6) > 0 Then
For i = 1 To n segno = "+"
xf(i) = Cells(i+2, 2) Else:segno = ""
y(i) = Cells(i+2, 4) End If
Next i pol = pol+segno+Str(Cells(i+2, 6))
j = i−1
For ind = 1 To n Do While j > 0
For j = 1 To ind pol = pol+"(x−"+Str(Cells(j+2, 2))+")"
pr = 1 j = j−1
For i = 1 To ind Loop
If i <> j Then Next i
pr = pr*(xf(j)−xf(i)) Cells(8, 3) = pol
End If
Next i End Sub
dd(ind) = dd(ind)+(y(j)/pr)
Next j
Next ind
For i = 1 To n
Cells(i+2, 6) = dd(i)
Next i

End Sub

Applicazioni scientifiche in Octave, in Excel e in C++ A4 109


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Forniamo una breve spiegazione su alcuni aspetti del linguaggio Visual Basic. Si tratta di un
linguaggio fortemente tipizzato, in quanto è necessario, come nel caso del C++, dichiarare le
variabili indicandone il tipo. La parola chiave Dim viene utilizzata allo scopo di dichiarare la
variabile seguita dal termine As e quindi dal tipo di valore che deve essere contenuto in essa.
Per quanto concerne la dichiarazione dei vettori, viene indicato il primo e l’ultimo valore
dell’indice tra parentesi tonde. Facciamo un esempio:
Dim y(1 to 4) As Double
dichiara il vettore y di numeri reali ubicati in posizioni che vanno da indice 1 a indice 4.
A proposito di vettori, a differenza del C++ si accede ai singoli elementi utilizzando le parentesi
tonde e non quadre.
Nel programma è stato utilizzata la matrice di sistema “Cells”, la quale, come si può intuire,
contiene i valori di tutte le celle del foglio di lavoro Excel.
Si può notare anche che tutte le parole chiave iniziano con la lettera maiuscola.
A differenza del C++, il concetto di blocco non è evidenziato dalla presenza di parentesi graffe,
ma viene racchiuso all’interno delle rispettive parole chiave If...End If, For...Next, Sub...End Sub
ecc.

L’implementazione in C++
Proponiamo, inoltre, una soluzione algoritmica del Polinomio di Newton in C++, il cui codice
dovrebbe esserti ormai familiare.

C++
#include"iostream"
#include"math.h"
using namespace std;
int main()
{
int i,j,n, pr,ind;
double x[50], y[50], dd[50];
cout << "quanti valori vuoi inserire? ";
cin >> n;
// acquisizione dei valori
for( i = 0; i < n; i++)
{
cout << "Inserisci valore n. " << i+1 << " ";
cin >> x[i];
}
// calcolo della funzione seno
for (i = 0; i < n; i++)
{
y[i] = sin(x[i]);
cout << "x= " << x[i] << " y=" << y[i] << endl;
}
// azzera vettore
for (i = 0; i < n; i++)
dd[i] = 0;
// calcolo delle differenze divise
for (ind = 0; ind < n; ind++)

110 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

{
for (j = 0; j < ind+1; j++)
{
pr = 1;
for (i = 0; i < ind+1; i++)
if (i ! = j) pr = pr*(x[j]−x[i]);
dd[ind] = dd[ind]+(y[j]/pr);
}
}
// visualizza differenze divise
for (i = 0; i < n; i++)
cout << "dd= " << dd[i] << endl;
// visualizza polinomio
cout << "P(x)=" << dd[0];
for(i = 1;i < n;i++)
{
if (dd[i] > 0) cout << "+";
cout << dd[i];
for (j = 0; j < i; j++)
cout << "(x−" << x[j] << ")";
}
cout << endl;
system("PAUSE");
return 0;
}

7 Metodi di approssimazione: fitting di dati


Un’importante area dell’approssimazione è il problema di adattare una curva a dei dati spe-
rimentali. In questa situazione, non si vuole necessariamente costruire una curva che passi
per tutti i punti, ma una funzione che rappresenti la tendenza dei dati, che sia interpretata
come un’approssimazione vicina ai dati. Il metodo più utilizzato è noto come fitting di dati ai
minimi quadrati, ed è molto utilizzato nel campo della statistica. L’obiettivo è quello di deter-
minare una retta f(x) = mx + q in cui minimizziamo i quadrati delle distanze tra la retta e i dati.
Prendiamo in considerazione k coppie di dati sperimentali (xk ,yk) per k = 1…n, e determiniamo
la retta di tendenza in modo da minimizzare la distanza fra le coordinate yk dei dati e le f(xk)
della retta. Si ricorre pertanto alla retta dei minimi quadrati, partendo dalla considerazione di
minimizzare la funzione F(m,q):
n n
F (m,q ) = ∑( y k − f (x k )) = ∑( y k −(mx k +q))
2 2

k=1 k=1

Per determinare il minimo, si procede calcolando le derivate parzia-


li della funzione F(m,q) e ponendole uguali a zero: Utilizziamo le derivate parziali
perché la funzione F dipende
∂F n da due variabili m e q, pertanto
=−2∑( y k −(mx k +q)) x k = 0 le derivate si calcoleranno
∂m k=1 prima rispetto a m e poi
∂F n rispetto a q, seguendo le regole
=−2∑( y k −(mx k +q)) = 0 di derivazione in una variabile.
∂q k=1

Applicazioni scientifiche in Octave, in Excel e in C++ A4 111


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

da cui ricaviamo:
n

∑( y
k=1
k −(mx k +q)) x k = 0
n

∑( y
k=1
k −(mx k +q)) = 0
n
e infine, poiché ∑ 1 = n:
⎧⎪m n x 2 +q n x =
⎪⎪ ∑ k=1 k ∑ k=1 k ∑ k=1 y k x k
k=1 n


⎪⎪m n x +qn
⎪⎩ ∑ k=1 k = ∑ k=1 y k
n

Risolvendo, pertanto, il sistema in funzione di m e q otteniamo:

m=
(∑ x )(∑ y )
n ∑ k=1 y k x k −
n n
k=1 k
n
k=1 k

n(∑ x )−(∑ x )
n n 2
2
k=1 k k=1 k

q=
(∑ x )(∑ y )−(∑ x )(∑ x y )
n
k=1
2
k
n
k=1 k
n
k=1 k
n
k=1 k k

n(∑ x )−(∑ x )
n n 2
2
k=1 k k=1 k

L’implementazione in Octave
La retta y = mx + q risulta quella che approssima meglio i dati; il problema pertanto si riduce al
semplice calcolo dei valori m e q e Octave offre una valida soluzione grazie alla facilità con cui
possono essere svolte le operazioni sui vettori dati.
Supponiamo di avere due vettori x e y rispettivamente delle xk e yk:
x=3527819046 e y=1025493621

Dalle formule si ricava m = −0,29697, q = 4,6364, pertanto la retta di approssimazione è:


y = −0,29697x + 4,6364

Proponiamo l’algoritmo che individua la retta e la rappresenta graficamente; possiamo notare


nelle istruzioni per calcolare m e q i comandi per le operazioni tra i vettori; per un corretto fun-
zionamento del programma (proprio a causa delle operazioni tra vettori) è necessario fornire
in input alla funzione x come vettore riga e y come vettore colonna. Ricordiamo che per effet-
⎛ n ⎞
tuare l’operazione ⎜⎜∑ x k2 ⎟⎟⎟ occorre utilizzare la notazione puntuale del vettore e quindi x.^2,
⎝⎜ k=1 ⎠⎟
in quanto non si tratta di effettuare il quadrato di x (x2 = x ⋅ x) ma il quadrato di ogni singolo
valore.

112 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

% Funzione che calcola il polinomio interpolante a tratti ne disegna il grafico


% function [funz] = fitting (x,y)
% Elenco variabili di input:
% x:vettore dei nodi(ascisse)
% y:vettore delle ordinate
% Elenco variabili di output:
% funz:funzione dei minimi quadrati
% grafico del polinomio interpolante a tratti
function [funz] = fitting(x,y,i)
% controllo sulla dimensione dei vettori
n = length(x);
m = length(y);
if n ∼ = m
error ('I vettori dei nodi e quello delle ordinate devono avere la stessa dimensione');
end
% ordino x in maniera crescente
[x,xp] = sort(x); % xp posizioni iniziali restituite dalla funzione sort
% sistemo y in funzione del nuovo ordine di x
for i = 1:n
ny(i,1) = y(xp(i));
end
y = ny;
% comandi per disegnare il grafico
hold on;
grid on;
xlabel('ascisse');
ylabel ('ordinate');
ig = 5; % fattore di ingrandimento rispetto ai nodi
x1 = min(x)−ig; x2 = max(x)+ig; y1 = min(y)−ig; y2 = max(y)+ig;

% retta di approssimazione
m = (n*sum(x*y)−sum(x)*sum(y))/(n*sum(x.^2)−sum(x)^2)
q = (sum(x.^2)*sum(y)−sum(x)*sum(x*y))/(n*sum(x.^2)−sum(x)^2)
funz = strcat(num2str(m),'*x+',num2str(q))
lg = 'Interpolazione lineare'
% si trasforma la stringa in una funzione
p = inline(funz);
fplot(p,[x1,x2,y1,y2]);
title (strcat('Fitting di dati ai minimi quadrati,',lg));
% comandi per disegnare i nodi
for i = 1:n
plot(x(i),y(i),'rh');
end;
legend ('Nodi', 'Retta');

Applicazioni scientifiche in Octave, in Excel e in C++ A4 113


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’implementazione in Excel
La retta y = mx + q, come si è detto, risulta quella che approssima meglio i dati: il problema
pertanto si riduce al semplice calcolo dei valori m e q e Excel offre una valida soluzione grazie
alla facilità con cui possono essere svolte le operazioni sui dati.
Supponiamo di avere delle coordinate x e y e quindi rispettivamente delle xk e yk:
x=3527819046 y=1025493621
Calcoliamo pertanto le varie somme per determinare i valori di m e q. Come al solito, riportia-
mo le formule utilizzate e in seguito i risultati ottenuti:

114 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Non ci resta, quindi, che rappresentare graficamente i punti e la retta; per quest’ultima è suffi-
ciente determinare soltanto due coppie di coordinate.

L’implementazione in C++
Riportiamo in C++ l’algoritmo per la generazione della retta dei minimi quadrati su un numero
di punti n fornito in input al programma.

C++
#include <iostream>
using namespace std;
int main()
{
float x[100], y[100],syx = 0,sx = 0,sy = 0,sx2 = 0,m,q;
int i, k, n;
cout << "Inserire il numero dei punti : ";
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Inserire ascissa(x) del punto " << i+1 << ": ";
cin >> x[i];
cout << "Inserire ordinata(y) del punto " << i+1 << ": ";
cin >> y[i];
}
for (k = 0; k < n; k++)
{
syx+ = y[k]*x[k];
sx+ = x[k];
sy+ = y[k];
sx2+ = x[k]*x[k];
}

Applicazioni scientifiche in Octave, in Excel e in C++ A4 115


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

m = (n*syx−sx*sy)/(n*sx2−sx*sx);
q = (sx2*sy−sx*syx)/(n*sx2−sx*sx);
cout << "y= m= " << m << "x+" << q;
system("pause");
return 0;
}

Octave: il fitting dei dati


La tecnica dei minimi quadrati consente di determinare una funzione che minimizza la
somma dei quadrati delle distanze tra i dati osservati e quelli della curva che rappresenta la
funzione stessa.

Non a caso abbiamo parlato di curva, in quanto la tecnica dei minimi quadrati può essere
utilizzata per determinare non solo una retta, ma un polinomio di grado n che approssima al
meglio i dati.
Octave fornisce una funzione che ci aiuta a risolvere in tempi rapidi il problema dei minimi
quadrati determinando appunto i coefficienti del polinomio approssimante.
La funzione in esame è:
polyfit (x, y, n)
dove x, y sono vettori contenenti le ascisse e le ordinate dei punti dei dati da approssimare, n è
il grado del polinomio utilizzato.
Abbiamo osservato in precedenza come determinare, attraverso un processo algoritmico, i co-
efficienti della retta di fitting:
y = ax + b

Pertanto, nel caso dei vettori di dati utilizzati sino a ora:


x= 3 5 2 7 8 1 9 0 4 6 e y=1 0 2 5 4 9 3 6 2 1

L’esecuzione della funzione polyfit produce il seguente risultato:


Octave – Finestra dei comandi

>>polyfit(x,y,1)
ans =

−0.29697 4.63636

La funzione restituisce un vettore con gli elementi dei coefficienti del polinomio di primo gra-
do e quindi della retta dei minimi quadrati studiata in precedenza.
Se si aumenta l’ordine dell’equazione al secondo grado polinomiale, si ottiene:
y = ax2 + bx + c

116 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

i cui coefficienti a, b, c, nel caso dei nostri dati, saranno:


Octave – Finestra dei comandi

>>polyfit(x,y,2)
ans =

0.22348 −2.30833 7.31818

Se si aumenta l’ordine dell’equazione al terzo grado polinomiale, si ottiene:


y = ax3 + bx2 + cx + d
nello specifico i coefficienti saranno:
Octave – Finestra dei comandi

>>polyfit(x,y,3)
ans =

−0.026612 0.582751 −3.535159 7.988811

Applicazioni scientifiche in Octave, in Excel e in C++ A4 117


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME
APPLICAZIONI SCIENTIFICHE
IN OCTAVE, IN EXCEL E IN C++ AUDIO

Metodo di Cramer della gestione della memoria. Occorre utilizzare


Un sistema di n equazioni in n incognite può essere i metodi iterativi, basati sulla trasformazione
risolto trasformandolo in forma matriciale. dell’equazione Ax = b in un problema equivalente
Calcolato il determinante della matrice, di calcolo di un punto fisso. Un esempio di tali
se quest’ultimo è diverso da zero, la matrice metodi è il metodo iterativo di Jacobi.
ammette una e una sola soluzione, che può essere
Polinomio di interpolazione di Lagrange
calcolata con il metodo di Cramer.
Per costruire una funzione regolare a partire da
Sistemi triangolari un insieme di punti discreti si utilizza il calcolo
Un sistema triangolare si risolve con il metodo numerico. Una soluzione a questo problema
di sostituzione: di sostituzione all’indietro, è fornita dal polinomio di interpolazione di
se il sistema triangolare è superiore, Lagrange. Utilizzando un software (Octave, Excel)
di sostituzione in avanti se il sistema triangolare si ottiene anche il grafico che rappresenta il
è inferiore. polinomio.
Metodo di eliminazione di Gauss Polinomio di interpolazione di Newton
Il metodo di eliminazione di Gauss calcola Se si deve approssimare una funzione f mediante
la soluzione di un sistema ax = b trasformandolo funzioni più semplici, tipicamente polinomi,
in un sistema più semplice da risolvere, si può risolvere il problema utilizzando
quindi cercando di rappresentare la matrice il polinomio di interpolazione di Newton.
A come una matrice triangolare superiore,
Fitting di dati
la forma di rappresentazione che rende
Per ottenere una curva che si adatti a dei dati
la soluzione più agevole e veloce.
sperimentali senza passare necessariamente
Metodo iterativo di Jacobi per tutti i punti, ma rappresentandone
Se la matrice dei coefficienti del sistema lineare la tendenza, il metodo più utilizzato è il fitting
è molto grande e sparsa, non è una buona di dati ai minimi quadrati. Tale metodo conduce
scelta, per risolverli, utilizzare gli algoritmi a costruire una retta la cui distanza dai dati sia
diretti, che sono rallentati dal problema la minima possibile.

118 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

A4
MAPPA
MODIFICABILE
APPLICAZIONI SCIENTIFICHE
IN OCTAVE, IN EXCEL E IN C++

classificabili in

RISOLUZIONE COSTRUZIONE DI
DI SISTEMI LINEARI FUNZIONI INTERPOLANTI

se trasformato

in forma
matriciale

allora

metodo
di Cramer

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
1) Per quali due tipi di applicazioni scientifiche sono utilizzabili Octave, Excel e C++?
2) Se un sistema lineare può essere risolto mediante trasformazione in forma matriciale, che metodo usi?
3) Se un sistema lineare è triangolare, con quale metodo lo risolvi?
4) Se un sistema lineare può essere risolto mediante trasformazione in matrici triangolari superiori, che metodo usi?
5) Se un sistema lineare ha matrice dei coefficienti molto grande e sparsa, allora quali tipi di metodi usi?
Qual è un esempio di tali metodi?
6) Per costruire funzioni interpolanti passanti per tutti i punti da rappresentare, quali due polinomi di interpolazione
si possono usare?
7) Per costruire funzioni interpolanti passanti non necessariamente per tutti i punti da rappresentare,
che procedura matematica si usa?

Applicazioni scientifiche in Octave, in Excel e in C++ A4 119


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE A4
1. • ESERCIZIO SVOLTO Risolvi il seguente sistema:

⎪ x1 + 2x2 − 3x3 − 4x4 = 1



⎪ 5x1 + 6x2 − 7x3 − 8x4 = 2


⎪ 9x1 + 8x2 + 7x3 − 6x4 = 3




⎩−5x1 − 4x2 − 3x3 − 2x4 = 4

Rendi positivi tutti i coefficienti e ricalcola le soluzioni.

Svolgiamo insieme l’esercizio


File script Risoluzione sistema.m
% consideriamo la matrice associata al sistema e il vettore dei termini noti
A = [1,2,−3,−4;5,6,−7,−8;9,8,7,−6;-5,−4,−3,−2];
b = [1,2,3,4]';

% utilizziamo l’algoritmo di Gauss meg(A,b) per trasformare il sistema in un sistema equivalente triangolare
superiore
[A,b] = meg(A,b);
% a questo punto risolviamo il sistema partendo dall’ultima equazione
x = zeros(4,1);
x(4,1) = b(4,1)/A(4,4);

% creiamo due cicli annidati che risolvano il sistema


i = 3;
while i ≥ 1
y = 0;
for j = i+1:4
y = y+A(i,j)*x(j,1);
end
x(i,1) = (b(i,1)−y)/A(i,i);
i = i−1;
end
% a questo punto possiamo stampare la soluzione
disp('Soluzione del sistema')
x

120 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

2. • Risolvi il seguente sistema: 8. • Risolvi il sistema Ax = b con i seguenti dati,


⎧ prendendo in considerazione il vettore iniziale x0:

⎪ 2x + 3y + z = 2

⎪ ⎡ ⎤ ⎡ ⎤
⎨ 4x + 2y + 3z = 2 ⎢ 5 0 1 2 ⎥ ⎢ 3 ⎥

⎪ ⎢ ⎥ ⎢ ⎥
⎪ 1 3 1 0 2
⎩ x + 2y + z = 4
⎪ A= ⎢



b=⎢



2 0 8 2 4
⎢ ⎥ ⎢ ⎥
⎢⎣ 0 1 1 4 ⎥⎦ ⎢⎣ 0 ⎥⎦
3. • Completa il seguente sistema sapendo che Determina U, L, N, P, M e le soluzioni finali
le soluzioni sono 0,7; −0,1; 2,1:
considerando una tolleranza di 0,2.
⎪⎧⎪ −3x1 + x2 + 2x3 = ......
⎪⎪
⎨ x1 − 3x2 = ...... 9. • Data la seguente tabella di valori della funzione




⎩ −4x1 + 5x2 + 3x 3 = ...... f(x):

x f(x)
4. • Trasforma il seguente sistema in un sistema 1 −4
rappresentato da una matrice triangolare: 3 −1
⎪⎧⎪ 3x1 + 2x2 − x3 − 2x4 = 1 5 4
⎪⎪
⎪ 6x1 − x2 + 3x3 + 5x4 = −5 6 2


⎪ −2x1 + 8x2 + 7x3 + 6x4 = 6
⎪ • scrivi le basi di Lagrange;

⎩ −5x1 − 4x2 + 3x3 +

⎪ 2x4 = 4 • calcola il valore del polinomio interpolatore
in x = 0;
• calcola il valore del polinomio interpolatore
5. • Trasforma il seguente sistema in un sistema in x = 20.
rappresentato da una matrice triangolare:
⎪⎧⎪ x1 + x2 − x3 − x4 = 3 10. • Data la seguente tabella di valori della funzione
⎪⎪ f(x):
⎪ x1 − x2 + 2x3 + 3x4 = −1


⎪ −x1 + x2 + 2x3 + 3x4 = 4 x f(x)


⎩ −x1

⎪ − x2 + 3x3 + 2x4 = −2 1 −2
0,5 1
2 2
6. • Calcola le soluzioni del sistema relativo 5 0
al precedente esercizio.
8 −4
7. • Risolvi il sistema Ax = b con i seguenti dati, • scrivi le basi di Lagrange;
prendendo in considerazione il vettore iniziale x0: • calcola il valore del polinomio interpolatore
⎡ in x = 0;
⎢ 5 0 10 0 ⎤⎥ ⎡
⎢ 0 ⎤
⎥ • calcola il valore del polinomio interpolatore
⎢ 0 10 0 34 ⎥⎥ ⎢ 10 ⎥
A= ⎢ b=⎢ ⎥ in x = 7.
⎢ 10 0 34 0 ⎥ ⎢ 14 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣ 0 34 0 130 ⎥⎦ ⎢⎣ 34 ⎥⎦ 11. • Data la seguente tabella di valori della funzione
f(x):
Determina U, L, N, P, M e le soluzioni finali
considerando una tolleranza di 0,1. x f(x)
5 −4
7 −1
10 4
15 2
• scrivi il polinomio interpolante di Lagrange;
• calcola il valore del polinomio interpolatore
in x = −2;
• calcola il valore del polinomio interpolatore
in x = −3.

Applicazioni scientifiche in Octave, in Excel e in C++ A4 121


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

12. • Data la seguente tabella di valori della funzione 16. • Determina la retta dei minimi quadrati che
f(x): rappresenti la tendenza dei seguenti dati:

x f(x) x y
1 −2 1 3
2 −1 2 5
3 2 −1 4
4 6 0 0
• scrivi le basi di Lagrange; 6 3
• calcola il valore del polinomio interpolante
in x = 0; 17. • Determina la retta dei minimi quadrati che
• calcola il valore del polinomio interpolante rappresenti la tendenza dei seguenti dati:
in x = 6.
x y
13. • Scrivi il polinomio interpolante che approssimi 3 0
al meglio la funzione f(x) = log(x) relativamente 4 4
ai seguenti punti: 7 6
x 2 1
1 5 7
0,5 9 9
2
4 18. • Determina la retta dei minimi quadrati che
8
rappresenti la tendenza dei seguenti dati:

x y
14. • Scrivi il polinomio interpolante che approssimi 5 −4
al meglio la funzione f(x) = ex relativamente
−4 0
ai seguenti punti:
−1 −2
x
0 3
1
6 1
2
−3 2
4
6 19. •• Discutere la risolubilità del sistema
⎧ x − y − 2z = 3

15. • Determina la retta dei minimi quadrati che ⎪

rappresenti la tendenza dei seguenti dati: A=⎪
⎨2x + y + z = a



⎩3x − z = 0

x y
−1 3 in funzione del parametro reale a. Suggerimento:
applicare l’eliminazione di Gauss e considerare
0 0
il sistema equivalente triangolare.
−3 2
20. •• Dire per quali valori di k ∈ ! il sistema
Ax = b ammette soluzione. In caso positivo
si determinino esplicitamente tali soluzioni.
⎡ 1 −1 ⎤ ⎡ x ⎤ ⎡ 0 ⎤
⎢ 2 ⎥ ⎢ 1 ⎥ ⎢ ⎥
A= ⎢ 0 1 1 ⎥ x = ⎢⎢ x2 ⎥⎥ b=⎢ 1 ⎥
⎢ ⎥ ⎢ x ⎥ ⎢ ⎥
⎢ 0 0 k +1 ⎥ ⎢⎣ 3 ⎥⎦ ⎢⎣ −1 ⎥⎦
⎣ ⎦

122 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

21. •• Dire per quali valori di t ∈ ! il seguente


sistema ammette soluzione. In caso positivo
si determinino esplicitamente.
⎧ tx + 3y + z = 1




⎨ 3x + 2y + 3z = 1



⎩ tx + 2y + z = 1

22. ••• Risolvere il sistema di equazione


di Kirchhoff per il seguente circuito:

I1 R5 I5
A B
I2 I4
I3
α β γ
R1 R2 R3

J1 J2 J3 R4
+ + +
E1 E2 E3

E1 = 27 V E2 = 20 V
E3 = 25 V R1 = 4 Ω
R2 = 1 Ω R3 = 10 Ω
R4 = 20 Ω R5 = 2 Ω

Applicazioni scientifiche in Octave, in Excel e in C++ A4 123


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

CLIL ASCOLTA
LA PRONUNCIA
GLOSSARIO
CLIL

The Rectilinear Crossing Number Project AUDIO

Many questions in computational and combinatorial It is not difficult to see that with a number of nodes equal
geometry refer to the study of a finite set of points on the to four, intersections may not occur in the graph. With five
Euclidean plane. Many problems in graph theory are framed nodes you can plot different configurations (here you can
in this context when the edges are linear. see different order types (introduced by Goodman and
A major issue concerns the number of straight line Pollack in 1983)). If you draw five nodes forming a convex
intersections (for example, problems of transport and figure there are five crossings. The best you can do is have
optimizing layout in the press): What is the minimum a single intersection (there is no way to draw a complete
number of crossings in a drawing of the complete graph graph of five nodes without crossing, even if the sides
of n points on a plane? A complete graph is one in which are curved).
each point (node) is connected to all others. It also assumes Maximizing the number of crossings is easy: just place
the most generic position possible for the nodes, this implies all the n nodes in a circle to get the maximum number
that in the graph no three nodes are aligned. of intersections.

The hunt to discover the crossing number of a complete to determine the rectilinear crossing number for values of
graph started with R. Guy in the 1960s. As of the year 2000 n less than 50. So far we have been successful for n ≤ 17.
only the values for n ≤ 9 were known, in 2001 the case for Recent work (as yet unpublished) has found the rectilinear
n = 10 was solved, while in 2004 it was that of n = 11. crossing number for n = 19 and n = 21. The desire to solve
The main objective of the project is to use sophisticated the problem for n = 18 has become truly irresistible: this will
mathematical methods (order type abstract extensions) be the main objective of the project.

Focus … and now answer!


The configuration of large sets of nodes 1 What is The Rectilinear Crossing Number Project?
For large sets of nodes it is very difficult to determine 2 What is the number of nodes for which a solution
the best configuration. The main reason is that the to the rectilinear crossing number is being sought?
number of different ways to draw the nodes grows
exponentially.
For example, for n = 11 there are already more
than two billion (precisely 2,334,512,907) different
configurations.

124 Sezione A Algoritmi di calcolo numerico


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sezione B
TEORIA DELLA
COMPUTAZIONE

B1 B2 B3 B4 B5
Sistemi e modelli Teoria Teoria della La complessità Intelligenza
I progressi tecnologici degli automi calcolabilità computazionale artificiale e reti
degli ultimi decenni L’automa è un La teoria della Dato un problema, neurali
hanno reso possibile qualunque dispositivo calcolabilità si occupa è possibile I progressi ottenuti
costruire sistemi che esegue da se della potenza e delle determinare un recentemente
informatici sempre più stesso un particolare limitazioni dei sistemi insieme, generalmente nell’intelligenza
complessi e strutturati. compito, sulla base di calcolo. È nata finito, di algoritmi in artificiale non hanno
Di conseguenza, di stimoli o ordini quando i logici grado di risolverlo. precedenti. Ma se le
per progettarne ricevuti. In sostanza, matematici – La scelta di un nostre esperienze si
e analizzarne il concetto di automa esplorando i concetti algoritmo piuttosto incrociano sempre più
il comportamento, è quello di una di computazione, di un altro può essere spesso con software
non è più macchina capace algoritmo, problema basata su differenti “intelligenti”, siamo
sufficiente applicare di svolgere in maniera risolvibile per via fattori. Tra essi, ancora distanti dalla
un semplice approccio automatica, una volta algoritmica – quello che gioca creazione di una vera
di studio intuitivo. sollecitata in modo dimostrarono un ruolo essenziale intelligenza artificiale,
Occorre ricorrere opportuno, operazioni l'esistenza di problemi è la complessità in grado di pensare
a rappresentazioni che portano a un non risolvibili con computazionale, almeno come un
astratte e preciso risultato. nessun algoritmo. che è una grandezza essere umano.
formalizzate: i modelli. misurabile.

PREREQUISITI OBIETTIVI
Conoscenze Conoscenze Abilità
• Strategie per la risoluzione di • Concetto di sistema • Saper classificare sistemi
problemi quale astrazione utile alla • Riconoscere e utilizzare modelli utili per
• Algoritmi comprensione della realtà la rappresentazione della realtà
• Generalità sui sistemi • Concetto di informazione per la • Costruire automi
Abilità comprensione dei procedimenti • Utilizzare la macchina di Turing
di soluzione dei problemi • Saper valutare un algoritmo in termini di
• Saper strutturare un programma • Automa quale modello di efficienza e costi
• Implementare algoritmi calcolo • Saper distinguere pregi e potenzialità
• Riconoscere le caratteristiche di • Metodi computazionali e di algoritmi genetici e sistemi di
un sistema esaminato nella vita macchina di Turing intelligenza artificiale
di tutti i giorni • Complessità computazionale e Competenze
ordine di grandezza dei problemi
• Intelligenza artificiale • Utilizzare strumenti metodologici per
• Reti neurali porsi con atteggiamento razionale e
• Sistemi esperti e algoritmi critico di fronte a sistemi e modelli di
genetici calcolo

125
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B1 Sistemi e modelli

IMPARERAI…

Che cosa sono e a che cosa Che cosa significa “modellare” A riconoscere e classificare
servono i sistemi una realtà i sistemi e i modelli

1 I sistemi
Una semplice definizione
Intuitivamente, conosciamo la differenza tra un mucchio di piselli e un’automobile. Se toglia-
mo o aggiungiamo un pisello al mucchio non cambia quasi nulla, ma se togliamo o aggiungia-
mo un elemento agli oggetti che costituiscono l’automobile, le cose cambiano radicalmente.
Pensa a che cosa accadrebbe se togliessimo il motore, o se aggiungessimo un paio di ali. Ciò
accade perché non è possibile affermare che un’automobile è uguale alla semplice somma degli
elementi di cui è costituita, cosa che, invece, possiamo affermare per il mucchio di piselli.
L’automobile, infatti, è formata da oggetti che interagiscono tra loro con lo scopo di farla fun-
zionare come se fosse un’unica entità. Possiamo affermare, allora, che un mucchio di piselli
non è un sistema, mentre un’automobile lo è.
La definizione di sistema può essere più o meno complessa, più o meno formale; noi ne utiliz-
zeremo una abbastanza semplice.

Un sistema è un insieme di elementi che interagiscono tra loro per funzionare come un unico
elemento.

Quando osserviamo fenomeni reali particolarmente complessi, siamo abituati a utilizzare il


concetto di sistema proprio per porre in evidenza che il comportamento di un fenomeno può
essere spiegato solo osservando il comportamento delle varie parti che lo compongono e le
correlazioni tra esse. Secondo la teoria generale dei sistemi, un sistema può essere definito tale
quando sono noti:
• gli obiettivi da raggiungere;
• le parti (o elementi) che lo compongono;
• le interazioni con il mondo esterno, espresse in termini di ingressi e uscite;
• le relazioni che descrivono i rapporti esistenti tra i vari componenti.
Questa definizione può essere applicata a qualsiasi tipo di sistema, che sia un sistema nervoso,
o un sistema economico, o un sistema meccanico.
Vediamo nel seguito alcuni esempi.

126 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
1. Consideriamo il sistema automobile; in esso possiamo identificare tutti gli elementi
che caratterizzano un sistema.
Infatti:
• l’obiettivo è permettere gli spostamenti dell’uomo;
• le parti sono costituite dai vari componenti meccanici ed elettrici: il moto-
re, le ruote, le portiere, e così via;
• le interazioni sono: in ingresso, il carburante e le persone da trasporta-
re, in uscita l’energia (termica e meccanica) e le persone trasportate;
• le relazioni sono le attività svolte dai vari componenti che permettono
all’automobile di essere messa in moto, di avanzare, di sterzare, e
così via.

2. Ora consideriamo un altro sistema: il corpo umano. Anche in esso possiamo identificare tutti gli elementi che
caratterizzano un sistema.
Infatti:
• l’obiettivo è la sopravvivenza dell’uomo;
• le parti sono costituite dai vari apparati: l’apparato circolatorio, l’apparato respiratorio, l’apparato nervoso, l’ap-
parato muscolare e così via;
• le interazioni sono, per esempio, l’aria respirata in ingresso rispetto al corpo umano, la sudorazione in uscita dal
corpo umano;
• le relazioni consistono nella sincronizzazione delle attività svolte dai vari apparati che permettono al sistema
stesso di far sopravvivere l’uomo; per esempio, la respirazione permette di filtrare l’ossigeno che viene distribuito
alle cellule tramite l’apparato circolatorio, e così via.

3. Consideriamo infine il sistema computer. In esso possiamo identificare tutti gli elementi che caratterizzano
un sistema.
Infatti:
• l’obiettivo è permettere le elaborazioni da parte dell’uomo;
• le parti sono costituite dai vari componenti meccanici, elettrici ed elettronici: il microprocessore, la memoria, la
scheda madre, e così via;
• le interazioni sono: in ingresso, i dati e i programmi inseriti dall’utente; in uscita, i dati trasformati;
• le relazioni sono le attività svolte dai vari componenti che permettono al computer di visualizzare immagini, stam-
pare lettere e relazioni, e così via.

I sottosistemi
Spesso le parti che costituiscono un sistema (specialmente se questo è complesso) sono, a loro
volta, altri sistemi. Si parla allora di sottosistemi.

Ogni sottosistema, pur essendo sempre un sistema e potendo quindi essere considerato sin-
golarmente, concorre al raggiungimento dell’obiettivo del sistema principale di cui è parte.

Nel sistema complesso del corpo umano, per esempio, possiamo individuare il sottosistema
cuore, il sottosistema fegato, il sottosistema cervello e molti altri. Ogni sottosistema è, a sua
volta, un sistema. Nel sottosistema cuore, per esempio, possiamo identificare tutti gli elementi
che caratterizzano un sistema.

Sistemi e modelli B1 127


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Infatti:
• l’obiettivo è garantire il filtraggio del sangue venoso e l’invio
del sangue arterioso in tutto il corpo;
• le parti sono costituite dai ventricoli destro e sinistro, e così
via;
• le interazioni sono: il sangue venoso in ingresso (che dalle
parti periferiche del corpo arriva al cuore) e il sangue arterio-
so, purificato e ossigenato, in uscita (che dal cuore va verso le
parti periferiche del corpo);
• le relazioni consistono nella sincronizzazione dei sottosiste-
mi (per esempio, quando il ventricolo destro si apre, quello si-
nistro si chiude), che permettono al sistema un costante e con-
tinuo filtraggio e pompaggio del sangue.

2 Caratteristiche e comportamento di un sistema


Lo stato interno di un sistema
Oltre agli ingressi e alle uscite vi è un’altra importante grandezza che caratterizza un sistema:
lo stato interno.

Lo stato interno rappresenta le proprietà intrinseche, o caratteristiche, di un sistema, ovve-


ro l’insieme delle informazioni necessarie e sufficienti per descrivere in modo esauriente le
condizioni in cui si trova il sistema in un qualsiasi istante.

Nell’esempio del sistema cuore, lo stato interno può essere composto dall’insieme delle sue
caratteristiche fisiche quali il volume, la pressione sanguigna, e così via; per il sistema auto-
mobile, lo stato interno può essere composto dall’insieme dei valori che rappresentano i litri
di carburante presenti nel serbatoio, la marcia inserita, il livello dell’olio motore, e così via.
Leggere i valori dello stato di un sistema in un certo istante equivale a effettuare una fotografia
del sistema in quell’istante, ovvero a considerare la sua situazione in quel preciso momento.
I valori degli ingressi di un sistema, i valori delle uscite e i valori assunti dallo stato di un siste-
ma vengono memorizzati in apposite variabili che prendono il nome di variabili di ingresso,
di uscita e di stato.

Una semplice rappresentazione dei sistemi


Una prima rappresentazione di un sistema è realizzata tramite un diagramma a blocchi
o rappresentazione a scatola nera, così definita in quanto non riusciamo a vedere com’è
fatto il sistema al suo interno.

Tale metodo utilizza un simbolismo grafico composto dai seguenti elementi:


• un rettangolo con il nome del sistema;
• gli ingressi, indicati sulle frecce in entrata al rettangolo;
• le uscite, indicate sulle frecce in uscita dal rettangolo;
• lo stato, rappresentato all’interno del rettangolo.

128 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Ingresso1 NomeSistema Uscita1

Ingresso2 Stato1 Uscita2


Stato2

... ... ...

IngressoN StatoM UscitaN

Consideriamo, per esempio, il sistema automobile. Possiamo rappresentarlo con il seguente


diagramma a blocchi:

AUTOMOBILE
I1 = Carburante S1 = Ferma U1 = Energia termica
S2 = Avanza
U2 = Energia meccanica
I2 = Persone da S3 = In retromarcia
trasportare U3 = Persone
... trasportate

Descrizione del comportamento di un sistema


Per descrivere il comportamento di un sistema dobbiamo individuare le leggi o funzioni
che legano gli ingressi alle uscite e allo stato del sistema.

Tali leggi molto spesso sono complicate e vengono espresse mediante complesse formule ma-
tematiche. Le relazioni esistenti tra le variabili o tra le varie parti di un sistema sono rilevabili
ed esprimibili mediante funzioni matematiche. Le funzioni sono le seguenti.
• La funzione di transizione dello stato f() ci permette di calcolare quale valore assumerà
lo stato del sistema s(t) a un generico istante t, in base alla situazione iniziale del sistema
s(t0) e a tutti gli ingressi applicati al sistema dall’istante iniziale t0 fino all’istante t, cioè i(t).
Possiamo esprimerla nel seguente modo:
s(t) = f(s(t0), i(t))

• La funzione di trasformazione delle uscite g() ci permette di calcolare quale valore as-
sumerà l’uscita u(t) a un generico istante (t), conoscendo il valore dello stato e degli ingressi
allo stesso istante.
u(t) = g(s(t), i(t))
Esistono, però, relazioni che per loro natura possono essere espresse solo tramite tabelle di
corrispondenza esplicite, grafici o altre forme, che, in alcuni casi, rendono difficile l’individua-
zione del tipo di relazione matematica esistente.

Sistemi e modelli B1 129


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Definizione di un sistema
Un sistema è completamente descritto quando si conoscono le sue caratteristiche e il suo
comportamento, cioè quando si sa che cosa succede in uscita quando si applicano determi-
nati ingressi.

Formalmente, un sistema è descritto quando si conoscono i seguenti insiemi:


• Ingressi I = {I0, I1, I2, …, IN}
• Uscite U = {U0, U1, U2, …, UP}
• Stati S = {S0, S1, S2, …, SM}
• Funzione di transizione s(t) = f(s(t0), i(t))
• Funzione di trasformazione u(t) = g(s(t), i(t))
Negli esempi di sistema che analizzeremo nel seguito vedremo funzioni di transizione e tra-
sformazione molto semplici espresse in forma tabellare o grafica. Per esempio, nella prossima
Unità di apprendimento esamineremo gli automi.

Studio di un sistema
Un sistema descritto secondo lo schema qui illustrato viene studiato per affrontare tre diversi
tipi di problemi.
• Problema della previsione: noti l’ingresso I e il sistema
I S ?
S, si vuole determinare l’uscita U.

• Problema del controllo: noti l’uscita U e il sistema S,


si vuole conoscere l’ingresso I. In pratica si vuole sapere ? S U
quale ingresso dev’essere applicato per ottenere una de-
terminata uscita.

• Problema dell’identificazione: noti l’ingresso I e l’uscita


I ? U
U, si vuole conoscere il sistema S.

Nei primi due casi conosciamo il comportamento del sistema e quindi la corrispondenza tra in-
gresso e uscita, nell’ultimo caso dobbiamo determinare il comportamento dell’intero sistema,
cioè identificare il sistema.

OSSERVA COME SI FA
1. Caffettiera
Una caffettiera è un sistema composto dai seguenti sottosistemi:
• serbatoio d’acqua
• filtro
• guarnizione
• recipiente superiore
• impugnatura

130 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Ingressi: {I1, I2, I3}


• I1 = Acqua
• I2 = Caffè
• I3 = Fonte di calore
Uscite: {U1, U2}
• U1= Caffè
• U2 =Vapore
Stati: {S1, S2, S3, S4, S5, S6}
• S1 = Vuota
• S2 = Pronta
• S3 = In riscaldamento
• S4 = In ebollizione
• S5 = Da svuotare
• S6 = Da pulire

CAFFETTIERA
I1 = Acqua S1 = Vuota U1 = Caffè
I2 = Caffè S2 = Pronta
U2 = Vapore
I3 = Fonte S3 = In riscaldamento
di calore
...

La funzione di transizione deve indicare come la caffettiera passi dallo stato vuota allo stato pronta, dallo stato pronta
allo stato in riscaldamento e così via.
La funzione di trasformazione deve indicare come fa la caffettiera a produrre in uscita il caffè e il vapore.

In questo sistema non abbiamo considerato particolari


ingressi, chiamati disturbi, che influenzano il “normale” Disturbi
funzionamento della caffettiera. Sono disturbi,
per esempio, la temperatura della stanza dove si sta
preparando il caffè, il vento che potrebbe modificare
la fiamma. Generalmente i disturbi vengono indicati Ingressi S Uscite
nel diagramma a blocchi con una freccia che entra
nel rettangolo dall’alto.

2. Sistema di irrigazione
Consideriamo un impianto di irrigazione automatico per piccoli orti o terrazzi in grado di fornire acqua tramite irrigatori,
nella quantità prefissata dall’utente.
Il sistema è composto dai seguenti elementi:
• ingresso dell’acqua
• tubazioni principali
• pompa per aumentare la pressione dell’acqua
• centralina elettronica di comando
• tubazioni secondarie
• irrigatori

Sistemi e modelli B1 131


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Descrizione del sistema


Questi elementi interagiscono tra loro: infatti
l’acqua, arrivando dalla tubazione principale,
giunge alla pompa che fornisce la pressione ne-
cessaria per portarla in tutte le zone da irrigare.
Dopo essere uscita dalla pompa, l’acqua entra
nella centralina elettronica e questa, in base
alle impostazioni dell’utente, apre la valvola che
permette di portarla agli irrigatori e ottenere il
risultato voluto.
Ingressi: {I1, I2}
• I1 = Acqua
• I2 = Impostazioni della centralina
Uscite: {U1}
• U1 = Umidità del terreno
Stati: {S1, S2, S3}
• S1 = In azione
• S2 = Spento
• S3 = In pausa

IMPIANTO
DI IRRIGAZIONE
I1 = Acqua
U1 = Umidità
S1 = In azione del terreno
I2 = Impostazioni
S2 = Spento
della centralina
S3 = In pausa

La funzione di transizione deve indicare come l’impianto di irrigazione passi dallo stato spento allo stato in azione,
dallo stato in azione allo stato in pausa, e così via.
La funzione di trasformazione deve indicare come fa l’impianto di irrigazione a produrre in uscita un’umidità del terre-
no accettabile per la sopravvivenza delle piante.

3 Classificazione dei sistemi


Dato che i sistemi possono essere osservati sotto differenti punti di vista, non è possibile defini-
re un unico tipo di classificazione da utilizzare in tutti i possibili contesti. In questo paragrafo
vediamo una possibile classificazione.

Sistemi invarianti e sistemi varianti


Un sistema si dice invariante, o stazionario, se risponde sempre nello stesso modo quando
lo sollecitiamo con gli stessi ingressi, in istanti diversi. Se, invece, le risposte sono diverse in
istanti diversi, anche quando il sistema è sollecitato sempre con gli stessi ingressi, allora il
sistema si dice variante o deteriorabile.

132 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per esempio, un missile che viaggia dalla Terra alla Luna consumando com-
bustibile solido è un sistema variante: una caratteristica fisica del dispo-
sitivo, la sua massa, varia nel tempo, e infatti il suo moto varia in quanto la
sua massa diminuisce con il tempo per effetto del consumo del carburante.
Attenzione, però, l’obiettivo è quello di studiarne il moto!
Un sistema distributore di lattine è invariante: infatti un comando dato in
istanti di tempo diversi porta sempre allo stesso risultato.

Sistemi continui e sistemi discreti


Tutte le variabili che descrivono il sistema e le funzioni di trasformazione e
transizione possono essere di natura discreta o continua.

Una variabile è continua quando, scelti due possibili valori diversi tra
loro del suo dominio di esistenza D, la variabile può assumere tutti gli
infiniti valori compresi tra questi due estremi, mentre diremo che è
discreta quando può assumere solo un numero finito di valori.

Per esempio, la variabile peso è continua, infatti una persona non pesa 67 o
68 kg, ma il suo peso può essumere uno qualsiasi degli infiniti valori com-
presi tra 67 e 68; in questo caso consideriamo come dominio di esistenza
[0, 200], supponendo che una persona pesi al massimo 200 kg.
La variabile pulsante è sicuramente discreta, infatti può assumere solo
due valori: acceso o spento; in questo caso abbiamo come dominio di esi-
stenza D = {acceso, spento}.

Un insieme (di variabili) è discreto quando ciascun elemento dell’in-


sieme è discreto, è continuo quando anche un solo elemento è continuo.

Una funzione è continua se la legge che lega la variabile dipendente (y)


a quella indipendente (x) è continua, mentre si dice discreta quando il
suo codominio è discreto.

Per esempio, la funzione f(x) = 2x è continua, mentre la funzione segno non


lo è; infatti, segno(x) è uguale a {+, −} per ogni x.
I sistemi continui e discreti si differenziano ulteriormente come segue.
■ Sistema discreto nell’avanzamento: quando è discreto l’insieme dei
tempi, cioè il sistema può essere analizzato in precisi istanti di tempo.
Una sequenza cinematografica è costituita da tanti fotogrammi acqui-
siti in intervalli di tempo regolari, quindi l’insieme dei tempi è compo-
sto solo da tali istanti. Una vasca che si riempie di liquido è considera-
ta continua nell’avanzamento, in quanto le variabili si evolvono con
continuità e non avrebbe senso analizzarle solo a istanti prestabiliti.
Il sistema calcolatore è discreto nell’avanzamento, poiché tutte le ope-
razioni sono scandite da un clock interno.
■ Sistema discreto nelle sollecitazioni: quando l’insieme dei possibili
valori di ingresso è discreto. Il sistema distributore di lattine è discreto

Sistemi e modelli B1 133


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

nelle sollecitazioni, infatti l’insieme dei possibili valori di


ingresso è composto solo dai valori delle monete che si pos-
sono inserire (1 euro, 2 euro), che sono in numero finito.
■ Sistema discreto nelle interazioni: quando la funzione
di transizione e quella di trasformazione sono discrete. Per
esempio, il sistema orologio digitale è discreto nelle intera-
zioni (lo è la sua funzione di trasformazione), infatti il siste-
ma mostrerà in uscita una serie di valori discreti, per esem-
pio uno ogni secondo. Un orologio classico a lancette, invece,
può essere considerato continuo nelle interazioni se pen-
siamo che la lancetta passa con continuità dalla posizione
relativa a un secondo a quella relativa all’altro secondo; il
codominio della funzione di trasformazione è l’intervallo
continuo [0, 59]. Lo stesso orologio, tuttavia, potrebbe esse-
re considerato discreto se pensiamo che la lancetta avanza
di uno scatto ogni secondo: è discreto l’insieme [0, 1, 2, 3, 4,
5, ... 59]. Il sistema barra sottoposta a calore è continuo nelle
interazioni, poiché la quantità di calore con cui si sollecita
la barra varia in modo continuo e non può passare istanta-
neamente da un valore discreto a un altro.

Sistemi dinamici e sistemi statici


Un sistema si dice dinamico quando la sua configurazione (ossia l’insieme di variabili che
descrivono lo stato del sistema) varia nel tempo; si dice statico in caso contrario.

Per esempio, le caratteristiche di un sasso rimangono invariate nel tempo. Questo tuttavia non
è vero se si considera come tempo il passare dei millenni, cioè se si ragiona su scala geologica.
Anche questo dipende dallo scopo dell’analisi del sistema.

Sistemi deterministici e sistemi stocastici


Un sistema si dice deterministico quando le funzioni di
transizione e di trasformazione sono definite in modo da
permettere la determinazione del valore dello stato e delle
uscite in modo univoco. Si dice stocastico quando una delle
due funzioni è regolata da legami di natura probabilistica.

Per esempio, il sistema di irrigazione visto in precedenza è sicu-


ramente deterministico: ogni volta che si preme l’interruttore
si accende uno spruzzatore, esclusi ovviamente i casi di mal
funzionamento.
La luminosità di una stanza (misurata in Lumen) alle ore 10 di
ogni giorno sarà sicuramente stocastica, perché la quantità
di luce dipende dalle condizioni atmosferiche, che sono di tipo
probabilistico.

134 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sistemi combinatori e sistemi sequenziali


Un sistema si dice combinatorio se le uscite in un certo istante dipendono solo dai valori
presenti agli ingressi nel medesimo istante. Si dice sequenziale quando le uscite dipendono
non solo dai valori degli ingressi in un istante, ma anche dai valori assunti in precedenza da-
gli ingressi. Si può anche dire che un sistema in cui non è necessario introdurre la variabile di
stato (senza memoria, e quindi anche senza funzione di transizione) è di tipo combinatorio.

Come esempio di sistema combinatorio pensiamo a un dispositivo che esegue


le quattro operazioni aritmetiche: si digitano i due numeri e il dispositivo ne
calcola la somma o la differenza, o esegue un’altra operazione. L’uscita di tale
dispositivo dipende unicamente dagli ingressi e dalla funzione scelta, non
dipende sicuramente dai valori degli ingressi delle operazioni precedenti.
È sequenziale il sistema distributore automatico di bibite, in cui le uscite
a seguito dell’inserimento di una moneta dipendono dalle monete inse-
rite precedentemente.

ORA TOCCA A TE
■ Individua i vari sottosistemi e le grandezze in gioco per i seguenti sistemi.
• Controllo della temperatura in una stanza
Supponi di voler mantenere la temperatura di una stanza costante a 19°. Un termostato controlla la temperatura nella
stanza e comanda l’afflusso di acqua ai caloriferi della stanza.
• Sistema di puntamento di un cannone, a catena aperta
Calcola a priori le coordinate dell’obiettivo, quindi sia la direzione sia l’alzata del cannone (impostazioni).
Calcola gli effetti del vento o di altri agenti esterni e poi inizia a sparare.
• Sistema di puntamento di un cannone, a catena chiusa
Calcola a priori le coordinate dell’obiettivo, quindi sia la direzione sia l’alzata del cannone. Calcola gli effetti del vento
o di altri agenti esterni e poi inizia a sparare. Dopo il primo colpo si valuta la distanza dell’obiettivo e in base a questa
vengono valutate le impostazioni del cannone.
• Orologio ad acqua
Quando osservi la figura, noterai che per avere uno spo-
stamento costante e uniforme sulla scala temporale, oc-
corre che la portata in ingresso al serbatoio principale sia
costante. Per far questo il livello dell’acqua del serbatoio
di regolazione dev’essere mantenuto costante. Questo è
ottenuto attraverso l’uso di una valvola fluttuante che fun-
ziona, in sostanza, da sistema retroazionato. L’acqua entra
nel serbatoio di regolazione da una fonte esterna, supponi Serbatoio
per semplicità da un altro serbatoio detto serbatoio di ri- di rifornimento Galleggiante
fornimento, e arriva al serbatoio di regolazione attraverso Scala
un piccolo tubo di afflusso alla fine del quale vi è un galleg- temporale
giante sferico che funge da elemento regolante: quando il
livello dell’acqua si abbassa, con esso scende il galleggian-
te che apre il tubo di afflusso facendo aumentare la portata Serbatoio
d’acqua in ingresso al serbatoio di regolazione. Al contra- di regolazione
rio, quando aumenta il livello nel serbatoio di regolazione
si ha un conseguente innalzamento anche del galleggiante,
che provoca una diminuzione della portata dell’acqua in
ingresso. Il risultato è quello di avere il livello del serbatoio Serbatoio
di regolazione costante, a meno di piccole oscillazioni. principale

Sistemi e modelli B1 135


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

4 Rappresentazione dei sistemi: i modelli


Che cos'è un modello
I sistemi analizzati finora sono composti da un numero limitato di
elementi e hanno funzioni di transizione e di trasformazione molto Semplificare la realtà usando
un modello è utile non solo
semplici. Nella realtà, però, i sistemi sono più complessi e le relazio- per il risparmio di tempo
ni tra i componenti interni spesso non sono così intuitive. Inoltre, o di costi, ma ancor di più
abbiamo bisogno di sollecitare il sistema per studiarne il comporta- è indispensabile perché non
mento, e spesso è difficile far questo sul sistema reale. Nella pratica, siamo in grado di gestire entità
troppo complesse.
si sostituisce il sistema reale con una sua rappresentazione integra- Tener conto di tutti i fattori che
le, detta modello, che mette in evidenza solo gli elementi che si ri- influenzano un sistema vuole
tengono utili allo scopo dell’analisi e ci permette di eseguire tutte le dire collegarlo a una catena
prove sul sistema senza intervenire fisicamente su esso. infinita di altri fenomeni che
a loro volta sono collegati
ad altre catene di fenomeni.
Dato un sistema reale e un problema da risolvere su esso (studia- Vorrebbe dire cioè che ogni
re il sistema per un determinato aspetto), definiamo modello, re- volta che si vuole studiare
un fatto si dovrebbe conoscere
lativo al problema in esame, la rappresentazione semplificata del l’intero universo. Il che è
sistema che evidenzi tutti gli elementi utili alla risoluzione del matematicamente dimostrato
problema e ci permetta di riprodurre e valutare le funzioni svolte che non sia concesso
dal sistema originale senza intervenire direttamente su esso. all’uomo…

Il concetto di astrazione
Parlando di modelli, siamo portati inevi-
tabilmente a parlare di astrazione. Tale
concetto è molto comune in informatica e
possiamo riassumerlo come segue.

Il processo di astrazione consiste


nell’estrapolare da tutte le informazio-
ni relative a una realtà solo quelle utili
per risolvere il problema, sostituendo,
successivamente, gli oggetti reali os-
servati con simboli. Inoltre vengono
tralasciati i dettagli implementativi dei
singoli oggetti e si analizza la realtà nel
suo insieme.

Dato un sistema, non esiste, per come è stato definito,


un modello che risulti valido in qualsiasi contesto,
altrimenti modello e sistema potrebbero essere visti
come la stessa cosa, e il primo non potrebbe essere altro
che la copia conforme del secondo.
Per un sistema, quindi, possono esistere diversi modelli
che lo rappresentano.

136 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Tipi di modelli
I modelli possono essere classificati in base al contesto in cui devono risultare simili al si-
stema originale: essenzialmente si dividono in fisici e astratti.

• Fisici o reali sono i modelli la cui struttura è costituita da elementi del mondo fisico.
• Astratti o simbolici sono i modelli che consentono di rappresentare le caratteristiche del-
la realtà analizzata servendoci di un linguaggio simbolico (per esempio, il linguaggio ma-
tematico, il linguaggio grafico, il linguaggio di programmazione).
A loro volta, i modelli fisici si possono suddividere in iconici e analogici, mentre tra quelli
astratti si possono individuare i modelli matematici, quelli grafici e quelli logici.
Possiamo schematizzare tutto ciò con la seguente figura:

MODELLI

Fisici Astratti

Iconici Analogici Grafici Matematici Logici

Analizzeremo ogni tipo di modello nelle pagine che seguono.

Sistemi e modelli B1 137


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

Classificazione dei
MODELLI
MODELLI
Un MODELLO è una rappresentazione semplificata di un sistema con tutti
i dettagli necessari alla risoluzione di un problema. A seconda del contesto
all’interno del quale cercano di rappresentare il sistema originale, i modelli
possono essere considerati fisici o reali oppure astratti o simbolici.

Fisici o reali
Quando la loro struttura è costituita
da elementi del mondo fisico.

Iconici Analogici
Tutte le riproduzioni di sistemi in cui Riproduzioni in cui vengono mantenute
una o più grandezze originali sono state inalterate le relazioni tra gli elementi
modificate proporzionalmente, al fine del sistema, ma in cui le grandezze
di semplificarne lo studio. fisiche originali vengono sostituite
Un esempio tipico sono i modellini in scala: (almeno parzialmente)
se la scala è 1:1 si parla di modello naturale, con altre dal comportamento analogo.
mentre si parlerà di modelli ridotti quando Un esempio di modello analogico è
la scala è minore di 1 e di modelli espansi il barometro metallico, un cilindro con
quando è maggiore di 1. una base mobile in cui è stato praticato
Difficilmente il fattore di scala il vuoto. La pressione comprime il cilindro
è lo stesso per tutte e i movimenti della parete mobile vengono
le grandezze: per trasmessi a un indice che visualizza
esempio, il modellino la pressione su una scala graduata.
di un elefante La grandezza reale (pressione
potrà riprodurne atmosferica) viene
fedelmente le rappresentata dalla
dimensioni, ma non rotazione dell’indice,
il peso. In questi che è di natura diversa;
casi, il modello ma il comportamento
si dice simile. è analogo.

138 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Matematici
Sono i modelli in cui il sistema è
rappresentato dalle leggi matematiche
che lo regolano.
Ne sono stati teorizzati di molti tipi, ma
i più usati nello studio dei sistemi sono:
Astratti • l’insiemistica, che permette di

o simbolici
rappresentare le mutue relazioni tra
gli insiemi e le rispettive gerarchie
di appartenenza;
Quando rappresentano le • l’algebra, che racchiude tutte le regole
caratteristiche della realtà fondamentali per il calcolo;
analizzata servendosi • l’analisi funzionale, che consente
di un linguaggio simbolico. di rappresentare attraverso funzioni
le mutue relazioni tra gli elementi
di un sistema e di studiarne
il comportamento nel tempo.

Grafici
Sono i modelli che rappresentano
il sistema a cui si riferiscono con
Logici particolari codifiche simboliche
(tipicamente forme e disegni).
Detti anche algoritmici, questi Sono impiegati più che altro per scopi
modelli sono insiemi di regole logico- educativi ed esplicativi, visto che
funzionali che permettono di emulare sfruttano pienamente tutta la capacità
integralmente il sistema originale. espressiva insita nella comunicazione
Un esempio sono le simulazioni visiva. Questa stessa infografica è un
di sistemi reali tramite linguaggi esempio di modello grafico, così come
di programmazione o altri strumenti gli schemi a base di frecce e i riassunti
informatici. che fai mentre studi.

Sistemi e modelli B1 139


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME
SISTEMI E MODELLI
AUDIO

I sistemi gli stessi ingressi, in istanti diversi rispondono


Un sistema è un insieme di elementi che sempre nello stesso modo, varianti quando,
interagiscono tra di loro per funzionare come sollecitati anche con gli stessi ingressi, rispondono
un unico elemento. in istanti diversi in modi diversi; continui quando
Un sottosistema è un sistema che fa parte di un tutte le variabili e le funzioni di trasformazione
sistema principale, concorrendo a raggiungerne e transizione che li descrivono sono di natura
l’obiettivo. continua e discreti quando tutte le variabili e le
La teoria dei sistemi ritiene che un sistema funzioni che li descrivono sono di natura discreta;
sia definito quando sono noti: gli obiettivi dinamici quando l’insieme di variabili che ne
da raggiungere, le parti o gli elementi che definiscono lo stato varia nel tempo e statici in
lo compongono, le interazioni con il mondo caso contrario; deterministici quando le funzioni
esterno, espresse in termini di ingressi e uscite, di transizione e di trasformazione permettono
le relazioni che descrivono i rapporti esistenti tra di determinare il valore dello stato e delle uscite
i vari componenti. in modo univoco e stocastici quando una delle
funzioni è regolata da legami probabilistici;
Caratteristiche e comportamento combinatori quando le uscite in un certo istante
di un sistema dipendono solo dai valori presenti agli ingressi
Una grandezza molto importante di un sistema nel medesimo istante e sequenziali quando
è il suo stato interno. Lo stato interno rappresenta le uscite dipendono non solo dai valori degli
le proprietà intrinseche o caratteristiche di un ingressi in un istante, ma anche dai valori assunti
sistema. Si tratta dell’insieme delle informazioni in precedenza dagli ingressi.
necessarie e sufficienti per descrivere in modo
esauriente le condizioni in cui si trova il sistema Rappresentazione dei sistemi: i modelli
in un qualsiasi istante. Il comportamento di un Dato un sistema reale e un problema da risolvere
sistema è descritto quando sono individuate le su di esso, è possibile definire un modello.
leggi o funzioni che legano gli ingressi alle uscite Un modello è la rappresentazione semplificata
del sistema reale che evidenzia tutti gli elementi
e allo stato del sistema.
utili alla risoluzione del problema.
Un sistema è completamente descritto
I modelli si dividono in fisici o reali e astratti
quando se ne conoscono lo stato interno
o simbolici. Sono fisici o reali quando la loro
e il comportamento.
struttura è costituita da elementi del mondo fisico
Classificazione dei sistemi (e in questo caso possono essere iconici o
I sistemi si classificano in invarianti e varianti, analogici); sono astratti o simbolici quando
continui e discreti, dinamici e statici, deterministici consentono di rappresentare le caratteristiche
e stocastici, combinatori e sequenziali. della realtà analizzata servendosi di un linguaggio
I sistemi sono invarianti quando, sollecitati con simbolico (grafico, matematico o logico).

140 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B1
MAPPA
MODIFICABILE

SISTEMI

caratterizzati da classificati in rappresentati da

stato interno MODELLI

comportamento

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
1) Da quali due aspetti sono caratterizzati e descritti completamente i sistemi?
2) Con che cosa sono rappresentati i sistemi?
3) In quali due tipi principali sono distinguibili i modelli?
4) In quali due tipi sono distinguibili i modelli fisici?
5) In quali tre tipi sono distinguibili i modelli astratti o simbolici?

Sistemi e modelli B1 141


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo B1
1. Che cos’è un sistema? 15. Stabilisci quali delle seguenti affermazioni sono
vere e quali false.
2. Che cosa rappresenta lo stato di un sistema? a Un sottosistema è sempre un sistema. V F
3. Perché si ricorre a un modello di un sistema? b Un sensore è un trasduttore. V F
c Un amplificatore è un attuatore. V F
4. A che cosa servono la funzione di trasformazione d Lo stato di un sistema può essere V F
e quella di transizione? paragonato alla memoria del sistema.

5. Qual è l’obiettivo dello studio di un sistema? 16. Una tabella che descrive un sistema
è un modello di tipo:
6. Quando una variabile si dice discreta?
A matematico
7. Quando un sistema si dice discreto nelle B iconico
sollecitazioni? C analogico
D logico
8. Quando un sistema si dice discreto nelle
interazioni? 17. Un programma scritto in un linguaggio
di programmazione è un modello di tipo:
9. Nello studio di un sistema, in che cosa consiste A matematico
il problema della previsione?
B iconico
10. Che differenza c’è tra ingressi e disturbi? C grafico
D logico
11. A che cosa serve un modello?
18. Considera una nuova classificazione: sistema
12. Classifica i seguenti sistemi per tipo: naturale, artificiale, misto. Quali dei seguenti
sistemi sono naturali, quali artificiali e quali
A la roulette misti?
B un orologio A Lettore CD
C un aereo B Flipper
D una lavatrice C Sistema di equazioni di primo grado
E una diga D Essere umano
F un frigorifero E Sistema solare
G un semaforo F Sistema nervoso
H una bicicletta
I una calcolatrice tascabile 19. Un dipinto in un museo è considerato da un
visitatore come un sistema statico, mentre per
L un libro di testo l’addetto al suo restauro è un sistema dinamico.
M una cucina a gas Perché?
N un autobus nell’ora di punta
O un impianto antifurto 20. La piantina in scala di un appartamento
è un modello:
P un impianto di riscaldamento per la casa
A grafico
13. Che tipo di sistema è un distributore automatico B matematico
di bibite? C iconico
D logico
14. Che tipo di modello è una costruzione
in mattoncini LEGO che rappresenta
un’abitazione?

142 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


21. Un aeroplano in volo è un sistema dinamico?
Perché? e le tue COMPETENZE
27. •• Individua i vari sottosistemi e le grandezze
in gioco per i seguenti sistemi.
Servosterzo
Il servosterzo di un’automobile è un
servomeccanismo. Il comando è la posizione
angolare del volante. Una piccola coppia applicata
al volante viene amplificata idraulicamente
producendo una forza sufficiente a modificare
l’uscita, ovvero la posizione angolare delle
ruote anteriori. La retroazione (di cui dovresti
procurarti le informazioni) negativa è necessaria
22. Considera il sistema “vasca che si riempie per far tornare la valvola di controllo nella sua
di liquido”. È un sistema discreto o continuo posizione di riposo in modo da ridurre a zero
nell’avanzamento? Discreto o continuo nelle la coppia dell’amplificatore idraulico quando si
sollecitazioni? Discreto o continuo nelle è raggiunta la posizione delle ruote desiderata.
interazioni? Per diminuire la sensibilità del sistema, vi è un
rapporto di riduzione nella trasmissione tra la
23. Un sistema si dice deterministico quando: rotazione del volante e l’albero guida collegato
alla valvola di controllo, cioè il volante deve avere
A è possibile avere le uscite in funzione dello stato ampi spostamenti angolari per effettuare sterzate
B ha sempre valori in uscita ridotte.
C non ha sempre valori in uscita Scala mobile
D è possibile stabilire il suo stato e le sue uscite La funzione svolta dal sistema scala mobile
in modo univoco è quella di trasportare oggetti e persone
da un piano all’altro.
24. Il modellino di un’automobile nella galleria
del vento è di tipo:
A analogico
B iconico
C in scala
D discreto

25. Che tipo di modello è quello rappresentato


in figura?

Letto
Soggiorno
28. •• Individua tra i seguenti il sistema
e i suoi sottosistemi:
Bagno
A atomi di carbonio, proteina, atomi di idrogeno,
atomi di ossigeno, atomi di azoto
B persone, edifici, economia, macchine, impianti,
26. Che tipo di modello è quello rappresentato allevamenti
di seguito?
C Sole, pianeti, sistema solare, comete, asteroidi,


⎪6 y − 3x = 0 detriti spaziali


⎩2x + 4 y = 8
⎪ D persone, comunicazione, team di lavoro, messaggi

Sistemi e modelli B1 143


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

29. •• Il seguente è un modello matematico- 31. •• Crea un opportuno modello di un’aula


insiemistico che rappresenta un sistema che permetta all’ufficio tecnico della tua scuola
“famiglia” composto da tre persone. di chiedere a un imbianchino un preventivo
Posiziona le seguenti relazioni nel posto giusto. per la tinteggiatura delle pareti, delle porte
• Relazione madre-figlio e delle finestre.
• Relazione madre-padre
• Relazione padre-figlio 32. •• Crea un opportuno modello di un’aula
• Relazione familiare che permetta a un professore di riconoscere
• Contesto culturale e naturale gli studenti durante la lezione.

33. ••• Crea un modello di un’aula che possa


essere utilizzato da un elettricista per
......................................... .........................................
l’installazione delle prese elettriche necessarie a
......................................... .........................................
trasformare l’aula in un laboratorio di informatica.

34. ••• Crea un modello per analizzare il sistema


studente in modo da valutarne il comportamento:
Madre • durante una lezione
• durante un’interrogazione
Padre 35. ••• Considera il sistema disponibilità degli
articoli in un negozio. Gli articoli vengono venduti
e acquistati dal gestore del negozio. Occorre
Figlio conoscere la quantità presente in negozio per
ogni articolo.
• Individua le grandezze in gioco (ingressi, uscite,
e così via).
......................................... ......................................... • Descrivi il sistema con un semplice diagramma
......................................... ......................................... a blocchi.
• Utilizza un modello a tua scelta
per rappresentare il sistema.

......................................... 36. ••• Considera il sistema risultati delle partite


......................................... del campionato di calcio. Di ogni partita, oltre
al risultato, occorre conoscere i marcatori.
• Individua le grandezze in gioco (ingressi, uscite,
e così via).
• Descrivi il sistema con un semplice diagramma
30. •• Considera i seguenti sistemi e individua gli a blocchi.
ingressi, le uscite, gli eventuali stati, gli eventuali • Utilizza un modello a tua scelta
disturbi, gli elementi o sottosistemi componenti, per rappresentare il sistema.
e così via.
A Sistema ottico microscopio
B Sistema ottico cannocchiale
C Sistema di governo: organizzazione in grado
di governare uno Stato
D Sistema difensivo: sistema di fortificazioni
in grado di difendere una città nel Medioevo
E Sistema cardio-vascolare umano: composto
dai sottosistemi nervosi, arteriosi e dal muscolo
cardiaco (il cuore) in grado di permettere la
circolazione del sangue all’interno del corpo

144 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B2 Teoria degli automi

IMPARERAI…

A che cosa servono gli automi Come riconoscere un automa Come rappresentare un automa

1 Che cosa sono gli automi


L’automa è un modello di calcolo molto semplice da utilizzare, adat-
to a descrivere un gran numero di problemi di varia natura. Possiamo Sono esempi di
automi: la lavatrice, la
pensarlo come un dispositivo che legge una stringa di input e la elabora lavastoviglie, il frullatore,
secondo un banale meccanismo di elaborazione e una memoria limita- il bancomat, i sistemi di
ta, producendo delle uscite. Il tutto è rappresentabile graficamente in controllo degli ascensori,
i distributori automatici di
forma molto intuitiva e immediata.
bevande e di carburante,
e anche oggetti più
astratti come riconoscitori
AUTOMA di sequenze, automi
Ingressi Uscite traduttori, decodificatori,
Stati interni
e così via.

Per quanto detto, un automa è un sistema. Possiamo quindi introdurre la seguente definizione.

Un automa è un sistema con le seguenti caratteristiche:


• dinamico: evolve nel tempo;
• invariante: la risposta del sistema a una sollecitazione è la stessa indipendentemente dall’i-
stante di tempo in cui è applicata;
• discreto nell’avanzamento: quando è discreto l’insieme dei tempi, cioè il sistema può essere
analizzato in precisi istanti di tempo, e nelle interazioni (le funzioni di transizione e tra-
sformazione sono discrete);
• gli insiemi degli ingressi e delle uscite sono composti da un numero finito di elementi.

2 Gli automi a stati finiti


L'automa a stati finiti è un tipo di automa che permette di descrivere con estrema precisione
e in maniera formale il comportamento di molti sistemi.

Un automa a stati finiti (ASF) è un automa in cui anche l’insieme degli stati è composto da
un numero finito di elementi.

Teoria degli automi B2 145


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per descrivere un automa a stati finiti A, utilizziamo un mo-


Il temine automa può essere usato
dello matematico composto dai seguenti elementi: con significati diversi. Può essere usato
• I l’insieme degli ingressi (o input) che è in grado di leg- come sinonimo di robot o di androide,
ma può anche essere usato per indicare
gere; un meccanismo costruito per simulare
• U l’insieme delle uscite (o output) che può produrre; un uomo o un animale.
• S l’insieme finito degli stati interni in cui può trovarsi; Nel linguaggio quotidiano, automa è anche
un individuo privo di personalità e in grado
• f la funzione di transizione che fa passare da uno stato
di agire solo in maniera meccanica.
al successivo; Il termine automa deriva dal greco
• g la funzione di trasformazione che determina il valo- automatos, che significa spontaneo,
re delle uscite. semovente.
Il primo a utilizzarlo pare sia stato
Aristotele per indicare le marionette.
Pertanto:
In età ellenistica, comunque, per
A = {I, U, S, f, g} automi si intendevano i primi congegni
meccanici e idraulici dotati di movimento
indipendente; in termini più generali, gli
Nella definizione abbiamo detto che l’automa è un sistema automi venivano concepiti come giocattoli
o come strumenti utili per le dimostrazioni
discreto nell’avanzamento. In effetti, in questo modello di scientifiche.
calcolo le elaborazioni sono scandite da istanti di tempo.
Indicando con:
• t un qualsiasi istante di tempo in cui stiamo analizzando l’automa;
• s(t) lo stato all’istante t;
• s(t + 1) lo stato all’istante successivo a t
possiamo esprimere matematicamente la funzione di transizione nel seguente modo:
s(t + 1) = f(s(t), i(t))
In pratica, lo stato successivo s(t+1), vale a dire all’istante t + 1, dipende dallo stato attuale s(t),
cioè dallo stato all’istante t, e dagli ingressi in tale istante i(t).
Analogamente, possiamo esprimere la funzione di trasformazione nel seguente modo:
u(t) = g(s(t), i(t))
Le uscite all’istante t: u(t), dipendono dallo stato attuale s(t), cioè lo stato all’istante t, e dagli
ingressi in tale istante i(t).

3 Come si rappresentano gli automi


Un automa a stati finiti può essere rappresentato:

Moneta2/Moneta2
Moneta1/Niente
■ mediante un diagramma degli stati
(modello grafico); S1 Moneta1/Lattina S2

Moneta2/Lattina

■ mediante una tabella di transizione Ingressi


Moneta
(modello matematico). Stati
S1 S2/Niente
S2 S1/Lattina

146 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

4 Il diagramma degli stati


Il diagramma degli stati è una rappresentazione grafica di un automa costituita da bolle
e archi.

• Le bolle o nodi rappresentano gli stati dell’automa. All’interno della bolla si scrive il nome
dello stato corrispondente.

S1 Uno stato dell’automa

• Gli archi rappresentano le relazioni di passaggio da uno stato all’altro. L’etichetta sopra
ogni arco ha la forma seguente:
Input/Output

cioè è formata dall’input che genera la transizione e dall’output che viene rilasciato a segui-
to della transizione.
Per esempio, la transizione mostrata qui con l’etichetta Moneta/Lattina:

Moneta/Lattina
S1 S2

significa che dallo stato S2, quando si riceve in input una moneta, si transita allo stato S1
emettendo in uscita una lattina.

• Lo stato iniziale è quello dal quale l’automa inizia a ricevere gli ingressi e a descrivere il suo
comportamento (elaborazione o esecuzione). È rappresentato da un nodo con una freccia
entrante:

S0

• Gli stati finali sono particolari stati in cui si viene a trovare l’automa al termine di un’ese-
cuzione che ha avuto successo.
Sono individuati da una bolla con un doppio circolo e vengono indicati solo negli automi per
cui ciò ha significato.

Sf

In alcuni automi riconoscitori, quando si termina l’analisi della successione di simboli in


ingresso e lo stato in cui ci si trova è finale, ciò significa che il riconoscimento ha avuto
successo.
Se l’automa termina l’analisi della successione dei simboli in ingresso e lo stato in cui si
trova non è finale, il riconoscimento non ha avuto successo.

Il diagramma degli stati quindi è una rappresentazione grafica sia della funzione di transi-
zione f sia della funzione di trasformazione g.

Teoria degli automi B2 147


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
■ Automa distributore automatico di bibite – Prima versione
Descrizione dell’automa
L’automa deve emettere in uscita una lattina di aranciata dopo che sono state inserite due monete da 1 euro. L’au-
toma funziona solo con monete da 1 euro.

Insiemi caratteristici dell’automa


I = {Moneta}
Moneta = moneta da 1 euro
U = {Lattina}
Lattina = lattina di aranciata
S = {S1, S2}
S1 = (stato iniziale) si è in attesa dell’inserimento di una prima moneta
S2 = si è in attesa dell’inserimento di una seconda moneta

Stato iniziale Ingresso/Uscita Stato normale

Moneta/Niente

S1 S2
Moneta/Lattina

Transizione di stato

Analisi del diagramma


Nell’arco che va dallo stato S1 (attesa prima moneta) allo stato S2 (attesa seconda moneta), la dicitura “Moneta/
Niente” indica che, in corrispondenza dell’input “Moneta” (inserimento prima moneta), è fornita l’uscita nulla (nes-
suna lattina).
Nell’arco che va dallo stato S2 (attesa seconda moneta) allo stato S1 (attesa prima moneta), la dicitura “Moneta/
Lattina” indica che, in corrispondenza dell’input “Moneta” (inserimento seconda moneta), è fornita l’uscita “Lattina”
(cioè, viene erogata la lattina). Lo stato S1 è lo stato iniziale: da esso, infatti, inizia l’elaborazione.

Gli stati di memoria


Gli stati di un automa rappresentano i suoi stati di memoria. Un automa si trova in uno o in
un altro stato a seconda di ciò che è successo in precedenza. In base allo stato in cui si trova
e all’input che riceve, l’automa stabilisce il suo comportamento.

Nel caso dell’automa distributore, ci troviamo nello stato “attesa seconda moneta” solo dopo
che si è verificato l’evento “introduzione di una moneta da 1 euro”; passiamo a un nuovo stato,
eventualmente, fornendo un output. Nell’esempio, dallo stato “attesa seconda moneta” passia-
mo allo stato “attesa prima moneta”, fornendo in output una lattina.

148 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
■ Automa ascensore – Consideriamo l’esempio dell’automa ascensore per individuare meglio i passi da seguire
per arrivare alla costruzione del diagramma degli stati.
Le fasi sono:
• 1° Passo [Analisi delle specifiche verbali e/o scritte]
• 2° Passo [Formalizzazione]
• 3° Passo [Sintesi con diagramma degli stati]

Descrizione dell’automa
Progettare la logica di funzionamento di un sistema capace di controllare un ascensore per una
ALL
palazzina di tre piani, con pulsantiera mostrata a lato.

1° Passo [Analisi delle specifiche verbali e/o scritte] 2


In questa fase si analizzano attentamente le specifiche verbali che descrivono il progetto cercan-
do di trarre quante più possibili informazioni utili per il successivo passo della formalizzazione.
Dalle specifiche si può dedurre quanto segue.
1
Insiemi caratteristici dell’automa
Ingressi
T
Saranno quattro, quanti sono i pulsanti sulla pulsantiera dell’ascensore.
Stati
Saranno tanti quanti sono i piani su cui può sostare l’ascensore.
Uscite
Occorreranno delle uscite per comandare la salita o la discesa ai piani. Occorrerà una segnalazione in caso di allar-
me (ma non analizzeremo questo ultimo aspetto).

2° Passo [Formalizzazione]
In questa fase si procede a codificare ingressi, uscite e stati assegnando loro nomi più concisi.

Insiemi caratteristici dell’automa


Ingressi
1P Pulsante premuto per salire al primo piano.
2P Pulsante premuto per salire al secondo piano.
T Pulsante premuto per portarsi al piano terra.
ALL Pulsante di allarme premuto per gestire una situazione anomala (ma non analizzeremo quest’ultimo aspetto).
Uscite
“Primo” Vai al primo piano.
“Secondo” Vai al secondo piano.
“Terra” Vai al piano terra.
“SOS” Segnala condizione anomala.
Stati
S0 Piano terra
S1 Primo piano
S2 Secondo piano

3° Passo [Sintesi con diagramma degli stati]


Cominciamo a progettare il diagramma degli stati dell’automa partendo dallo stato iniziale, S0.

S0

Teoria degli automi B2 149


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Analisi del diagramma


Analizziamo il caso in cui venga premuto il pulsante 1P. In questo caso l’ascensore dovrà recarsi al primo piano e
dovrà emettere in uscita il segnale “Primo”.

1P/“Primo” S0

S1

Nel caso in cui venga premuto il pulsante 2P, si avrà un comportamento analogo al precedente così come indicato
di seguito.

1P/“Primo” S0 2P/“Secondo”

S1 S2

A questo punto, lasciando da parte per il momento il pulsante ALL, non ci resta che il pulsante T per completare la
descrizione del comportamento ammissibile dallo stato S0; in questo caso, il comando richiesto sarà ininfluente e
quindi l’ascensore non farà altro che rimanere al piano terra. Nella rappresentazione grafica, questo è indicato con
un arco che partirà dallo stato S0 e ritornerà sempre in S0 con segnale d’uscita “Terra”.

T/“Terra”

1P/“Primo” S0 2P/“Secondo”

S1 S2

Terminata l’analisi relativa allo stato S0, possiamo completare il grafo procedendo allo stesso modo sia per S1 che
per S2.
T/“Terra”

1P/“Primo” S0 2P/“Secondo”
1P/“Primo”

S1 T/“Terra” S2

2P/“Secondo”

Quindi:
T/“Terra”
2P/“Secondo”
1P/“Primo” S0 2P/“Secondo”
1P/“Primo”

S1 T/“Terra” S2
T/“Terra”
2P/“Secondo”

1P/“Primo”

150 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

5 Le tabelle di transizione
Un’altra modalità di rappresentazione degli automi, del tutto equivalente ai diagrammi di
transizione, è quella che utilizza la tabella di transizione.

La tabella di transizione è una tabella con un numero di righe pari al numero degli stati
dell’automa e un numero di colonne pari al numero dei diversi ingressi. Le celle contengono
una coppia formata dallo stato successivo e dall’uscita da emettere.

Per esempio, consideriamo la tabella relativa a quattro stati e tre ingressi, e in particolare la
riga relativa allo stato S3 e la colonna relativa all’ingresso I2. La cella situata all’incrocio tra
tale riga e tale colonna contiene lo stato successivo e l’uscita quando nello stato S3 si avrà l’in-
gresso I2.
Ingressi
I1 I2 I3
Stati
S1
S2
S3 Stato successivo/
Uscita
S4

Consideriamo l’automa del distributore di bibite analizzato nelle lezioni precedenti. La tabella
di transizione che lo descrive è formata da due righe, poiché abbiamo due stati, e da una sola
colonna, poiché abbiamo un solo ingresso.
Ingressi
Moneta
Stati
S1 S2/Niente
S2 S1/Lattina

La prima riga dice che, quando ci si trova nello stato S1 (attesa prima moneta) e viene inserita
una moneta da 1 euro (Moneta) si passa allo stato S2 senza emettere in uscita una lattina.
Quando, invece, ci si trova nello stato S2 (attesa seconda moneta) e viene inserita una moneta
da 1 euro (Moneta), si passa allo stato iniziale S1 e questa volta si emette in uscita una lattina
di aranciata.
Ora apportiamo una piccola modifica all’automa distributore appena descritto, analizzando
questa seconda versione.

Teoria degli automi B2 151


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
■ Automa distributore automatico di bibite – Seconda versione
Descrizione dell’automa
L’automa deve emettere in uscita una lattina di aranciata dopo che sono state inserite due monete da 1 euro oppure
una da 2 euro. L’automa funziona solo con monete da 1 euro e da 2 euro e non fornisce resto.

Insiemi caratteristici dell’automa


I = {Moneta1, Moneta2}
Moneta1 = è stata inserita una moneta da 1 euro S = {S1, S2}
Moneta2 = è stata inserita una moneta da 2 euro S1 = (stato iniziale) si è in attesa dell’inserimento
di una prima moneta
U = {Lattina, Moneta2}
S2 = si è in attesa dell’inserimento di una seconda
Lattina = viene restituita una lattina di aranciata
moneta
Moneta2 = viene restituita una moneta da 2 euro

Diagramma degli stati


Moneta2/Moneta2
Moneta1/Niente

S1 Moneta1/Lattina S2

Moneta2/Lattina

Analisi del diagramma


Questa volta, rispetto all’esempio precedente, vi sono archi che tornano allo stesso stato di partenza. Nello stato
S1 “attesa prima moneta”, per esempio, quando si inserisce direttamente una moneta da 2 euro si rimane nello
stesso stato e si emette la lattina.
Nello stato S2 “attesa seconda moneta”, quando si inserisce una moneta da 2 euro la si restituisce, poiché è stata
già inserita una moneta da 1 euro e si rimane nello stesso stato. Ovviamente, se non si hanno altre monete da 1
euro il sistema non dà resto e rimane in questo stato senza restituire alcuna lattina.
In genere, a questo punto, si percuote violentemente il distributore sperando che rilasci comunque la tanto sospirata
lattina. Da notare che Moneta2 è presente anche nell’insieme U.
La tabella di transizione che descrive l’automa è la seguente:

Ingressi
Moneta1 Moneta2
Stati
S1 S2/Niente S1/Lattina
S2 S1/Lattina S2/Moneta2

La seconda riga, per esempio, dice che, quando ci si trova nello stato S2 (attesa seconda moneta):
• se viene inserita una moneta da 1 euro (Moneta1) si passa allo stato S1 e si emette in uscita una lattina;
• se viene inserita una moneta da 2 euro, la si restituisce e si rimane nello stesso stato in attesa di una moneta
da 1 euro.

152 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

6 Gli automi riconoscitori


Una classe di automi particolarmente importante è quella degli automi riconoscitori.

Gli automi riconoscitori sono quelli in grado di riconoscere la presenza di una particolare
sequenza di simboli tra tutti quelli che si avvicendano in ingresso.

Tra gli automi riconoscitori, molto importanti sono quelli in grado di riconoscere se una strin-
ga fa parte o meno di un determinato linguaggio. Tali automi, dopo l’ingresso dell’ultimo sim-
bolo della stringa in ingresso rispondono:
• con un “sì” (o “riconosciuta”) se la stringa appartiene al linguaggio;
• con un “no” (o “non riconosciuta”) se la stringa non appartiene al linguaggio.

Ingressi: Uscite:

Simboli AUTOMA Riconosciuta/


Stati interni Non riconosciuta
Sequenza da riconoscere

OSSERVA COME SI FA
■ Consideriamo un automa riconoscitore che rileva la presenza della sequenza 010 tra tutti i simboli 0 e 1 che
si avvicendano in ingresso.

Ingressi: Uscite:

Simboli: {0, 1} Riconosciuta/


S Non riconosciuta
Sequenza: 010

Insiemi caratteristici dell’automa Diagramma degli stati


I = {0, 1} 0/0

U = {0, R} 0/0
0 = non è stata riconosciuta alcuna sequenza 010 A B
R = è stata riconosciuta la sequenza 010
1/0
S = {A, B, C} 0/R
A = (stato iniziale) si rimane in questo stato finché 1/0 1/0
esce 1
B = è stato riconosciuto il primo zero della sequen-
za C
C = è stata riconosciuta la sottosequenza 01

Analisi del diagramma


Si parte dallo stato A. Se si inserisce un 1 si rimane nello stato A. Se si inserisce uno 0 si passa allo stato B. Dallo
stato B, se si inserisce un 1 si passa allo stato C, altrimenti se si inserisce 0 si rimane in B. Ci si troverà nello stato
C quando viene riconosciuto il primo 0 e l’1 della sequenza.
Quindi, se ci si trova in C e si inserisce un 1, si torna nello stato iniziale per aspettare il primo 0 della sequenza. Se
si inserisce uno 0 si passa direttamente allo stato B, poiché la sequenza non è stata chiusa, ma è stato riconosciuto
il primo zero di una eventuale prossima sequenza.

Teoria degli automi B2 153


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Automi riconoscitori che ammettono ripetizioni


e automi che non le ammettono
Consideriamo di avere i seguenti valori in ingresso: 01010. I primi tre valo-
ri individuano la sequenza cercata (010), per cui al terzo istante l’uscita va In questo tipo di automi
riconoscitori non sono
a R (sequenza trovata), ma l’ultimo 0 della sequenza valida potrebbe esse- presenti stati finali.
re utilizzato anche come primo elemento di una nuova sequenza, nel qual La sequenza 010,
caso l’uscita tornerebbe a 1 nel quinto intervallo di tempo. Se, invece, non infatti, può essere
si vuole considerare utile quel valore, l’uscita dovrebbe rimanere a 0. Nel riconosciuta anche se
l’automa termina in uno
primo caso si dice che il riconoscitore ammette ripetizioni o sovrappo- qualsiasi degli stati A,
sizioni, nel secondo caso che non le ammette. B o C. Consideriamo
L’automa che stiamo considerando ammette ripetizioni, quindi le uscite per esempio la
successione dei simboli
andrebbero due volte a R (sequenza riconosciuta) con gli ingressi 01010. in ingresso 00100,
che fa terminare
Il diagramma che segue, invece, è quello relativo al riconoscitore che l’automa nello stato
non ammette ripetizione. Con gli ingressi 01010 le uscite andrebbero a B ma con l’emissione
di R (Riconosciuta)
R (sequenza riconosciuta) solo una volta. in uscita; oppure
0/0 consideriamo
la successione 10101,
0/0 che fa terminare
A B l’automa nello stato
C ma ancora con
1/0 l’emissione di R in
0/R uscita.
1/0
1/0

OSSERVA COME SI FA
1. Automa cassaforte – Progettiamo un automa riconoscitore che riconosca la sequenza 245 di apertura di una
cassaforte. In ingresso, possono avvicendarsi numeri interi compresi tra 0 e 5.

Insiemi caratteristici dell’automa

Ingressi: Uscite:

Simboli: {0, 1, 2, 3, 4, 5} Riconosciuta/


S Non riconosciuta
Sequenza da riconoscere: 245

I = {0, 1, 2, 3, 4, 5}
U = {0, R}
0 = non è stata riconosciuta alcuna sequenza 245
R = è stata riconosciuta la sequenza 245
S = {A, B, C}
A = (stato iniziale) si rimane in questo stato finché non si inserisce 2
B = è stato riconosciuto il numero 2 quale primo valore della sequenza
C = è stato riconosciuto il numero 4 quale secondo valore della sequenza

154 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Diagramma degli stati


2/0
2/0
A B
0,1,3,5/0
0,1,3,4,5/0
5/R 2/0
0,1,3,4/0 4/0

Analisi del diagramma


Nello stato A abbiamo utilizzato la notazione 0, 1, 3, 4, 5/0 per intendere che, se arriva un valore qualsiasi tra 0, 1,
3, 4 e 5, si rimane nello stesso stato con uscita nulla. Da notare che se si continua a inserire il numero 2 si rimane
sempre nello stato B, perché viene considerato l’ultimo 2 inserito. Per completezza vediamo anche la tabella di
transizione.

Tabella di transizione

Ingressi
0 1 2 3 4 5
Stati
A A/0 A/0 B/0 A/0 A/0 A/0
B A/0 A/0 B/0 A/0 C/0 A/0
C A/0 A/0 B/0 A/0 A/0 A/R

2. Automa riconoscitore della stringa “ADA” – Progettiamo un automa riconoscitore che non ammette ripetizioni:
se, per esempio, l’automa riceve in ingresso la sequenza “ADADA”, riconosce solo una stringa e non due.

Insiemi caratteristici dell’automa


I = {A, D}
A = è stato letto il carattere A
D = è stato letto il carattere D
U = {0, R}
0 = sequenza NON riconosciuta
R = sequenza riconosciuta
S = {S0, S1, S2}
S0 = stato iniziale
S1 = rappresenta lo stato che si raggiunge quando è stata riconosciuta la prima “A” della sequenza
S2 = stato che si raggiunge quando è stata riconosciuta una “D” preceduta da una “A”

Diagramma degli stati


A/0
S1

A/0 D/0

A/R
S0 S2
D/0 D/0

Teoria degli automi B2 155


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Analisi del diagramma


Se nello stato S0 l’automa riceve un ingresso D, permane nello stesso stato S0; se riceve una A, cambia stato e
passa a S1, perché questa A potrebbe essere il primo carattere della sequenza; in entrambi i casi l’uscita è 0.
Se nello stato S1 l’automa riceve un ingresso D, passa allo stato S2, perché potrebbe essere il secondo simbolo
utile della sequenza, mentre se riceve un ingresso A non cambia stato, perché potrebbe essere A l’inizio della se-
quenza.
Le uscite in entrambi i casi sono 0.
Nello stato S2, se l’automa riceve un ingresso A, la sequenza è riconosciuta, l’uscita diventa R e si passa allo stato
iniziale; se invece riceve un ingresso D, l’automa torna allo stato iniziale, ma con l’uscita 0, perché la situazione è
del tutto simile alla condizione di partenza.
In questo secondo caso l’automa non può restare in S2, perché è lo stato che ricorda gli ultimi due ingressi, che in
questo caso sarebbero DD; né può tornare in S1, perché è lo stato che ricorda l’ultimo ingresso A e non D.

Supponiamo che arrivi la seguente successione in ingresso: “AAADDDADDADA”.


• L’automa in S0 riceve A e passa a S1 con uscita 0.
• In S1 riceve ancora A e resta in S1 con uscita 0.
• In S1 riceve ancora A e resta in S1 con uscita 0.
• Poi riceve D e passa in S2 con uscita 0.
• In S2 riceve ancora D e torna a S0 ma con uscita 0.
• In S0 riceve ancora D e resta in S0 con uscita 0.
• Riceve ancora D e resta in S0 con uscita 0.
• Poi riceve A e passa in S1 con uscita 0.
• In S1 riceve D e passa in S2 con uscita 0.
• In S2 riceve ancora D e torna a S0 con uscita 0.
• In S0 riceve A e passa in S1 con uscita 0; in S1 riceve D e passa a S2 con uscita 0.
• In S2 riceve A e torna a S0 ma con uscita R.

ORA TOCCA A TE
1. Prova a modificare l’automa ammettendo che in ingresso possano essere letti i simboli A, B, C, D.

2. Definisci un automa riconoscitore che non ammette ripetizioni in grado di riconoscere all'interno
di un insieme di bit la sequenza 11001.

3. Modifica il precedente esercizio in modo da realizzare un automa che ammette ripetizioni.

156 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME B2
TEORIA DEGLI AUTOMI
AUDIO

Gli automi Il diagramma degli stati


Un automa è un sistema contraddistinto da Il diagramma degli stati rappresenta
quattro caratteristiche: è dinamico (cioè evolve graficamente un automa a stati finiti con bolle
nel tempo), è invariante (cioè la sua risposta a o nodi e archi. Le bolle rappresentano gli
una sollecitazione è la stessa indipendentemente stati dell’automa, cioè gli stati di memoria del
dall’istante di tempo in cui è applicata), è discreto sistema. Gli archi rappresentano le relazioni di
nell’avanzamento (cioè può essere analizzato passaggio da uno stato all’altro. Lo stato iniziale
in precisi istanti di tempo e le sue interazioni è rappresentato da un nodo con una freccia
possono essere descritte con funzioni di entrante. Gli stati finali sono rappresentati da
transizione e di trasformazione discrete), ha un una bolla con un doppio circolo. Così costruiti,
numero di elementi finito in ingresso e in uscita i diagrammi degli stati rappresentano
(ovvero, gli insiemi degli ingressi e delle uscite graficamente le funzioni f e g, cioè la funzione
sono finiti). di transizione e quella di trasformazione.
L’automa a stati finiti (ASF) Le tabelle di transizione
Un automa è a stati finiti se anche l’insieme Le tabelle di transizione sono rappresentazioni
dei suoi stati è composto da un numero finito degli automi del tutto equivalenti ai diagrammi
di elementi. degli stati o di transizione. Sono tabelle con
Per descriverlo si utilizza un modello matematico un numero di righe pari al numero degli stati
composto dai seguenti elementi: dell’automa e un numero di colonne pari al
• I l’insieme degli ingressi (o input) numero dei diversi ingressi. Le celle contengono
che è in grado di leggere; una coppia formata dallo stato successivo
• U l’insieme delle uscite (o output) e dall’uscita da emettere.
che può produrre;
• S l’insieme finito degli stati interni
Rappresentazione di automi riconoscitori
Gli automi riconoscitori sono una classe
in cui può trovarsi;
di automi particolarmente importante. Sono
• f la funzione di transizione che fa passare
automi in grado di riconoscere la presenza di
da uno stato al successivo;
una particolare sequenza di simboli tra tutti
• g la funzione di trasformazione che determina
quelli che si avvicendano in ingresso. Tra essi,
il valore delle uscite.
una classe molto importante è quella degli automi
Pertanto:
riconoscitori capaci di riconoscere se una stringa
A = {I, U, S, f, g}
fa parte o meno di un determinato linguaggio.
Come si rappresentano gli automi Gli automi riconoscitori possono essere di
Un automa a stati finiti può essere rappresentato due tipi: quelli che ammettono ripetizioni o
in 2 modi: 1) mediante un modello grafico, sovrapposizioni e quelli che non le ammettono.
cioè un diagramma degli stati; 2) mediante
un modello matematico, cioè una tabella
di transizione.

Teoria degli automi B2 157


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME B2
MAPPA
MODIFICABILE
AUTOMI

sono i più importanti sono

sistemi

caratterizzati da

dinamicità

invarianza

discretezza

ingressi e uscite
finiti

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
1) Cosa sono gli automi?
2) Da quali aspetti sono caratterizzati i “sistemi automi”?
3) Quali sono i più importanti tipi di automi?
4) Tra gli automi a stati finiti quali sono particolarmente importanti?
5) In quali due tipi si classificano gli automi riconoscitori?
6) In quali tre modi sono rappresentabili gli automi a stati finiti?

158 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo B2
1. Vero o falso? C i
0 1
a Un automa è un sistema statico. V F s
b L’automa è un sistema in cui la risposta V F X X/0 Y/0
del sistema a una sollecitazione dipende
dall’istante di tempo in cui è applicata. Y X/0 Y/0
c L’automa transazionale è quello in grado V F
D i
di riconoscere la presenza di una particolare 0 1
sequenza di simboli tra tutti quelli che s
si avvicendano in ingresso. X X/0 A/0

2. Che differenza c’è tra automa e automa a stati A A/0 Y/0


finiti?

3. Come si rappresenta in maniera generica un


9. Quali sono le situazioni problematiche
nei seguenti automi?
automa?

4. Qual è la particolarità degli automi riconoscitori? A

5. Il diagramma degli stati: Q1


A è una rappresentazione grafica della funzione
di transizione f 2 1
B è una rappresentazione grafica sia della funzione 1 2
di transizione f sia della funzione
di trasformazione g
C è una rappresentazione grafica della funzione Q0 Q2
di trasformazione g 1
D è una rappresentazione grafica delle transizioni 0
degli stati interni

6. Che cosa rappresentano lo stato iniziale B


e gli stati finali?
Q1
7. Come si costruisce una tabella di transizione?
1
8. Quale delle seguenti è una tabella di transizione
di un automa? 2
(s = stati, i = ingressi) 1
A i Q1
0 1
s
A X/0 A/0

B A/0 Y/0

B i
00 10
s
X X/0 Z/0

Y Y/0 Y/0

Teoria degli automi B2 159


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE B2
10. • Considera il diagramma degli stati relativi 18. •• Distributore di lattine. Progetta un automa
all’automa “cassaforte” descritto in precedenza. che distribuisce lattine di un solo tipo dopo che
Crea la relativa tabella di transizione. sono state introdotte due monete di un unico
valore. Se il distributore è spento, si “mangia”
11. • Considera il diagramma degli stati relativi la moneta eventualmente introdotta.
all’automa “riconoscitore (di Moore) di stringhe
con un numero pari di 1 e di 0”, descritto nella 19. •• Distributore di bevande 1. Progetta un
lezione aggiuntiva online “Automi di Mealy, automa che distribuisce due tipi di bevande
di Moore e senza uscite”. Crea la relativa tabella emettendo una lattina dopo che sono state
di transizione. introdotte due monete da 20 centesimi di euro
ed è stato scelto il tipo di bevanda.
12. • Considera il diagramma degli stati relativi L’automa non restituisce monete.
all’automa “riconoscitore (di Mealy) che rileva
la presenza di tre 1 consecutivi”, descritto nella 20. •• Distributore di bevande 2. Progetta
lezione aggiuntiva online. Crea la relativa tabella un automa come il precedente che restituisce
di transizione. delle monete a richiesta o quando sia stata
introdotta una moneta in eccedenza.
13. • Considera il diagramma degli stati relativi
all’automa “riconoscitore (di Moore) della 21. •• Distributore di bevande 3. Progetta un automa
sequenza con numero pari di 0”, descritto nella che distribuisce due tipi di bevande emettendo
lezione aggiuntiva online. Crea la relativa tabella una lattina dopo che sono stati introdotti 40
di transizione. centesimi di euro ed è stato scelto il tipo di
bevanda. L’automa accetta monete da 10 e 20
14. • Considera il diagramma degli stati relativo centesimi di euro e non restituisce monete.
all’automa “ascensore”, descritto in precedenza.
Crea la relativa tabella di transizione. 22. •• Sequenza “ciao”. Progetta un automa
riconoscitore che riconosca la sequenza “ciao”
15. • Data la seguente tabella di transizione, ottieni tra una successione di simboli in ingresso,
il relativo diagramma degli stati per un automa ognuno dei quali può essere una qualsiasi lettera
di Moore, descritto nella lezione aggiuntiva dell’alfabeto.
online.
23. ••• Sequenze binarie che iniziano e finiscono per
Ingressi 0. Crea un automa riconoscitore che riconosca
0 1 Uscite
Stati sequenze che iniziano e finiscono con 0 da una
S0 S0 S1 0 successione di simboli in ingresso, ciascuno
dei quali può essere 0 oppure 1. Per esempio,
S1 S2 S1 0 devono essere riconosciute le seguenti sequenze:
S2 S0 S3 0 0100110, 010, 000. Non devono essere
S3 S2 S4 0 riconosciute le sequenze: 10, 10000, 001.
S4 S2 S1 1
24. ••• Sequenze binarie di lunghezza 4. Progetta
Che tipo di sequenza di input riconosce l’automa? un automa a stati finiti riconoscitore che
riconosca sequenze binarie di lunghezza 4. Per
16. •• Distributore di biglietti 1. Progetta un automa esempio, devono essere riconosciute le seguenti
a stati finiti che emette in uscita un biglietto sequenze: 0000, 1100, 0001. Non devono essere
dopo che sono state inserite due monete riconosciute le sequenze: 10, 10000, 001.
da 0,50 euro. L’automa funziona solo con monete
da 0,50 euro. 25. ••• Sequenze binarie che finiscono per 111.
Progetta un automa a stati finiti riconoscitore
17. •• Distributore di biglietti 2. Progetta un automa che riconosca sequenze binarie che finiscono per
a stati finiti che emette un biglietto dopo che 111. Per esempio, devono essere riconosciute
sono stati inseriti 0,60 euro. L’automa funziona le seguenti sequenze: 0100111, 111, 000111.
con monete da 10 o da 20 centesimi di euro e Non devono essere riconosciute le sequenze: 10,
non fornisce resto. 10000, 001.

160 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B3 Teoria della calcolabilità

IMPARERAI…

Di cosa si occupa la teoria Che cos’è e come funziona Che cosa sono i problemi risolubili
della calcolabilità una macchina di Turing e la tesi di Church

1 Problemi, algoritmi e modelli computazionali


Algoritmi, linguaggi di programmazione e programmi
Nelle unità precedenti abbiamo parlato della relazione esistente tra algoritmi, linguaggi di pro-
grammazione e programmi.
Tale relazione può essere riassunta dal seguente schema:

Formulazione
di un problema

Metodo risolutivo
(progetto)
Bontà
Individuazione di un algoritmo
di un algoritmo (complessità
computazionale)
Linguaggio
di programmazione
(codifica)
Scelta
Stesura del linguaggio
del programma più adatto (sintassi
Esecuzione e semantica)
su una
macchina fisica

Dati (input) Computer

Risultati (output)

Teoria della calcolabilità B3 161


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Questo schema può essere generalizzato così:

Formulazione
di un problema

Metodo risolutivo
(progetto)
Bontà
Individuazione di un algoritmo
di un algoritmo (complessità
computazionale)
Scelta del formalismo
per la codifica
dell’algoritmo
Scelta
Dati (input) Esecutore dell’esecutore
più adatto

Risultati (output)

Gli esecutori come modelli computazionali


Dobbiamo pensare all’esecutore non necessariamente come a una macchina fisica, per esem-
pio l’attuale computer, ma come a un modello computazionale in grado di eseguire algoritmi.
Deve cioè descrivere come dev’essere rappresentato l’input, interpretato l’output e implemen-
tato il procedimento risolutivo.
Un esecutore può essere realizzato:
■ mediante un modello matematico:
• logico (Goedel), basato sulla logica matematica;
• funzionale (Church, Kleene, ...), basato sul calcolo delle funzioni;
• sistemi di riscrittura (Post, Markov, ...), basati sulla manipolazione di stringhe di caratteri;
• operazionale (Turing), basato su una macchina con un nastro e una testina di lettura e
scrittura (macchina di Turing);

■ mediante congegni meccanici:


• macchina aritmetica (Pascal);
• macchina analitica (Babbage).

I modelli matematici
I modelli matematici servono a svincolarci da una determinata macchina fisica.

Una macchina fisica, infatti, potrebbe essere “migliore” di un’altra e risolvere un problema che
l’altra non riesce a risolvere. Ma se neanche la macchina “più potente” risolve un problema,
questo potrebbe essere non risolvibile.

Tra questi modelli matematici il più famoso è quello delle macchine di Turing (MdT), un’a-
strazione matematica che rappresenta un potente strumento logico-concettuale per capire
che cosa si intende per elaborazione.

162 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Le MdT infatti:
■ hanno posto le basi per i moderni computer e sono essenziali per lo studio di un’altra im-
portante disciplina dell’informatica: la teoria della computabilità, che studia il calcolo
algoritmico, ossia il calcolo eseguibile in modo meccanico;
■ sono alla base della programmazione imperativa, introducendo concetti essenziali qua-
li: locazione di memoria, assegnamento, stato, iterazione;
■ hanno messo a disposizione i concetti chiave per poter introdurre una definizione di mac-
china astratta.
In realtà esiste una gerarchia di esecutori-modelli che (semplificando) possiamo chiamare
macchine. Li elenchiamo di seguito dal più specifico al più generico (quello che risolve una
classe di problemi più ampia):
• macchine combinatorie;
• macchine (automi) a stati finiti;
• macchine a stack;
• macchine di Turing.
La macchina di Turing è quella in grado di risolvere la
classe più ampia di problemi.

2 Un modello computazionale:
la macchina di Turing
Nel 1936 il matematico inglese A.M. Turing propose una definizione del concetto di algoritmo
tramite un modello matematico di macchina in grado di eseguire una computazione. Tale mo-
dello prese il suo nome diventando la famosa macchina di Turing.
La macchina di Turing fu introdotta una decina di anni prima che fosse realizzato il primo
prototipo di elaboratore a “programma memorizzato”. È stata considerata un modello, con una
struttura molto semplice e facile da percepire, che tiene conto di tutte le proprietà logiche di
una macchina reale capace di eseguire qualunque algoritmo.

La macchina di Turing assume un ruolo decisamente molto importante nella teoria della
computabilità, che si occupa dell’analisi degli algoritmi per decidere sulla loro computabili-
tà, cioè sul fatto che siano o meno risolvibili indipendentemente dalla macchina fisica su cui
saranno eseguiti.

L’attuale struttura del computer (macchina di Von Neumann) deriva dal formalismo della
macchina di Turing. La macchina di Turing rappresenta un prototipo astratto di macchina
calcolatrice, costruito in modo da riprodurre ciò che vi è di essenziale nel comportamento
computistico dell’uomo.

Come opera la macchina di Turing


Osserviamo che un computo eseguito da parte di un uomo avviene mediante un numero finito
di operazioni su un numero finito di simboli.

Teoria della calcolabilità B3 163


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Così, per esempio, se si effettua la moltiplicazione 31 × 17:


31 ×
17 =
–––––––
217
31–
––––
527
si scrivono successivamente dei simboli su un foglio di carta, muovendosi in due dimensioni.
Una prima semplificazione sta nell’osservare che per eseguire un calcolo è sufficiente disporre
i simboli in una sola dimensione su una striscia di carta. Così l’operazione precedente potrebbe
essere scritta nel seguente modo:
31, 17; 217, 31; 527
Se consideriamo che, nell’eseguire un’operazione, l’uomo osserva solo un numero finito di sim-
boli alla volta, possiamo effettuare un’ulteriore semplificazione osservando un solo simbolo
per volta.
Questa è l’idea essenziale nel concetto di macchina di Turing: la sua condotta è influenzata
solo dall’informazione locale e non globale. Poiché, infine, la memoria dell’uomo sembra essere
finita, si assume che la macchina di Turing abbia un numero finito di stati interni.

Le componenti della macchina di Turing


Da un punto di vista informale, una macchina di Turing è costituita da:
• un nastro;
• una testina di lettura/scrittura;
• un’unità di calcolo;
• un’unità logica.

Un nastro di lunghezza infinita suddiviso in celle.


• Ogni cella contiene un simbolo dell’alfabeto oppure
un simbolo bianco. Una memoria
• Il nastro contiene un numero finito di simboli tutto
il resto del nastro contiene simboli bianchi.

Una testina di lettura e scrittura (TLS) che si muove


lungo il nastro in entrambe le direzioni possibili.
• La testina a ogni istante può indicare una sola cella
del nastro.

Un’unità di controllo a stati finiti, cioè controllata da


Una CPU
una macchina a stati.
• Contiene il programma secondo cui viene eseguito
il calcolo e mantiene lo stato della macchina.

Un’unità logica preposta alla decisione dei passi che


la macchina deve compiere.

164 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Il nastro è lo strumento che contiene le informazioni. Questo dispo-


Abbiamo detto che il
sitivo, teoricamente illimitato, è diviso in celle, ciascuna delle quali nastro è teoricamente
può contenere un solo simbolo appartenente a un certo insieme finito infinito: questo non
significa che non
X = {x0, x1, x2, ... , xn} termina mai, bensì che
è sempre possibile
chiamato alfabeto di lavoro, oppure essere vuota. Il nastro, quindi, espanderlo sia a destra
contiene le informazioni che devono essere elaborate e i risultati in- sia a sinistra.
termedi e finali.
■ La testina di lettura/scrittura (TLS) è un meccanismo che, opportunamente posizionato
su una casella del nastro e governato da un’unità di controllo, può leggere il simbolo che vi è
contenuto e scriverne uno appartenente all’alfabeto di lavoro, in modo da sostituire quello
precedente, se presente, e spostarsi a destra o a sinistra di una cella oppure restare ferma.

TLS

Unità
di controllo

La sequenza di simboli da esaminare è delimitata, a sinistra e a destra, da un carattere


speciale, per esempio λ.
In ogni istante, quindi, la testina della macchina di Turing si trova in una cella contenente
il simbolo ai (individuando, così, la sottosequenza sinistra e la sottosequenza destra dei
caratteri presenti sul nastro) e nella memoria interna è registrato lo stato qi.

λ a1 a2 a3 a4 a5 a6 λ

ai, qi

■ La MdT è provvista di un’unità di controllo che impartisce alla TLS i seguenti ordini:
• F = Fermo;
• S = Spostati a sinistra e analizza la cella;
• D = Spostati a destra e analizza la cella.
Questi tre elementi costituiscono l’insieme M = {F, S, D} detto insieme dei simboli di movi-
mento. Questo insieme, unito con l’insieme Q degli stati della macchina, forma l’alfabeto
interno della MdT.
■ L’ultimo componente della MdT è l’unità logica, preposta alla decisione dei passi che la
macchina deve compiere. Per prendere tale decisione, ossia per fornire l’istruzione corri-
spondente al successivo passo da eseguire, l’unità logica necessita di due ingressi:
• il simbolo ai corrispondente al contenuto della cella sulla quale è posizionata in quell’i-
stante la TLS;
• il simbolo qi corrispondente allo stato della macchina in quell’istante.

Teoria della calcolabilità B3 165


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Le varie combinazioni di questi due valori (ai, qi) definiscono univocamente il compor-
tamento della MdT. Infatti, dopo l’introduzione della coppia, l’unità logica fornisce una
terna di valori che corrispondono all’istruzione da eseguire. In particolare:
• il simbolo aj che dev’essere scritto nella cella su cui è posizionata la TLS;
• il simbolo q j che indica lo stato in cui deve passare la macchina;
• il simbolo mj che rappresenta la direzione in cui si deve muovere la TLS.

3 Comportamento della macchina di Turing


La macchina funziona per passi elementari successivi. In ciascun passo del calcolo, può:
• stampare o cancellare un certo simbolo, eventualmente passando da uno stato interno a
un altro stato interno;
• spostare il nastro di una cella a sinistra o a destra rispetto al lettore, eventualmente pas-
sando da uno stato interno a un altro stato interno;
• fermarsi.
La MdT è definita dalla seguente funzione logica f:
ai, qi → aj, qj, mj

TLS
Unità
di controllo

Memoria
di controllo

Unità logica

Memoria
interna

Più formalmente, la macchina di Turing è una sestupla:


MdT = (Q, X, Y, f, q0, F)
dove:
• Q è l’insieme finito non vuoto degli stati della macchina;
• X è l’insieme finito di simboli (alfabeto di lavoro, comprende tutti i simboli utilizzati sia
in ingresso sia in uscita). Tale alfabeto comprende anche il simbolo speciale λ, precedente-
mente definito, che indica la cella vuota;
• Y (sottoinsieme di X) è l’insieme finito e non vuoto di simboli detto alfabeto di ingresso;
• q0 ∈ Q è lo stato iniziale della macchina;
• F (sottoinsieme di Q) è l’insieme degli stati finali della macchina.
• f è una funzione, detta funzione di transizione, che mostra come evolvono stato e uscite:
Q × Y → Q × X × {Destra, Sinistra, Fermo}

166 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per esempio, la seguente MdT costruita sull’alfabeto {a,b,c},


Fu sul concetto di macchina di
scambia ciascun a con b, ciascun b con c, ciascun c con a. La Turing che nel 1942 il matematico
sua formalizzazione è la seguente: di Bletchley Park, Max Newman
progettò una macchina chiamata
MdT = (Q, X, Y, f, q0, F) dove: Colossus (lontano precursore dei
moderni computer) che decifrava
Q = {q0 = scambia, q1 = fine} stati in modo veloce ed efficiente i codici
X = {λ, a, b, c} alfabeto di lavoro tedeschi creati con la cifratrice Lorenz
Y = {λ, a, b, c} alfabeto di ingresso SZ40/42, perfezionamento della
cifratrice Enigma.
Stato iniziale = q0
F = {q1}
f (funzione di transizione) è così definita dalle seguenti
quintuple:

1. q0 a b q0 D nello stato q0 se leggo a scrivo b, resto


nello stato q0 e sposto a destra la TLS
2. q0 b c q0 D nello stato q0 se leggo b scrivo c, resto
nello stato q0 e sposto a destra la TLS
3. q0 c a q0 D nello stato q0 se leggo c scrivo a, resto
nello stato q0 e sposto a destra la TLS
4. q0 λ λ q1 F nello stato q0 se leggo λ, scrivo λ vado
nello stato q1 (stato finale) e sto fermo!

Supponiamo di avere la seguente situazione iniziale:

λ λ b a a c λ λ λ λ

b, q0

In questo caso, la computazione avverrebbe come segue:

applicando la quintupla
λ λ c a a c λ λ λ λ
n. 2

a, q0

applicando la quintupla
λ λ c b a c λ λ λ λ
n. 1

a, q0

applicando la quintupla
λ λ c b b c λ λ λ λ
n. 1

c, q0

Teoria della calcolabilità B3 167


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

applicando la quintupla
λ λ c b b c λ λ λ λ
n. 3

λ, q0

applicando la quintupla
λ λ b a a c λ λ λ λ
n. 4

λ, q1

Questa macchina si posiziona sulla cella che contiene il primo simbolo della stringa, nello stato
q0 (stato iniziale) esegue lo scambio richiesto rimanendo in q0. Quindi si sposta alla destra del
simbolo già considerato e continua fino a che non incontra la fine della stringa segnalata dal
simbolo λ (casella vuota); in tal caso, passa nello stato q1 e si arresta (la computazione termi-
na) in quanto nessuna quintupla presenta lo stato qi uguale a q1: per questo, q1 è detto stato
finale.

OSSERVA COME SI FA
1. Definiamo una MdT che esegua l’addizione di due numeri naturali.
Rappresentazione dell’input
I numeri sono rappresentati sul nastro da una sequenza di barre ⏐. Al numero 0 viene fatta corrispondere una barra,
al numero 1 due barre, al numero 5 sei barre e così via. Due numeri sono rappresentati da due sequenze di barre
separate dalla cella vuota.
Per esempio, per eseguire 2 + 3 avremo la seguente situazione di partenza:

λ λ λ

λq0

Computazione
Per effettuare la somma, la MdT riempie con una barra la cella vuota che separa i due numeri e cancella le due barre
finali del secondo numero.
Rappresentazione dell’output
La seguente figura riporta la situazione della MdT dopo la computazione:

λ λ λ λ

λ, q4

MdT = (Q, X, Y, f, q0, F) dove:


Q = {q0 = “mi sposto sul primo numero”, q1 = “mi sposto sul secondo numero”,
q2 = “cancello la prima barra”, q3 = “cancello la seconda barra”, q4 = finale}
X = {λ, ⏐} alfabeto di lavoro
Y = {λ, ⏐} alfabeto di ingresso
Stato iniziale = q0
F = {q4}

168 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

f (funzione di transizione) è così definita dalle seguenti quintuple:


1. q0 ⏐ ⏐ q0 D → In q0, se leggo ⏐, rimango in q0 cioè nello stato che mi fa spostare sul primo
numero
2. q0 λ ⏐ q1 D → In q0, se leggo λ scrivo ⏐ e vado in q1 cioè nello stato che mi dice che ho letto
il primo numero
3. q1 ⏐ ⏐ q1 D → In q1, se leggo ⏐, scrivo ⏐, rimango in q1 cioè nello stato che mi fa spostare sul
secondo numero
4. q1 λ λ q2 S → In q1, se leggo λ, vuol dire che ho finito di leggere il secondo numero e quindi
vado in q2 cioè nello stato che mi dice che devo cancellare una barra
5. q2 ⏐ λ q3 S → In q2, se leggo ⏐, scrivo λ per cancellare la prima barra e vado nello stato q3 per
cancellare la seconda barra
6. q3 ⏐ λ q4 F → In q3, se leggo ⏐, cancello la seconda barra, vado nello stato finale q4 e mi fermo

2. Definiamo una MdT per verificare se, in una sequenza di 0 e 1, il numero di 1 presenti nella sequenza
è dispari. Questo stesso problema può essere affrontato con gli automi, di cui riportiamo qui il relativo
automa riconoscitore.
Rappresentazione dell’input
La situazione di partenza della MdT può essere quella mostrata di seguito. La testina è posizionata sul primo ca-
rattere da leggere.

λ 1 0 0 1 1 λ λ λ

1, q0

Rappresentazione dell’output
Se il numero di 1 è dispari, la macchina scrive “d” nella prima casella a destra della sequenza dei simboli in in-
gresso.
Se il numero di 1 è pari (oppure se la sequenza è vuota), la macchina scrive “p” nella prima casella a destra della
sequenza dei simboli in ingresso.
Nell’esempio appena visto la situazione finale sarà:

λ 1 0 0 1 1 d λ λ

d, q2

MdT = (Q, X, Y, f, q0, F) dove:


Q = {q0 = “ho letto un numero pari di 1”, q1 = “ho letto numero dispari di 1”,
q2 = stato finale}
X = {λ, 0, 1, p, d} alfabeto di lavoro
Y = {λ, 0, 1} alfabeto di ingresso
q0 = stato iniziale
F = {q2}

Teoria della calcolabilità B3 169


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

f (funzione di transizione) è così definita dalle seguenti quintuple:


1. q0 1 1 q1 D → In q0, se legge 1, va in q1 cioè nello stato che dice che si è letto un numero
dispari di 1
2. q0 0 0 q0 D → In q0, se legge 0, rimane in q0 cioè nello stato che dice che si è letto un numero
pari di 1
3. q1 1 1 q0 D → In q1, se legge 1, va in q0 cioè nello stato che dice che si è letto un numero pari
di 1
4. q1 0 0 q1 D → In q1, se legge 0, rimane in q1 cioè nello stato che dice che si è letto un numero
dispari di 1
5. q0 λ p q2 F → In q0, se legge λ, cioè se legge la fine della sequenza in input, scrive p (poiché
è in q0 cioè “ha letto un numero pari di 1”), va nello stato finale q2 e si ferma
6. q1 λ d q2 F → In q1, se legge λ, cioè se legge la fine della sequenza in input, scrive d (poiché è
in q1 cioè “ha letto un numero dispari di 1”), va nello stato finale q2 e si ferma

4 Rappresentazione della funzione


di transizione
Consideriamo la MdT del paragrafo precedente. Il nuovo stato dipende sia dallo stato in cui
ci si trova, sia dal simbolo letto in input. In realtà questa funzione incorpora sia la funzione di
transizione dello stato, sia la funzione di trasformazione delle uscite, usate per lo studio degli
automi.

Le quintuple che descrivono il comportamento di una MdT possono essere rappresentate:


• in forma tabellare con una tabella di transizione (o matrice funzionale);
• in forma grafica con i diagrammi di stato.

Rappresentazione con tabella di transizione

In una matrice funzionale le colonne indicano i possibili input che possono essere letti e le
righe i differenti stati in cui può trovarsi la macchina.

In ogni cella è contenuto il nuovo simbolo da scrivere, il nuovo stato e il tipo di movimento da
effettuare.
Ingressi
Input 1 Input 2 Input 3 Input n
Stati
Stato 1 Simbolo da Simbolo da Simbolo da Simbolo da
Stato 2 scrivere, nuovo scrivere, nuovo scrivere, nuovo scrivere, nuovo
Stato 3 stato, movimento stato, movimento stato, movimento stato, movimento
Stato m da effettuare da effettuare da effettuare da effettuare

Consideriamo per esempio una MdT che somma una unità a un numero scritto in notazione
decimale.

170 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La rappresentazione dell’input è definita dall’insieme delle seguenti quintuple:

1. q0 0 1 q1 F 7. q0 6 7 q1 F
2. q0 1 2 q1 F 8. q0 7 8 q1 F
3. q0 2 3 q1 F 9. q0 8 9 q1 F
4. q0 3 4 q1 F 10. q0 9 0 q0 S
5. q0 4 5 q1 F 11. q0 λ 1 q1 F
6. q0 5 6 q1 F

La tabella di transizione di questa MdT è la seguente:

Ingressi
0 1 2 3 4 5 6 7 8 9 λ
Stati
q0 1, q1, F 2, q1, F 3, q1, F 4, q1, F 5, q1, F 6, q1, F 7, q1, F 8, q1, F 9, q1, F 0, q0, S 1, q1, F
q1 Stop Stop Stop Stop Stop Stop Stop Stop Stop Stop Stop

In questo caso, si suppone che inizialmente la macchina si trovi nello stato q0 e sia posizionata
sulla cifra più a destra del numero; se la cifra esaminata è diversa da 9, viene semplicemente
cambiata in quella successiva e, passando la macchina nello stato q1, il procedimento si arre-
sta, altrimenti la cifra 9 viene mutata in 0 e si ha uno spostamento della testina sulla cifra alla
sua sinistra, in modo da tenere conto del riporto.

Rappresentazione grafica della funzione di transizione


La funzione di transizione (ovvero il comportamento di una MdT) può essere rappresentata
anche graficamente con i diagrammi di stato in modo simile a quella utilizzata per gli automi.

In questa rappresentazione indicheremo:

con qi gli stati;

con le transizioni su cui scriveremo ai, q j, mi;

con lo stato iniziale;

con lo stato finale.

Per esempio, la MdT che scambia ciascun a con b, ciascun b con c, ciascun c con a, può essere
rappresentata nel seguente modo:
c, a, D
b, c, D
λ , λ, F

q0 q1

a, b, D

Teoria della calcolabilità B3 171


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

La macchina di
TURING UNIVERSALE...
MACCHINA DI TURING UNIVERSALE
Dato uno specifico algoritmo, è possibile ricorrere a una macchina di Turing
per risolverlo: una macchina di Turing universale (MdTU) è una macchina
capace di simulare il comportamento di una qualsiasi altra macchina
di Turing. Per far questo la MdTU ha come ingressi due stringhe.
Stringa 1: definisce la MdT Stringa 2: input della MdT

λ .. .. .. λ .. .. .. λ

Le azioni della MdTU


Una MdTU è una macchina programmabile, in grado

STRINGA 1 cioè di memorizzare la descrizione di una qualsiasi


macchina di Turing e di simularne il comportamento.
Corrisponde all’insieme di Le azioni di una MdTU consisteranno nello spostarsi
quintuple che definiscono la continuamente dalla stringa che rappresenta le quintuple
particolare macchina di Turing alla stringa che rappresenta i dati, in modo da effettuare
da simulare. l’elaborazione.

La MdTU e i moderni computer


STRINGA 2 La MdTU può essere considerata una schematizzazione
di quanto avviene in un elaboratore reale.
Corrisponde all’input della Le azioni consistono, infatti, nell’interpretare il programma
macchina di Turing da simulare. (che nel nostro caso corrisponde alla descrizione
della macchina di Turing) e nell'eseguire le operazioni
specificate sui dati in input (nel nostro caso, la sequenza
da elaborare).

Turing non realizzò mai la sua “macchina universale”,


ma è possibile farlo
Benché tecnicamente realizzabile, il congegno elettromeccanico sarebbe stato
lento e poco affidabile per impieghi pratici.
Esistono tuttavia numerosi simulatori software, cioè programmi che simulano il comportamento di una
macchina di Turing: i più semplici tra questi possono essere riprodotti anche con carta e penna.

172 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Chi era Alonzo Church


... e la TESI Matematico formato nelle migliori
università americane, nel 1936
fu il primo a occuparsi della

di CHURCH calcolabilità di un problema.

L’ASSUNTO DI BASE
Dato un problema, possiamo dirlo 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.

PROBLEMA

NON È calcolabile È calcolabile


Un esempio di problema non Se il problema è calcolabile,
calcolabile è quello di un teorema allora ci dev’essere una macchina
matematico di cui ancora non sia stata di Turing capace di risolverlo.
trovata un’esatta dimostrazione.

La conclusione di Church Il metodo


Qualsiasi problema, se risolvibile, Secondo Church, un qualsiasi problema
può essere risolto da un automa. è calcolabile se è Turing-calcolabile,
La tesi di Church presuppone, quindi, cioè se si riesce a costruire una MdT
che non esista alcun formalismo capace applicabile al procedimento.
di risolvere una classe di problemi più Il metodo per stabilire se un problema
ampia di quelli risolti da una macchina è risolvibile o meno consisterebbe quindi
di Turing: in altre parole, se un problema nel trovare la MdT corrispondente: passo
può essere risolto il metodo risolutivo dopo passo, attraverso stati intermedi, si
sarà una versione più o meno complessa trasformano i valori iniziali sino a ottenere
di una macchina di Turing. quelli finali.
In questa prospettiva, è evidente che
l’elaboratore è un automa, ma i problemi
che esso ci aiuta a risolvere non possono
essere altro che computabili.

Teoria della calcolabilità B3 173


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
1. Consideriamo la MdT che somma un’unità a un numero, e rappresentiamo il numero non in notazione deci-
male, ma come semplice sequenza di barre | (al numero 0 viene fatta corrispondere una barra, al numero 1
due barre, al numero 2 tre barre e così via). Supponiamo che dopo le barre tutte le celle siano vuote.

Tabella di transizione

Ingressi
⏐ λ
Stati

q0 ⏐, q0, D ⏐, q1, D
q1 ⏐, q1, D λ, q2, S Configurazioni non previste.
q2 λ, q3, S null Infatti non ci sono transizioni
q3 λ, q4, F null per gli ingressi λ negli stati
q2 e q3

Diagramma di stato

q0 q1
λ, ⏐, D
⏐, ⏐, D
⏐, ⏐, D
λ, λ, S

Anche il diagramma di
q4 stato è un diagramma non
q3 q2 completo. Infatti negli stati
⏐ , λ, F
⏐ , λ, S q2 e q3 non sono previste
transizioni per gli ingressi λ

2. Consideriamo la MdT già presa in considerazione che verifica se, in una sequenza di 0 e 1, il numero di 1
presenti nella sequenza è pari o dispari.

Tabella di transizione

Ingressi
0 1 λ
Stati

q0 0, q0, D 1, q1, D p, q2, F


q1 0, q1, D 1, q0, D d, q2, F
q2 Stop Stop Stop

Diagramma di stato

1, 1, D
q0 q1
1, 1, D
0, 0, D 0, 0, D
λ, p, F λ, d, F
q2

174 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

3. Consideriamo la MdT che calcola la differenza tra due numeri naturali m − n.


Rappresentazione dell’input
I due numeri sono rappresentati da m + 1 barre seguite da * (il simbolo che divide i due numeri) e da n + 1 barre.
L’ipotesi iniziale è che sia m ≥ n.
Computazione
All’inizio della computazione la testina dev’essere posizionata sull’ultima barra del secondo numero. La macchina
cancella una barra della rappresentazione del secondo numero. Per ogni barra del secondo numero si sposta sul
primo e ne cancella una. Il secondo numero serve, quindi, da contatore del numero di iterazioni necessarie.
Rappresentazione dell’output
La macchina si ferma nello stato q6 posizionata su una barra del risultato.

MdT = (Q, X, Y, f, q1, F) dove:


⏐, q1
Q = {q0, q1, q2, q3, q4, q5, q6}
q1 = stato iniziale
X = {⏐, *} alfabeto di lavoro
Y = {⏐, *} alfabeto di ingresso
F = {q0}
Quintuple
q1 ⏐ * q2 S → Cancella una barra della rappresentazione del secondo numero (poiché il numero si
rappresenta con n + 1 barre).
q2 ⏐ ⏐ q3 S → Si sposta a sinistra e si predispone nello stato per iterare

q2 * * F q0 → Si ferma e conclude la computazione

q3 ⏐ ⏐ q3 S → Scorre a sinistra fino al separatore *

q3 * * q4 S → Va all’inizio del secondo numero

q4 ⏐ * q5 D → Cancella una barra del primo numero

q4 * * q4 S → Scorre tutti gli * e si posiziona alla fine della rappresentazione del primo numero

q5 ⏐ ⏐ q6 D → Si sposta a destra e si predispone nello stato per iterare

q5 * * q5 D → Si sposta tra il primo e il secondo numero (ogni volta che cancella una barra aggiun-
ge un asterisco tra i due)
q6 ⏐ ⏐ q6 D → Va alla fine del secondo numero

q6 * * q1 S → Appena incontra il primo * del secondo numero ritorna allo stato iniziale

Tabella di transizione

Ingressi
⏐ *
Stati
q0 null null
q1 *, q2, S null
q2 ⏐, q3, S *, q0, F
q3 ⏐, q3, S *, q4, S
q4 *, q5, D *, q4, S
q5 ⏐, q6, D *, q5, D
q6 ⏐, q6, D *, q1, S

Teoria della calcolabilità B3 175


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Diagramma di stato
q0
*, *, F

q1
q2
⏐, ⏐, D ⏐, *, S
*, *, S
q6

⏐, ⏐, S
⏐, ⏐, D

q5 *, *, S q3
*, *, D
⏐, *, D ⏐, ⏐, S
q4

*,*, S

ORA TOCCA A TE
1. Considera la seguente situazione iniziale di una MdT.

λ λ λ λ λ λ λ

⏐, q0

Supponi di aver eseguito le seguenti quintuple:


1. q0 ⏐ * q1 D
2. q1 ⏐ * q1 D
3. q1 λ F q2 F

Quale delle seguenti è la situazione finale?


A
λ λ λ λ

λ, q2

B
* * λ λ λ

*, q0

C
* * * * * * F λ λ λ

F, q2

176 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

2. Considera la seguente situazione iniziale di una MdT.

( ( ( a + b ) ) ) λ

(, q0

e la seguente situazione finale.

[ [ [ 5 + 7 ] ] ] λ

λ, q1

Da quale dei seguenti insiemi di quintuple è stata prodotta?

1. q0 [ ( q0 D 1. q0 ( [ q0 D 1. q0 ( [ q0 D 1. q0 ( [ q0 F
2. q0 a 5 q0 D 2. q0 a 5 q0 D 2. q0 a 5 q0 D 2. q0 a 5 q0 D
3. q0 b 7 q0 D 3. q0 b 7 q0 D 3. q0 b 7 q0 D 3. q0 b 7 q0 D
4. q0 + + q0 D 4. q0 ) ] q0 D 4. q0 + + q0 D 4. q0 + + q0 D
5. q0 ] ) q0 D 5. q0 λ λ q1 F 5. q0 ) ] q0 D 5. q0 ) ] q1 F
6. q0 λ λ q0 F 6. q0 λ λ q1 F

3. Crea il diagramma di stato relativo alla seguente tabella di transizione.

Ingressi
a b λ
Stati
q0 b, q0, D a, q0, D λ, q1, S
q1 a, q1, S a, q1, S λ, q2, D
q2 a, q2, F b, q2, F λ, q2, F

4. Crea la tabella di transizione relativa al seguente diagramma di stato.

a, b, D
q0 q1 a, b, D
b, a, D
λ, λ, F b, a, D
λ, λ, F
q2

Teoria della calcolabilità B3 177


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

5. Considera la seguente tabella di transizione relativa Ingressi


a una MdT. ⏐ *
Stati
Che cosa accade se iniziamo la computazione con la q0 null null
seguente situazione di partenza? q1 *, q2, S null
q2 ⏐, q3, S *, q0, F

λ λ λ λ λ λ λ

⏐, q0

6. Considera il seguente diagramma di stato relativo a una MdT.

0, *, D
q0 q1 0, *, D
1, 1, D
λ, λ, F λ, λ, F 1, 1, D

Che cosa accade se iniziamo la computazione con la seguente situazione di partenza?

0 1 0 0 1 1 λ λ λ λ

0, q0

178 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME B3
TEORIA DELLA CALCOLABILITÀ
AUDIO

Problemi, algoritmi e modelli Il comportamento della macchina


computazionali di Turing e la sua rappresentazione
Per rendere risolvibile con un computer un Alla decisione dei passi che una macchina di
problema bisogna: trovare un metodo risolutivo Turing deve compiere è preposta l’unità logica
e tradurlo in un algoritmo; scegliere un linguaggio che, sulla base della rilevazione del contenuto
di programmazione e con esso trasformare della cella sulla quale è posizionata in un dato
l’algoritmo in un programma; scegliere istante e del suo stato in quell’istante, decide quale
l’esecutore più adatto. contenuto scrivere nella cella su cui è posizionata,
Per esecutore si intende un modello in quale stato deve passare e in quale direzione
computazionale capace di eseguire algoritmi, si deve muovere la testina di lettura/scrittura.
cioè la rappresentazione astratta di un input, Il comportamento di una MdT può essere descritto
di un procedimento risolutivo e di un output. mediante una funzione di transizione dello stato
Un esecutore può essere realizzato con un e una funzione di trasformazione delle uscite,
modello matematico o con un congegno così come accade per automi. Pertanto può essere
meccanico. I modelli matematici degli esecutori rappresentato in forma tabellare mediante una
si chiamano macchine astratte. tabella di transizione o in forma grafica mediante
Le macchine astratte formano una gerarchia, un diagramma di stato.
dalla più specifica alla più generica: macchine
La macchina di Turing universale
combinatorie, automi a stati finiti, macchine a stack
e la tesi di Church
e macchine di Turing.
Dato uno specifico algoritmo, è possibile ricorrere
Un modello computazionale: la macchina a una macchina di Turing per risolverlo. D’altra
di Turing parte, Turing ha definito la macchina di Turing
La macchina di Turing (MdT) è un modello universale (MdTU), cioè la macchina capace di
matematico astratto di una macchina in grado simulare il comportamento di una qualsiasi altra
di eseguire una computazione. È il più famoso macchina di Turing. Con essa è possibile eseguire
di tali modelli matematici, perché è quello che qualsiasi algoritmo.
consente di risolvere la classe più ampia di Un problema è risolubile o computabile
problemi. o calcolabile se, dati in ingresso certi valori,
La macchina di Turing svolge un ruolo è possibile determinare una funzione che li metta
fondamentale nell’analisi della risolvibilità in relazione con un risultato.
degli algoritmi. Una macchina di Turing esegue un La tesi di Church afferma che un qualsiasi
numero finito di operazioni su un numero finito problema è calcolabile se è Turing-calcolabile,
di simboli. Informalmente è costituita cioè se è risolubile con una macchina di Turing.
di un nastro, una testina di lettura/scrittura,
un’unità di calcolo e un’unità logica.

Teoria della calcolabilità B3 179


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME B3
MAPPA
MODIFICABILE

ESECUTORI O MODELLI
COMPUTAZIONALI

sono il più generico è la

macchine
astratte

dalla più
specifica
alla più generica

macchine
combinatorie

automi
a stati finiti

macchine
a stack

macchine
di Turing

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
1) Che cosa sono gli esecutori?
2) Dalla più specifica alla più generica, quali sono le varie macchine astratte?
3) Qual è la macchina astratta più generica?
4) Quali sono gli elementi costitutivi di una macchina di Turing?
5) Che cosa afferma la tesi di Church riguardo alla risolvibilità di un problema?
6) Con quali due mezzi può essere rappresentata una macchina di Turing?

180 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo B3
1. Qual è la corretta interpretazione della seguente 4. Considera il seguente diagramma di stato.
quintupla?
q0 1 0 q1 D
1, 1, D
A In q1 se leggo 1 scrivo 0 vado nello stato q0 q0 q1
e mi sposto a destra 0, 0, D 0, 0, D
1, 1, D
B In q0 se leggo 1 scrivo 0 vado nello stato q1
e mi sposto a destra
λ, p, F λ, D, F
C In q0 se leggo 0 scrivo 1 vado nello stato q1 q2
e mi sposto a destra
D In q0 scrivo 1 seguito da 0 vado nello stato q1
e mi sposto a destra Quale delle seguenti affermazioni è vera?

2. Supponi che la testina di lettura e scrittura A Dopo aver letto la sequenza di ingresso 111
di una MdT si trovi sul simbolo 1 di una sequenza la MdT si troverà nello stato q0
di 0 e 1 presenti sul nastro di una MdT. B Dopo aver letto la sequenza di ingresso 00011
Che cosa accade con l’esecuzione delle seguenti la MdT si troverà nello stato q1
quintuple? C Dopo aver letto la sequenza di ingresso 1111
q0 1 0 q0 F la MdT si troverà nello stato q0
q0 0 1 q0 F D Dopo aver letto la sequenza di ingresso 111011
la MdT si troverà nello stato q0
q0 λ λ q0 F
A Viene scambiato continuamente lo 0 con 1 5. Considera la seguente situazione iniziale
e viceversa senza che la MdT si muova di una MdT.
dalla prima cella del nastro
B La MdT non può iniziare a computare
⏐ a a λ λ λ λ λ λ λ
C Tutti gli 0 vengono cambiati in 1
D Tutti gli 1 vengono cambiati in 0
a, q2
3. Considera la seguente tabella di transizione.
Supponi di aver eseguito le seguenti quintuple:
Ingressi
0 1 λ • q0 a b q1 D
Stati
• q1 a b q1 D
q0 0, q0, D 1, q1, D p, q2, F • q1 λ F q2 F
q1 0, q1, D 1, q0, D d, q2, F
q2 Stop Stop Stop Quale delle seguenti è la situazione finale?
A
Quale delle seguenti affermazioni è vera?
⏐ b a λ λ λ λ λ λ λ
A Dopo aver letto la sequenza di ingresso 1111
la MdT produrrà in output una “d”
B Dopo aver letto la sequenza di ingresso 1110001 λ, q2
la MdT produrrà in output una “p”
C Dopo aver letto la sequenza di ingresso 00000 B
la MdT produrrà in output una “p”
D Dopo aver letto la sequenza di ingresso 0000 b b λ λ λ λ λ λ λ
la MdT produrrà in output una “d”

a, q0

Teoria della calcolabilità B3 181


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


C
e le tue COMPETENZE
b b λ λ λ λ λ λ λ

F, q2 7. • Contatore 1
Considera una stringa costituita da A e B e
D terminante per λ. Progetta una macchina di Turing
che produca S, se la stringa contiene un numero
⏐ b b F λ λ λ λ λ λ pari di A, N nel caso contrario.

8. • Successore
F, q2 Progetta una macchina di Turing che, ricevendo un
numero intero positivo, calcoli il suo successore.

6. Considera la seguente situazione iniziale 9. • Precedente


di una MdT.
Progetta una macchina di Turing che calcoli
il precedente di un numero naturale.
( ( ( a * b ) ) ) λ
10. • Sottrazione
Progetta una macchina di Turing che effettui
(, q0 la sottrazione tra due numeri naturali.

E la seguente situazione finale.


11. • Copia
Progetta una macchina di Turing che ricopi a
[ [ [ x + y ] ] ] λ destra della TLS la stringa composta da A e M
che è posta a sinistra.

12. • Specchio
λ, q1
Progetta una macchina di Turing che ricopi
in modo speculare la stringa di valori ABC.
Da quale dei seguenti insiemi di quintuple è stata
prodotta? 13. • Sostituzione
Progetta una macchina di Turing che sostituisca
A B
il simbolo X con il simbolo Y e il simbolo Y con
1. q0 [ ( q0 D 1. q0 ( [ q0 F il simbolo X di una stringa presente sul nastro.
La computazione ha termine quando viene
2. q0 a x q0 D 2. q0 a x q0 D incontrato il simbolo /.
3. q0 b y q0 D 3. q0 b y q0 D
14. • Massimo
4. q0 * + q0 D 4. q0 * * q0 D
Progetta una macchina di Turing che calcoli
5. q0 ] ) q0 D 5. q0 ) ] q1 F il massimo tra due numeri.
6. q0 λ λ q0 F
15. • Contatore 2
Progetta una macchina di Turing che riconosca
C D le stringhe che hanno lo stesso numero di 0 e 1.
1. q0 ( [ q0 D 1. q0 ( [ q0 F 16. • Considera la seguente situazione in cui si trova
2. q0 a x q0 D 2. q0 a x q0 D una MdT:
3. q0 b y q0 D 3. q0 b y q0 D
λ λ b a a b λ λ λ λ
4. q0 * + q0 D 4. q0 ) ] q0 D
5. q0 ) ] q0 D 5. q0 λ λ q1 F
b, q0
6. q0 λ λ q1 F

182 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Scrivi le quintuple necessarie per passare 19. •• Qual è il risultato dell’esecuzione


alla situazione seguente: delle seguenti quintuple?
A q0 1 0 q0 D
λ λ a a a b λ λ λ λ
B q0 0 1 q0 D
C q0 λ λ q0 F
λ, q1
20. •• Qual è il risultato dell’esecuzione
delle seguenti quintuple?
17. • Considera la seguente situazione in cui si trova
una MdT: A q0 a a q0 D
B q0 b c q0 D
λ λ a b a b λ λ λ λ C q0 c c q0 D
D q0 λ λ q0 F

b, q0 21. •• Considera il seguente diagramma di stato


relativo a una MdT:
Scrivi le quintuple necessarie per passare a, b, D
alla situazione seguente:
a, b, D
λ λ b a b a λ λ λ λ q0 q1
b, b, D

λ, q1 λ, λ, F
b, b, D
18. • Considera la seguente situazione in cui si trova Che cosa accade se iniziamo la computazione
una MdT: con la seguente situazione di partenza?

λ λ 1 0 1 0 λ λ λ λ a a b b a a λ λ λ λ

1, q0 a, q0

Scrivi le quintuple necessarie per passare 22. ••• Spiega perché un ristorante è un classico
alla situazione seguente: esempio di macchina astratta. In particolare,
individua i seguenti elementi: la memoria,
λ λ a b a b λ λ λ λ le operazioni primitive, le operazioni e strutture
dati per gestire il trasferimento dati, le operazioni
e strutture dati per gestire il controllo del flusso
λ, q1 di esecuzione, l’interprete.

Teoria della calcolabilità B3 183


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B4 La complessità
computazionale

IMPARERAI…

Quando puoi definire efficiente Di cosa si occupa la complessità Come si classificano i problemi
un algoritmo computazionale in ordine alla complessità

1 Qualità di un algoritmo
Spesso si è interessati a soluzioni di problemi che, nell’impiego delle risorse umane e di calcolo,
vengono ritenute economiche.

L’impiego dell’algoritmo più efficiente si traduce in un risparmio di risorse computazionali


e, di conseguenza, in un risparmio di tempo e di denaro.

Durante la fase di analisi dei problemi è emerso che, spesso, esistono più algoritmi per risolvere
un problema: un classico esempio è quello della ricerca di un elemento in un array. In partico-
lare abbiamo esaminato l’algoritmo di ricerca sequenziale e quello di ricerca binaria, cioè due
algoritmi risolutivi dello stesso problema. Quale preferire? Quali sono i criteri da seguire per
valutare la bontà di un algoritmo? La risposta non è immediata.
Di ogni algoritmo dobbiamo considerare due aspetti:
• la sua organizzazione interna, ovvero la struttura data alle sue istruzioni (organizzazio-
ne delle sue strutture di controllo) e le strutture dati utilizzate (tipi di variabili semplici e
strutturate);
• le risorse necessarie per eseguirlo (in particolare la memoria e il processore), strettamen-
te legate allo spazio e al tempo necessari alla sua esecuzione.

La bontà di un algoritmo
Ogni algoritmo può essere tradotto in programmi scritti in differenti linguaggi di programma-
zione e ogni programma verrà, a sua volta, trasformato in più processi a tempo di esecuzione.
Nella figura a pagina seguente riassumiamo questi concetti: un problema può avere più algo-
ritmi che lo risolvono; ognuno di questi ultimi può essere tradotto in più programmi; a ogni
programma corrispondono più processi a tempo di esecuzione.
Per valutare la bontà di un algoritmo, quindi, non ci riferiremo direttamente all’algoritmo stes-
so, ma alle risorse che utilizzerà in quanto entità dinamica a tempo di esecuzione.
Lo studio della bontà degli algoritmi porta a un ampliamento dei nostri traguardi formativi.

184 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Processo 1

Programma 1 ...

Algoritmo 1 ... Processo K

... Programma M
...
Algoritmo N
...

Finora, infatti, l’obiettivo dell’attività di programmazione è stato il seguente:

Dato un problema, scriverne la soluzione sotto forma di algoritmo corretto e funzionante


(sia dal punto di vista sintattico, sia da quello semantico) e codificarlo in un linguaggio di
programmazione.

Ora, invece, l’obiettivo è:

Dati uno o più algoritmi che risolvono un problema, confrontarli per individuare il mi-
gliore sulla base di un’analisi qualitativa.

La misura della qualità


Dato per scontato che gli algoritmi siano corretti, cercheremo di Consideriamo un algoritmo
assegnare loro una misura della qualità. Le principali caratte- sviluppato per la gestione di un
missile. Se i tempi di esecuzione non
ristiche da valutare sono: rispettano determinati intervalli di
• lo spazio di memoria; tempo (sistemi real-time), il missile
può provocare una catastrofe.
• il tempo di esecuzione di un algoritmo.

■ Quando parliamo di spazio di memoria, intendiamo l’area di memoria occupata da un


processo durante la sua esecuzione, dove, con il termine memoria, indichiamo la memoria
di lavoro. Possiamo indicarla anche come risorsa spazio. Ci riferiamo sia a quella utiliz-
zata per la memorizzazione delle strutture dati (definite nell’algoritmo), sia a quella stret-
tamente necessaria per la memorizzazione del codice stesso, dei suoi dati di input e dei
risultati intermedi.
■ Parlando di tempo di esecuzione, invece, intendiamo il tempo necessario a eseguire il
processo legato all’algoritmo. Possiamo indicarlo anche come risorsa tempo.
L’evoluzione tecnologica fornisce ormai computer dotati di grandi capacità di memoria a
costi relativamente bassi. Per questa ragione, la risorsa spazio è diventata meno impor-
tante nella valutazione dei problemi. Per esempio, se un’immagine non viene visualizzata
entro un lasso di tempo ritenuto ragionevole si avrà un degrado delle prestazioni che ren-
derà il sistema inefficiente o poco utilizzabile. Dobbiamo quindi dare ai nostri algoritmi
un’organizzazione interna tale che il processo corrispondente impieghi il minor numero di
risorse possibili durante la sua esecuzione.
Nel seguito della nostra analisi, quindi, ci occuperemo esclusivamente della valutazione del
tempo di esecuzione del processo legato a un algoritmo. Per farlo, confronteremo tra loro due
o più algoritmi risolutivi di una stessa classe di problemi, sulla base degli stessi parametri rile-
vanti, in modo da poter effettuare un’analisi qualitativa degli algoritmi stessi.

La complessità computazionale B4 185


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La scelta dei parametri deve essere mirata, in quanto da essi dipen-


dono le informazioni sul comportamento dell’algoritmo.
Gli algoritmi considerati saranno sempre algoritmi buoni, cioè do-
vranno essere:
• soluzioni semplici, efficaci e, soprattutto, generali;
• facilmente modificabili in caso di necessità;
• indipendenti dal linguaggio di programmazione che si vuole
utilizzare.

2 Costo di un algoritmo
Un modo non adatto per valutare il tempo di esecuzione
di un algoritmo
Esiste un semplicissimo modo di valutare il tempo di esecuzione di un algoritmo: esprimerlo in
unità solari. Per esempio, potremmo servirci di un orologio ed esprimere il tempo in secondi.

Per valutare il tempo di esecuzione in unità solari è sufficiente eseguire il processo corri-
spondente a un primo algoritmo e cronometrare il tempo impiegato per la sua esecuzione.
Successivamente se ne esegue un secondo e si fa altrettanto. Confrontando i tempi, si arriverà
all’individuazione dell’algoritmo più efficiente.

Tale metodo però, non è assolutamente accettabile: apparentemente è corretto, ma i risultati


non sono attendibili, in quanto dipendono esclusivamente dalle condizioni in cui viene ese-
guito il test, e cioè:
• dalla velocità di esecuzione dell’elaboratore sul quale è effettuata la prova;
• dalla velocità dell’interprete o del compilatore utilizzato per la codifica;
• dalla dimensione e dalla disposizione dei dati forniti in input, cioè da quanti dati arri-
vano in input e da come vengono proposti (per esempio, in modo ordinato, disordinato e
così via).
È evidente, infatti, che il confronto potrà essere valido solo se le condizioni di esecuzione sono
uguali in entrambi i casi, quindi se:
• i programmi sono tradotti utilizzando lo stesso interprete o compilatore;
• il test è svolto sullo stesso computer, dedicato esclusivamente alla sua esecuzione;
• l’esecuzione del test avviene più volte con dati di input diversi per dimensione e disposi-
zione.
Queste ultime considerazioni ci conducono ad affermare che non si può assolutamente valuta-
re la bontà di un algoritmo servendosi di unità solari, in quanto, malgrado notevoli e minuziosi
accorgimenti, non si può effettuare un’analisi completa.
Per questo motivo si dice che occorre considerare esclusivamente l’algoritmo in sé e non la sua
implementazione, in quanto:
• l’algoritmo è la descrizione generale dell’intero processo di calcolo;
• l’algoritmo ignora tutti i dettagli implementativi legati al linguaggio di programmazione;
• il tempo necessario per l’esecuzione dell’algoritmo è indicativo del tempo di esecuzione del
processo corrispondente.

186 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Un modo adatto per valutare il tempo di esecuzione di un algoritmo


Abbiamo detto che la bontà di un algoritmo corretto si valuta in base al tempo impiegato per
la sua esecuzione e che tale tempo non può essere espresso in unità solari. È quindi necessario
un metodo di valutazione più idoneo.

Per ottenere una valutazione affidabile, misureremo il tempo di esecuzione in numero di


operazioni (assegnazioni, scambi, confronti, operazioni di I/O e così via) che l’algoritmo
deve compiere per fornire i risultati. Chiameremo tale numero costo dell’algoritmo.

Riferendoci, per esempio, a un linguaggio strutturato, possiamo introdurre alcune regole di


valutazione per il calcolo del costo delle istruzioni di un algoritmo.
■ Le istruzioni semplici, quali lettura, scrittura, assegnamento, hanno un costo pari a uno.
Costo = 1

■ I costrutti iterativi, quali MENTRE ... FINEMENTRE, RIPETI ... FINCHÉ, hanno un co-
sto pari alla somma dei costi del test e del corpo del ciclo.
In particolare:
• il test del ciclo, essendo un’istruzione semplice, ha complessità pari a uno;
• il costo del corpo del ciclo, invece, è dato dalla somma dei costi delle singole istruzioni.
Naturalmente va tenuto conto di quante volte ciascuna istruzione viene eseguita. Nel
calcolo non includiamo mai le istruzioni di apertura e di chiusura del corpo del ciclo.
Se il ciclo viene iterato K volte, allora il costo è:
Costo = CostoTest * K + CostoCorpo * K
Nei cicli a controllo in testa però, il test viene eseguito K + 1 volte e non K volte (l’ultimo
test, il (K + 1)-esimo, è quello di uscita dal ciclo), quindi:
Costo = CostoTest * (K + 1) + CostoCorpo * K

■ I costrutti iterativi, quali PER … ESEGUI, hanno un costo ot-


In base a quanto si è affermato
tenuto dalla somma dei seguenti costi: le istruzioni semplici X ← X + Y
• costo dovuto all’inizializzazione della variabile del ci- e l’istruzione X ← X + ((Y + Z) +
(K + W)) / ((Y + 2) * (Y − 2))2
clo: pari a 1 (eseguito una sola volta all’inizio); avrebbero entrambe costo pari
• costo di condizione di fine ciclo: pari al numero di volte a uno. Ovviamente questo non
che il ciclo viene eseguito più un costo pari a 1 dovuto al può essere vero, in quanto la
prima istruzione richiede solo
test finale che consente di uscire dal corpo del ciclo;
un’addizione, mentre la seconda
• costo del corpo del ciclo: pari alla somma dei costi delle richiede una serie di operazioni
singole istruzioni, tenendo conto delle K volte che il corpo tra cui moltiplicazioni e divisioni
del ciclo viene eseguito; che necessitano di più tempo
per poter essere eseguite. Le
• costo di incremento della variabile del ciclo: pari al nu- singole operazioni vanno, quindi,
mero di volte che il ciclo viene eseguito. adeguatamente valutate.
Si può, per esempio, assegnare
Costo = 1 + CostoTest * (K + 1) + CostoIncremento * K + costo 0 alla somma e 1 alle
+ CostoCorpo * K moltiplicazioni e divisioni. A
questo punto del nostro studio,
■ Il costrutto di selezione SE ... ALLORA ha un costo pari alla per semplificare la trattazione,
supporremo che tutte le
somma dei costi del test (che ormai sappiamo essere uguale operazioni abbiano costo zero.
all’unità) più quello delle singole istruzioni semplici contenute

La complessità computazionale B4 187


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

all’interno del ramo ALLORA. Analogamente viene calcolato il   costo dell’istruzione di


selezione binaria SE ... ALLORA ... ALTRIMENTI, dove conveniamo di utilizzare il costo
massimo tra i due rami.
Costo = 1 + MAX(CostoRamoALLORA, CostoRamoALTRIMENTI)

■ L’istruzione di chiamata di un sottoprogramma ha costo pari a quello dell’intero sotto-


programma, tenendo conto delle regole descritte nei precedenti punti, più il costo dell’i-
struzione di chiamata, che è pari a uno.
Costo = 1 + CostoSottoprogramma

■ L’istruzione composta (per esempio, annidamenti di strutture di controllo e blocchi di


istruzioni) ha una complessità pari alla somma dei costi delle singole istruzioni semplici
che la compongono.
Costo = Σ CostoIstruzioniSemplici

Il costo dominante
Utilizzando queste regole, è possibile eliminare gli inconvenienti a cui abbiamo fatto cenno,
legati al sistema di elaborazione e al compilatore o interprete utilizzato. I risultati ottenuti
sono, però, approssimati. Questo perché è consuetudine occuparsi solo di operazioni dal costo
dominante, quali, per esempio, confronti e moltiplicazioni, trascurando le istruzioni meno
onerose dal punto di vista esecutivo, quali addizioni, incrementi, decrementi. Possiamo ora
dire che:

Il tempo di esecuzione di un algoritmo è proporzionale al suo costo.

Infatti, per ottenere il tempo totale di esecuzione di un algoritmo, basterà moltiplicare il co-
sto complessivo dell’algoritmo per il tempo di esecuzione di un’istruzione di costo unitario
(tempo unitario), espresso in secondi, se questo ci è noto.

OSSERVA COME SI FA
1. Esempio di costo per istruzioni semplici.
Le seguenti istruzioni semplici hanno tutte costo pari a 1.

LEGGI(N) costo pari a 1


SCRIVI("Inserisci un numero") costo pari a 1
I←I+1 costo pari a 1

2. Esempio di costo per costrutto iterativo.


Consideriamo il corpo dell’algoritmo Alg1 che calcola la somma dei primi N numeri naturali.

INIZIO // Algoritmo Alg1


SCRIVI("Inserisci un numero")
LEGGI(N)

188 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I←1
Som ← 0
MENTRE (I ≤ N) ESEGUI
Som ← Som + I
I←I+1
FINEMENTRE
SCRIVI("La somma dei primi", N, "numeri è", Som)
FINE

Se N = 10, il costo del solo ciclo è pari a 31, valore ottenuto da (3 * 10) + 1. Infatti il ciclo è costituito da un test che
ha costo uguale a 1 e da un corpo composto da 2 istruzioni semplici (non consideriamo l’istruzione FINEMENTRE),
anch’esse di costo unitario: il costo dell’intero ciclo è, pertanto, uguale a 3. Considerato che il ciclo deve essere
eseguito dieci volte, il costo totale è dato da 3 * 10 = 30.
Ma non abbiamo ancora finito! Quando il ciclo viene eseguito per la decima volta, la variabile I viene incrementata di
un’unità assumendo, così, il valore 11. La condizione di ciclo viene eseguita un’undicesima volta in modo da poter
verificare la falsità della condizione e, quindi, consentirne l’uscita. Tale esecuzione comporta l’aggiunta di un’ulterio-
re unità portando, così, il valore a 31. Il costo complessivo dell’intero algoritmo (costo del ciclo + costo delle altre
istruzioni) è infine 31 + 5 = 36, includendo anche le 4 istruzioni prima del ciclo e l’istruzione di scrittura finale.
Generalizzando, quindi, per N qualsiasi il costo è:
(3 * N) + 1 + 5 = 3N + 6.

3. Esempio di costo per costrutto di selezione.


SE (Y > 0)
ALLORA
R←1
Z←2
FINESE

Il costo del costrutto SE ... ALLORA precedente è pari a 3. Questo valore si ottiene sommando 1 per il test della
condizione e 2 per le istruzioni contenute nel ramo ALLORA.

SE (Y > 0)
ALLORA
R←1
ALTRIMENTI
Z←2
P←0
R←2
FINESE

Il costo del costrutto SE ... ALLORA ... ALTRIMENTI precedente è pari a 4. Questo valore si ottiene sommando 1 per
il test della condizione, 3 per le istruzioni del ramo ALTRIMENTI (si sceglie il ramo ALTRIMENTI poiché le istruzioni in
esso contenute sono in numero maggiore rispetto a quelle del ramo ALLORA).

La complessità computazionale B4 189


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

4. Esempio di costo per chiamata di un sottoprogramma.


Riprendiamo l’esempio dell’algoritmo Alg1 e modifichiamolo:
INIZIO // ALGORITMO Alg1Bis
SCRIVI("Inserisci un numero") // (1)
LEGGI(N) // (2)
I←1 // (3) FUNZIONE Somma (X:INTERO;
Som ← 0 // (4) Y:INTERO): INTERO
MENTRE (I ≤ N) ESEGUI // (5) VARIABILI
Som ← Somma(I,Som) // (6) S : INTERO
I←I+1 // (7) INIZIO
FINEMENTRE S←X+Y
SCRIVI("La somma dei primi", N, "numeri è", Som) // (8) RITORNO(S)
FINE FINE

Per N = 10 abbiamo:
Costo di Alg1Bis = 5 + CostoCostruttoMENTRE =
= 5 + (3 + CostoChiamata + CostoFunzioneSomma) * 10 + 1 =
= 5 + (3 + 1 + 2) * 10 + 1 =
= 66

dove:
5 è il costo delle istruzioni (1), (2), (3), (4) e (8)
3 è il costo delle istruzioni (5), (6) e (7)
2 è il costo delle istruzioni della funzione Somma()

Per N qualsiasi abbiamo:


Costo di Alg1Bis = 5 + CostoCostruttoMENTRE =
= 5 + (3 + CostoChiamata + CostoFunzioneSomma) * N + 1 =
= 5 + (3 + 1 + 2) * N + 1 =
= 6N + 6

5. Esempio di costo per istruzione composta.


SE (X > 0)
ALLORA
SE (Y > 0)
ALLORA
R←1
ALTRIMENTI
R←2
T←1
FINESE
Z←3
FINESE

Costo istruzione composta = CostoTestSEEsterno + CostoRamoALLORASEEsterno =


= 1 + CostoSEInterno + CostoIstruzioneSemplice =
= 1 + (1 + 2) + 1 = 5

190 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

6. Costo per costrutto iterativo MENTRE ... ESEGUI.


ALGORITMO A1
VARIABILI
I,N:INTERO
INIZIO
I←0
Il ciclo MENTRE si compone di un test (I < N)
MENTRE (I < N) ESEGUI e di un corpo costituito da una operazione di
I←I+1 assegnazione (I ← I + 1). Per ogni test positivo
si esegue un’assegnazione, quindi i costi sono:
FINEMENTRE • assegnazione esterna al ciclo: 1;
FINE • numero di test del ciclo: N+1
(compreso
Costo di A1 = CostoAssegnazioneEsterna + CostoCostruttoMENTRE = il test finale);
= 1 + ((1 + 1) * N + 1) = 1 + 2 * N + 1 = 2 + 2 * N • assegnazioni interne al ciclo: 1 * N.

7. Costo per costrutto iterativo RIPETI ... FINCHÉ.


ALGORITMO A2
VARIABILI
I,J,N:INTERO
INIZIO
I←0
RIPETI
I←I+1
J ← J * 3 + 42
FINCHÉ(I ≥ N) Il corpo del ciclo si compone di due passi
FINE base. I costi sono:
• assegnazione esterna al ciclo: 1;
• numero di test: N;
Costo di A2 = CostoAssegnazioneEsterna + CostoCostruttoRIPETI = • assegnazioni interne: 2 * N.
= 1 + ((1 + 2) * N) = 1 + 3 * N = 1 + 3 * N

8. Costo per costrutto iterativo PER ...: calcolo dei primi N numeri pari.
FUNZIONE SommaIPrimiNumPari(N: INTERO): INTERO
VARIABILI
M, I, P:INTERO
INIZIO
M←0
PER I ← 1 A N ESEGUI
P←2*I
M←M+P
FINEPER
Per la funzione SommaIPrimiNumPari
RITORNO(M) individuiamo i seguenti costi:
FINE • assegnazione esterna al ciclo: 1;
• assegnazione iniziale ciclo PER: 1;
• numero di test del ciclo PER: N + 1;
Costo di SommaIPrimiNumPari = CostoAssegnazioneEsterna + • incrementi del ciclo PER: N;
CostoCicloPER = • corpo del ciclo PER: 2 * N;
= 1 + (1 + N + 1 + 2 * N + N) + CostoRITORNO = 1 + (2 + 4N) + 1 = • istruzione RITORNO: 1.
=4*N+4

La complessità computazionale B4 191


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

9. Costo per costrutto iterativo MENTRE ... ESEGUI.


ALGORITMO A3
VARIABILI
I,J,N:INTERO
INIZIO
I←0
MENTRE (I < 2 * N) ESEGUI
I←I+1
Il test del ciclo MENTRE viene eseguito
J ← J * 3 + 4367 2 * N + 1 volte (compreso il test finale)
e il corpo è costituito da due istruzioni.
FINEMENTRE
Pertanto i costi sono:
FINE • assegnazione esterna al ciclo: 1;
• numero di test: 2*N+1
(compreso
Costo di A3 = CostoAssegnazioneEsterna +
il test finale);
+ CostoCostruttoMENTRE = 1 + ((1 + 2) * (2 * N) + 1) = • assegnazioni interne: 2 * (2 * N).
=1+3*2*N+1=2+6*N

10. Costo per costrutti iterativi annidati.


ALGORITMO A4
VARIABILI
I,J,N:INTERO
INIZIO
I←0
MENTRE (I < N) ESEGUI
PER J ← 0 A N ESEGUI
SCRIVI("CIAO!")
FINEPER Abbiamo un ciclo PER per ogni ciclo MENTRE,
una istruzione di output per ogni ciclo PER
I←I+1 e un’assegnazione per ogni ciclo MENTRE.
Pertanto, i costi sono:
FINEMENTRE
• assegnazione esterna: 1+
FINE • test MENTRE: N+1+
• ciclo MENTRE: N*(
• assegnazione iniziale ciclo PER: 1 +
Costo di A4 = costo inizializzazione esterna al ciclo + • controlli ciclo PER: N+1+
+ CostoCostruttoMENTRE = 1 + ((CostoCostruttoPER + 1) * N + 1) = • incrementi ciclo PER: N+
= 2 + CostoCostruttoPER * N + N + 1 = • corpo ciclo PER: N+
= 3 + (1 + N + 1 + N + N + 1) * N + N + 1 = • assegnazione ciclo MENTRE: 1)
= 4 + (3 * N + 3) * N + N =
= 4 + 3 * N2 + 3 * N + N = 3 * N2 + 4 * N + 4

192 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

11. Costo per costrutti iterativi annidati.


FUNZIONE Funz(VAR N: INTERO; VAR M: INTERO): INTERO
VARIABILI
X,Y,I:INTERO
INIZIO
X←0
PER I ← 1 A N ESEGUI
PER J ← 1 A M ESEGUI
X←X+1 Abbiamo un ciclo PER esterno e un ciclo PER
Y←X interno, due istruzioni per ogni ciclo PER interno
e una istruzione RITORNO. Pertanto, i costi sono:
FINEPER • assegnazione esterna: 1+
• assegnazione iniziale PER esterno: 1+
FINEPER • test PER esterno: N+1+
• corpo ciclo PER esterno N*(
RITORNO (X)
– assegnazione iniziale ciclo PER interno: 1 +
FINE – controlli ciclo PER interno: M+1+
– incremento ciclo PER interno: M+
– corpo ciclo PER interno: 2M) +
Costo di Funz = 1 + (CostoCostruttoPEREsterno) + 1 = • incremento ciclo PER esterno: N
= 2 + (1 + N + 1 + N + N * CostoCostruttoPERInterno) = • istruzione RITORNO: 1
= 4 + 2N + N * (1 + M + 1 + M + 2M) = 4 + 4N + 4N * M

3 Complessità computazionale
Il numero di operazioni di un algoritmo è legato alla dimensione dei dati di input. Nell’algo-
ritmo Alg1 relativo alla somma dei primi N numeri interi, analizzato nel paragrafo precedente,
il numero di operazioni è strettamente legato a N, dove N è, appunto, la dimensione dei dati in
input. Possiamo, allora, definire il numero di operazioni in funzione di tale dimensione.

Usiamo la notazione generica T(N) per indicare la funzione matematica che indica la relazio-
ne esistente tra il numero di operazioni di un programma e la dimensione N dei dati in input.
La funzione T(N) è chiamata complessità computazionale (in tempo) o semplicemente
complessità dell’algoritmo. La dimensione N dei dati in input è anche detta dimensione
del problema.

Nell’esempio dell’algoritmo Alg1 creato per calcolare la somma dei primi N numeri naturali
possiamo quindi scrivere:

Dimensione Numero
del problema di operazioni
complessità (Alg1) = T(N) = TAlg1(N) = 3N + 6

La complessità computazionale B4 193


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Riepilogando: la complessità T(N) di un algoritmo è una funzione che lega la dimensione N del
problema al numero di operazioni eseguite dall’algoritmo per risolvere quel problema.
Poiché T(N) è una funzione, possiamo rappresentarla tramite un diagramma cartesiano, po-
nendo sull’asse delle ascisse la dimensione N del problema e su quello delle ordinate il numero
di operazioni. La complessità dell’algoritmo Alg1 si può rappresentare come nella figura in
basso.
Otteniamo una retta perché la complessità T(N) = 3N + 6 rappresenta l’equazione di una retta.
Per convenzione considereremo sempre N maggiore o uguale a 1, intendendo che deve esserci
almeno un dato in input (N è, infatti, la dimensione dei dati in input).

T(N): numero
di operazioni

TAlg1(N)

(1,9)

N: dimensione
1 del problema

È più corretto parlare di dimensione del problema invece che di dimensione


dei dati in input, perché la dimensione N varia da problema a problema
e spesso non è facilmente individuabile.
Consideriamo, per esempio, il seguente problema: trovare la somma dei primi
N numeri primi.
Supponiamo che il valore di input di N sia 100. Qual è la dimensione N
del problema? Si potrebbe pensare che sia 1 (in quanto viene fornito solo
un numero, 100), ma non è così: se venisse fornito un numero più grande di
100, sarebbe necessario trovare più numeri primi e fare quindi più operazioni.
La dimensione del problema è quindi il valore dell’unico numero dato, cioè
100 e, in generale, è N. Ricordiamo che, malgrado possa sembrare banale,
spesso non è facile individuare la dimensione di un problema.

194 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
■ Un esempio di determinazione della complessità computazionale.
Consideriamo i tre algoritmi di seguito riportati, aventi N come dimensione del problema: il primo calcola N5, il secon-
do calcola XN, il terzo calcola XN con un metodo diverso. Determiniamo la complessità di ciascuno di essi.
ALGORITMO Alg2 ALGORITMO Alg3 ALGORITMO Alg4
VARIABILI VARIABILI VARIABILI
X, N, I:INTERO Q, X, N, I:INTERO Q, X, N, I:INTERO
INIZIO INIZIO INIZIO
SCRIVI("Inserisci il valore N") SCRIVI("Inserisci la base") SCRIVI("Inserisci la base")
LEGGI(N) LEGGI(X) LEGGI(X)
X←N SCRIVI("Inserisci l’esponente") SCRIVI("Inserisci l’esponente")
I←1 LEGGI(N) LEGGI(N)
MENTRE (I < 5) ESEGUI Q←1 Q←1
X←X*N I←N I←N
I←I+1 MENTRE (I > 0) ESEGUI MENTRE (I > 1) ESEGUI
FINEMENTRE Q←Q*X SE ((I MOD 2) = 0)
SCRIVI(N) I←I−1 ALLORA
FINE FINEMENTRE X←X*X
SCRIVI(Q) I ← I DIV 2
FINE ALTRIMENTI
Q←Q*X
• L’algoritmo Alg2 ha complessità pari a 18 qualunque sia N, poiché ri- I←I−1
chiede 18 operazioni elementari; possiamo esprimere la complessità
come TAlg2(N) = 18. Infatti, oltre alle istruzioni iniziali e a quella finale, di FINESE
costo complessivo pari a 5, il ciclo (che comprende un test e due istru- FINEMENTRE
zioni, con costo ciclo = 3) viene ripetuto 4 volte. Il test viene ripetuto Q←Q*X
un’altra volta, prima di constatare che la condizione è diventata falsa. SCRIVI(Q)
Quindi TAlg2(N) = 5 + 4 * 3 + 1 = 18.
FINE
• L’algoritmo Alg3 ha complessità pari a 3N + 8, possiamo esprimerla
come TAlg3(N) = 3N + 8. Infatti, oltre alle istruzioni di inizializzazione e di I/O (costo totale = 7), il ciclo (costo totale
= 3, compreso il test) viene ripetuto N volte prima di uscire. Allora TAlg3(N) = 7 + 3N + 1 = 3N + 8.
• Determinare la complessità dell’algoritmo Alg4 non è semplice come per i due algoritmi precedenti, anzi è abba-
stanza macchinoso, ma proviamoci ugualmente! Dobbiamo fare le seguenti considerazioni: supponiamo che N
sia una potenza di 2. Poiché nell’algoritmo Alg4 la variabile I rappresenta l’esponente (I ← N), possiamo genera-
lizzare che I = 2K per un qualsiasi valore di K > 0. Dividere I per 2 (I ← I div 2), quindi, è equivalente a sottrarre
1 da K. Pertanto N div 2 = (2K−1). Ogni iterazione decrementa K di 1. Alla fine del ciclo i = 1, cosicché k = 0.
Perciò il numero di cicli è k: Alg4 fa esattamente log2 N
iterazioni. Infatti: log2 N = log2 (2K) = K * log2 2 = K. Il co- T(N): numero
sto del corpo del ciclo è Test del ciclo + Costo del costrut- di operazioni
to SE = 1 + (1 + 2) = 4. Quindi il costo totale del ciclo è TAlg4(N)
TAlg3(N)
4 * log2 N + 1, dove l’1 finale si riferisce all’ultimo test. Il
costo totale di Alg4 è pertanto: 4 * log2 N + 8, consideran-
do anche le istruzioni di inizializzazione e di I/O. Avremo 20
TAlg2(N)
perciò TAlg4(N) = 4 * log2 N + 8. Se N non è una potenza
di 2, si dimostra che TAlg4(N) è proporzionale a 4 * log2 N.
10
Qui e nel seguito indicheremo con log il logaritmo in base 2,
ovvero in generale log N sta per log2 N.
Possiamo esprimere le funzioni di complessità dei tre algorit- N: dimensione
mi considerati con i diagrammi visibili nella figura. 10 20 del problema

La complessità computazionale B4 195


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

4 Complessità e valori dei dati di ingresso


Per effettuare una buona analisi dell’algoritmo, spesso è necessario valutare la sequenza di dati
che si presentano in input e i loro specifici valori. Pertanto, diremo che:

La complessità è legata ai valori dei dati in input e a come i dati sono disposti, oltre che alla
loro dimensione.

Consideriamo due algoritmi di ricerca: Alg5 e Alg6. Essi svolgono lo stesso compito, ossia la
ricerca di un elemento all’interno di un vettore già ordinato. Pur operando in maniera diversa,
i due algoritmi forniscono lo stesso risultato. Per semplicità, riportiamo soltanto la funzione
che implementa l’operazione di ricerca. È utile valutare e confrontare la complessità degli al-
goritmi.

FUNZIONE RicercaSequenziale(VAR Vet: Vettore; FUNZIONE RicercaBinaria(VAR Vet: Vettore;


VAR N: INTERO; VAR X: INTERO): VAR N: INTERO; VAR X: INTERO):
BOOLEANO // Alg5 BOOLEANO // Alg6
VARIABILI VARIABILI
I:INTERO Primo, Ultimo, Centro:INTERO
Trovato:BOOLEANO Trovato:BOOLEANO
INIZIO INIZIO
Trovato ← FALSO Primo ← 1
I←1 Ultimo ← N
MENTRE ((I ≤ N) AND (NOT Trovato)) ESEGUI Trovato ← FALSO
SE (Vet[I] = X) MENTRE ((Primo ≤ Ultimo) AND (NOT
ALLORA Trovato)) ESEGUI
Trovato ← VERO Centro ← (Primo + Ultimo) DIV 2
FINESE SE (Vet[Centro] = X)
I←I+1 ALLORA
FINEMENTRE Trovato ← VERO
RITORNO(Trovato) ALTRIMENTI
FINE SE(Vet[Centro] < X)
ALLORA
Primo ← Centro + 1
ALTRIMENTI
Analisi della complessità Ultimo ← Centro − 1
FINESE
In definitiva, per valutare le prestazioni di alcuni
algoritmi si dovrebbero prevedere tre tipi di analisi FINESE
effettuati nel precedente Osserva come si fa: FINEMENTRE

• analisi del caso ottimo; RITORNO(Trovato)


• analisi del caso pessimo; FINE
• analisi del caso medio.
La funzione complessità va analizzata nel caso più favorevole, in quello più sfavorevole e nel
caso medio, in base alla disposizione e al tipo di dati in ingresso.

196 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Per esprimere tali funzioni complessità, utilizzeremo le seguenti notazioni:


• Tottimo(N)
• Tpessimo(N)
• Tmedio(N)

Per decidere quale considerare delle tre, va analizzato il tipo di applicazione. Per esempio, in si-
stemi di tipo real-time interessa solo la funzione Tpessimo(N), ma in genere è la funzione Tmedio(N)
quella che riveste maggiore importanza. Pertanto, parlando di complessità di un algoritmo,
ci riferiremo implicitamente all’analisi del caso medio. Quando tale analisi risulta difficile,
come accade spesso, si ricorre al caso pessimo, cioè alla funzione Tpessimo(N). Possiamo consi-
derare che Tpessimo(N) fornisca una limitazione alla complessità dell’algoritmo, nel senso che le
altre funzioni di complessità non possono crescere più di quella del caso pessimo.
Ora sottoponiamo l’algoritmo di ricerca binaria ai tre tipi di analisi descritte, in modo da po-
terlo confrontare con l’algoritmo di ricerca sequenziale.
Consideriamo la ricerca con successo di un elemento nel vettore Vet ordinato.
■ Caso ottimo. Si ha quando l’elemento X da ricercare si trova proprio a metà del vettore Vet.
Nel caso ottimo, quindi, la complessità è pari a 1.
■ Caso pessimo. Si ha quando è necessario suddividere il vettore Vet fino a ridurlo a un solo
elemento. Nel caso pessimo, quindi, si dimostra che occorrono log N confronti. Infatti, a
ogni confronto la dimensione del vettore si dimezza. Quanti confronti possiamo fare? Ap-
plichiamo lo stesso tipo di ragionamento fatto per valutare la complessità dell’algoritmo
Alg4, e cioè supponiamo che N = 2K per qualsiasi valore di K > 0. Dividere per due a ogni
iterazione corrisponde a sottrarre 1 a K, quindi l’algoritmo effettua log N iterazioni.
■ Caso medio. L’analisi diventa notevolmente complessa. Riportiamo solo il risultato finale,
che è circa log N.

L’algoritmo ottimo
La tabella confronta i due algoritmi nei tre casi (dimensione N del problema).

Ricerca sequenziale Ricerca binaria


Caso ottimo 1 1
Caso pessimo N log N
Caso medio N/2 log N

Come possiamo osservare, gli algoritmi hanno la stessa complessità nel caso ottimo, ma com-
plessità diverse nel caso medio e nel caso pessimo.
L’obiettivo è quello di risolvere un problema scrivendo un algoritmo con la minima complessi-
tà possibile sia nel caso medio sia in quello pessimo: definiremo tale algoritmo un algoritmo
ottimo.
Pertanto, per complessità di un problema intenderemo la complessità degli algoritmi ottimi
che lo risolvono (e spesso tale complessità non è nota, perché risulta difficile da calcolare). Con-
sideriamo ora il corpo di un algoritmo, che verifica se un numero intero N maggiore di 2 è pri-
mo. Cominciamo a individuare la dimensione del problema: abbiamo un solo input, pertanto la
dimensione è pari al valore dello stesso input (quindi, per esempio, il problema di verificare che
201 sia un numero primo ha dimensione pari a 201).

La complessità computazionale B4 197


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Occupiamoci ora della complessità. Dobbiamo chiederci INIZIO // Algoritmo Alg7


quante volte viene eseguito il ciclo. SCRIVI("Inserisci un numero")
• Se N è pari, il ciclo non viene eseguito neanche una vol- LEGGI(N)
ta. Ci troviamo di fronte al caso ottimo, perché basta I←2
solo il test del ciclo per dirci che il numero non è primo; MENTRE ((N MOD I) = 0) ESEGUI
quindi: Tottimo(N) = 6 (inizializzazione + test MENTRE I←I+1
+ test SE + istruzione Scrivi). FINEMENTRE
• Se N è primo, il ciclo viene ripetuto (N − 1) volte. Siamo
SE (I = N)
di fronte al caso pessimo; quindi:
ALLORA
Tpessimo(N) = 3 + (N − 1) * 2 + 1 + 2 = 2N + 4.
SCRIVI("Numero primo")
ALTRIMENTI
SCRIVI("Numero non primo")
FINESE
FINE

5 Ordine di grandezza della complessità


e classi di computabilità
La complessità asintotica
Come abbiamo visto dai precedenti esempi, alcune volte può risultare molto difficile arrivare
all’esatta formulazione della complessità di un algoritmo. Confrontando due algoritmi, inoltre,
può accadere che il primo esegua meno operazioni dell’altro quando la dimensione del proble-
ma è bassa, ma che le cose si ribaltino quando tale dimensione cresce.

In questi casi, allora, conviene fare riferimento all’ordine di grandezza della complessità,
cioè valutare la complessità per valori molto grandi delle dimensioni del problema. Si parla
di complessità asintotica.

Riprendiamo i grafici delle funzioni T(N) degli algoritmi Alg2, Alg3 e Alg4. Notiamo che, per
valori di N compresi tra 1 e l’ascissa del punto P1, l’algoritmo Alg4 compie un numero di opera-
zioni inferiore all’algoritmo Alg2, pur avendo complessità asintotica superiore. Al crescere di
N, però, è TAlg3 che cresce di più.

T(N): numero
di operazioni

TAlg3(N) TAlg4(N)

20
TAlg2(N)

10 P1

N: dimensione
del problema
N = 1 10 20

198 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’algoritmo di ricerca binaria, per esempio, ha prestazioni peggiori di un algoritmo di ricerca


sequenziale per valori di N ≤ 3. La nozione di complessità asintotica si esprime in notazione
matematica nel modo seguente:
lim T (N )
N →∞

che si legge: limite per N che tende a infinito della funzione T(N). In definitiva, si ottiene un’e-
spressione in funzione di N che indica qual è il comportamento asintotico dell’algoritmo.
Introduciamo ora le seguenti definizioni.

Siano f(N) e g(N) due funzioni. Si dice che f(N) è di ordine di grandezza g(N) e si scrive
O(g(N)) e si legge:
“O grande di g di N” se esiste una costante C > 0 tale che, per tutti i valori nel dominio di N,
f(N) < C * g(N).

Pertanto, dire che T(N) è O(g(N)), significa che g(N) è un limite superiore alla legge di crescita
di T(N), cioè T(N) non cresce più di g(N). Il grafico di T(N) da un certo punto in poi starà, per le
ragioni appena esposte, al di sotto di quello di C * g(N). Diremo inoltre che:

f(N) è proporzionale a g(N) se f(N) è O(g(N)) e g(N) è O( f(N)). Si dice anche che f(N) e g(N)
sono dello stesso ordine (di grandezza).

Potremo allora fare affermazioni del tipo:

T(N), ossia la complessità computazionale di un algoritmo X, è proporzionale a N2, ovvero


è dell’ordine di N2 : O(N2)

lasciando non specificata la costante di proporzionalità. Consideriamo T(N) = 2N2 + 5: essen-


do comportamenti asintotici, risultano irrilevanti (ai fini della determinazione dell’ordine di
grandezza) sia la costante 5, sia la costante moltiplicativa 2 (poiché stiamo parlando di limiti).
Ciò che interessa è il termine N2.
Più formalmente:
T (N )
lim = COSTANTE
N →∞ N2

C * g(N)

T(N): numero
di operazioni
T(N)

Da questo punto
in poi il grafico di T(N)
sta al di sotto di quello
di C * g(N)

N: dimensione
del problema

La complessità computazionale B4 199


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Programmi e algoritmi saranno quindi valutati confrontando le loro funzioni T(N) e trala-
sciando le costanti di proporzionalità. Pertanto:
• algoritmi con funzioni di complessità N, 2N, 3N, oppure 2N + 3, 2N + 200, 3N + 4000 sono
tutti O(N), cioè sono tutti proporzionali a N;
• algoritmi con funzioni di complessità come 5N2, 8N2 + 67 sono tutti O(N2), cioè sono tutti
proporzionali a N2.

Le classi di complessità o di computabilità


Possiamo individuare alcuni ordini di grandezza per le funzioni T(N) che individuano le cosid-
dette classi di complessità (o computabilità). Abbiamo quindi i seguenti casi:

Classe
Descrizione
di complessità
Indica la complessità degli algoritmi che eseguono lo stesso numero di operazioni indipen-
Complessità dentemente dalla dimensione dei dati di input. Un classico esempio è dato da un algoritmo
costante O(1) senza cicli, in cui l’esecuzione non dipende dalla dimensione del problema. Altri esempi sono
o O(C) dati dall’esecuzione dell’algoritmo Alg7 visto in precedenza nel caso ottimo (numero pari) o,
ancora, dall’algoritmo di ricerca sequenziale nel caso ottimo.
Indica la complessità degli algoritmi che eseguono un numero di operazioni proporzionale a
Complessità
log N. Un esempio è l’algoritmo di ricerca binaria, che ha complessità logaritmica nel caso
logaritmica O(logN)
pessimo e nel caso medio.
Indica la complessità degli algoritmi che eseguono un numero di operazioni proporzionale a N,
Complessità cioè proporzionale alla dimensione del problema. Per esempio, hanno complessità lineare la
lineare O(N) ricerca sequenziale, la lettura e la stampa degli elementi di un array, l’algoritmo di verifica di
un numero primo, Alg7 nel caso pessimo.
Complessità È la classe di molti algoritmi di ordinamento. Per esempio, ha complessità NlogN l’algoritmo
NlogN O(NlogN) MergeSort (un altro famoso algoritmo di ordinamento) in tutti i casi (ottimo, medio, pessimo).
La sua caratteristica è avere le dimensioni del problema come base da elevare a un espo-
Complessità
nente K. Quando K = 2 si parla di complessità quadratica; è di questo tipo l’algoritmo di
polinomiale
ordinamento BubbleSort. Quando K = 3 si parla invece di complessità cubica. È di questo tipo
O(NK)
l’algoritmo che effettua la moltiplicazione di due matrici quadrate di dimensione N.
La sua caratteristica è avere la dimensione del problema come esponente. Ne è un esempio
Complessità
un algoritmo che deve produrre tutte le possibili stringhe di lunghezza N su un alfabeto di 10
esponenziale O(KN)
simboli.

6 Efficienza di un algoritmo
Due algoritmi appartenenti alla stessa classe di complessità (cioè due algoritmi di pari com-
plessità computazionale) possono essere confrontati relativamente al tempo di esecuzione.
Vediamo meglio che cosa significa che due algoritmi appartengono alla stessa classe di com-
plessità.

Siano f1(N) e f2(N) due funzioni con la stessa classe di complessità computazionale, relati-
ve, rispettivamente, agli algoritmi A1 e A2 che risolvono lo stesso problema. Diremo che A1
e A2 appartengono alla stessa classe di complessità se:
f1 (N )
lim =C con C > 0 costante
N →∞ f 2 (N )

200 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Possiamo, ora, valutare l’efficienza di due algoritmi. In particolare, diremo che:

f1 (N )
■ A1 è più efficiente di A2 se: lim
N →∞ f 2 (N )
=C con C < 1

f1 (N )
■ A2 è più efficiente di A1 se: lim
N →∞ f 2 (N )
=C con C > 1

Esaminiamo gli algoritmi Alg8 e Alg9, che calcolano somma e prodotto dei primi N numeri
interi.
ALGORITMO Alg8 ALGORITMO Alg9
VARIABILI VARIABILI
N, I, Som, Prod: INTERO N, I, J, Som, Prod: INTERO
INIZIO INIZIO
Som ← 0 Som ← 0
Prod ← 1 Prod ← 1
SCRIVI("Inserisci un numero") SCRIVI("Inserisci un numero")
LEGGI(N) LEGGI(N)
I←1 I←1
MENTRE (I < N) ESEGUI MENTRE (I < N) ESEGUI
Som ← Som + I Som ← Som + I
Prod ← Prod * I I←I+1
I←I+1 FINEMENTRE
FINEMENTRE J←1
SCRIVI("La somma è:", Som) MENTRE (I < N) ESEGUI
SCRIVI("Il prodotto è:", Prod) Prod ← Prod * J
FINE J←J+1
FINEMENTRE
Avremo quindi: SCRIVI("La somma è:", Som)
TAlg8(N) = 4N + 8 SCRIVI("Il prodotto è:", Prod)
FINE
TAlg9(N) = 8 + 2 * (3 * N + 1) = 6N + 10
I due algoritmi appartengono alla stessa classe di complessità lineare; infatti:
TAlg8 (N ) 4
lim =
N →∞ TAlg9 (N ) 6

In particolare, Alg8 è più efficiente di Alg9, poiché 4 / 6 < 1.

Gli algoritmi con complessità esponenziale


Data una classe di complessità, dalla tabella sottostante possiamo notare come varia il tempo
di esecuzione di un algoritmo (questa volta espresso in secondi) al variare della dimensione
N del problema, supponendo di utilizzare un computer che esegua 1.000.000 di operazioni ele-
mentari al secondo.
È facile notare che, su dimensioni di input basse (N = 10), quasi tutti gli algoritmi hanno tempi
confrontabili. Appena la dimensione viene moltiplicata per un fattore 6 (cioè N diventa N * 6),

La complessità computazionale B4 201


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

il tempo richiesto per un algoritmo con complessità logaritmica o


Gli algoritmi a complessità
lineare rimane accettabile, mentre quello di complessità esponen- esponenziale sono considerati
ziale arriva a impiegare secoli di tempo di elaborazione sulla stessa quasi inusabili perché
macchina. richiedono talmente tante
Si potrebbe pensare che per questi algoritmi così lenti si debba solo operazioni che probabilmente
anche i calcolatori futuri non
aspettare l’evoluzione tecnologica per ottenere un’esecuzione in saranno in grado di eseguire
tempi ragionevoli. Purtroppo non è così, infatti la loro intrattabilità in tempi ragionevoli le loro
non dipende dalle caratteristiche tecniche dell’unità di elaborazio- possibili implementazioni
(programmi) per dati in ingresso
ne, ma, essenzialmente, dall’algoritmo risolutivo. Anche aumentan- ad alta dimensionalità.
do notevolmente la velocità dell’elaboratore, i miglioramenti sareb-
bero irrisori.

Gli effetti di un miglioramento tecnologico


Per vedere quali possono essere gli effetti di un miglioramento tecnologico sulle dimensioni
massime di problemi risolvibili con algoritmi di varia complessità, analizziamo la tabella. Sup-
poniamo di far eseguire quattro algoritmi di complessità computazionale diversa che risolvo-
no lo stesso problema (ogni riga della tabella corrisponde a un algoritmo). Questi algoritmi ven-
gono eseguiti su due computer diversi (una colonna per ogni computer). Il primo può eseguire
1 milione di operazioni per secondo, mentre il secondo è 1000 volte più veloce, quindi esegue
1 miliardo di operazioni per secondo (in questo modo si simula il miglioramento tecnologico).
Nelle celle della tabella è riportato il valore di N, cioè della dimensione massima che può avere
ognuno dei quattro algoritmi per essere risolto in 1 ora di elaborazione (tempo macchina).
Dalle tabelle appena viste è facile notare che vi è una sostanziale differenza di comportamento
tra algoritmi che hanno complessità NK (complessità polinomiale) e quelli che hanno comples-
sità 2N o 3N (complessità esponenziale), in particolare per grandi valori di N.
Una ragione importante per considerare “migliori” i programmi con andamenti “bassi” è che
la funzione di crescita, in sostanza, determina la dimensione massima dell’input, per quel
programma, su una classe di computer.

Classe di N
complessità 10 20 40 60
0,00001 0,00001 0,00001 0,00001
Costante = K
secondi secondi secondi secondi
0,00001 0,000012 0,000014 0,000016
Logaritmica: log N
secondi secondi secondi secondi
0,00001 0,00002 0,00004 0,00006
Lineare: N
secondi secondi secondi secondi
0,0001 0,0004 0,0016 0,0036
Quadratica: N2
secondi secondi secondi secondi
0,001 0,008 0,066 0,216
Cubica: N3
secondi secondi secondi secondi
0,001 1 12,7 366
Esponenziale: 2N
secondi secondo giorni secoli
0,0059 58 3.855 3 × 1013
Esponenziale: 3N
secondi minuti secoli secoli

202 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

OSSERVA COME SI FA
1. Un esempio emblematico.
Il sig. Rossi ha realizzato un algoritmo di ordinamento. Analizzando il codice, risulta una complessità O(N2). Per ese-
guire un test reale sul suo algoritmo, il sig. Rossi prova a ordinare 100 elementi. Il tempo di esecuzione calcolato
sul suo computer è di 5 secondi. Il sig. Rossi reputa buono tale risultato: è quindi fiducioso che l’algoritmo possa
ordinare qualsiasi numero di elementi in un tempo “ragionevole”.
Il sig. Rossi si sbaglia! Vediamo perché T(N = 100) = 5 sec = C * N2, poiché la complessità è O(N2).
Calcolando la costante C, ed essendo N = 100, avremo:
5 = C * (100)2 da cui: C = 5 * 100−2
Supponiamo ora di voler ordinare 100.000 elementi; allora:
T(N = 100.000) = C * N2 = 5 * 100−2 * 100.0002 = 5 * 106 sec = 5 milioni di sec =
= circa 83.000 minuti = circa 1380 ore = circa 57 giorni (di tempo macchina)

2. Un esempio riassuntivo.
Consideriamo il problema di caricare un vettore Vet con N elementi (N ≤ 100). Il termine dell’inserimento sarà evi-
denziato dall’introduzione dello zero.
Abbiamo, quindi, due algoritmi risolutivi dello stesso problema. Quale preferire? Qual è il più efficiente a parità di
complessità?
1. Individuiamo la dimensione del problema. In questo caso è facile: N è il numero di elementi inseriti prima di
inserire lo 0.
2. Valutiamo la complessità dei due algoritmi:
• Alg10. Le prime tre istruzioni (2, 3, 4) hanno un costo totale pari a 3. Consideriamo ora il ciclo. Il ciclo è com-
posto da un test che ha costo uguale a 1 e da un corpo composto da tre istruzioni semplici di costo unitario.
Pertanto il costo dell’intero ciclo è uguale a 4. Considerato che il ciclo deve essere eseguito al massimo
(N − 1) volte, poiché il primo elemento viene inserito dall’istruzione 4 già considerata, la complessità totale è
data da 4 * (N − 1).
Quando il ciclo viene eseguito per la (N − 1)-esima volta, la variabile I viene incrementata di un’unità assumen-
do, così, il valore N. La condizione di ciclo viene eseguita un’altra volta, in modo da poter verificare la falsità
della condizione e, quindi, consentirne l’uscita. Dobbiamo quindi aggiungere un’unità al suddetto calcolo
arrivando, così, a:
TAlg10(N) = 3 + 4 * (N − 1) + 1 − 4N

ALGORITMO Alg10
VARIABILI
I: INTERO
Vet: ARRAY[100] di INTERO
INIZIO
I←1
SCRIVI("Introduci il primo elemento")
LEGGI(Vet[I])
MENTRE ((Vet[I] ≠ 0) AND (I < 100)) ESEGUI
I←I+1
SCRIVI("Introduci il ", I, "° elemento")
LEGGI(Vet[I])
FINEMENTRE
FINE

La complessità computazionale B4 203


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

• Alg11. Le prime due istruzioni (2, 3) hanno costo unitario, per un costo totale pari a 2. Consideriamo ora il
ciclo, che è composto da un test che ha costo uguale a 1, da un corpo di due istruzioni semplici (costo uguale
a 2) e da un costrutto SE che ha costo uguale a 2. Pertanto, il costo dell’intero ciclo è uguale a 5.
Considerato che il ciclo deve essere eseguito al più N volte, la complessità totale è data da 5 * N.
• Per uscire dal ciclo, la condizione viene testata ancora una volta in modo da poterne verificare la falsità, onde
consentirne l’uscita. Dobbiamo aggiungere quindi ancora un’unità al suddetto calcolo arrivando, così, a:

TAlg11(N) = 2 + 5 * N + 1 = 5N + 3

ALGORITMO Alg11
VARIABILI
I: INTERO
Finito: BOOLEANO
Vet: ARRAY[100] di INTERO
INIZIO
I←1
Finito ← FALSO
MENTRE (NOT Finito) ESEGUI
SCRIVI("Introduci il ", I, "° elemento")
LEGGI(Vet[I])
SE ((Vet[I] = 0) OR (I = 100))
ALLORA
Finito ← VERO
ALTRIMENTI
I←I+1
FINESE
FINEMENTRE
FINE

Basandoci sulla valutazione del caso pessimo, possiamo osservare che nei due algoritmi:
• il tempo di esecuzione non dipende dalla disposizione dell’input, ma solo dalla dimensione dell’input stesso;
• la complessità è lineare per entrambi, poiché entrambi sono proporzionali a N:

TAlg10 (N) TAlg11 (N)


Alg10: lim =4 Alg11: lim =5
N→∞ N N→∞ N

Essi hanno, quindi, lo stesso ordine di grandezza di N, cioè sono O(N) e fanno parte della classe degli algoritmi
lineari;
TAlg10 (N) 4
• Alg10 è più efficiente di Alg11; infatti: lim = <1
N→∞ TAlg11 (N) 5

204 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME B4
LA COMPLESSITÀ COMPUTAZIONALE
AUDIO

Qualità di un algoritmo infatti, il tempo di esecuzione può dipendere dalla


Se esistono più algoritmi tutti corretti per risolvere specifica configurazione dei dati stessi. Pertanto
un problema, occorre stabilire i criteri per scegliere è utile considerare tre differenti tipi di complessità:
l’algoritmo corretto migliore. Allo scopo, occorre quella nel caso medio (basato su tutte le possibili
valutare soprattutto due risorse: lo spazio occorrenze iniziali dei dati), quella nel caso ottimo
di memoria e il tempo di esecuzione. In realtà, (che si ottiene considerando la configurazione che
a causa dell’evoluzione tecnologica la risorsa dà luogo al minimo tempo di esecuzione) e quella
spazio di memoria è diventata sempre meno nel caso pessimo (che si ottiene considerando
importante. quella particolare configurazione di dati iniziali
per cui l’algoritmo ha comportamento pessimo).
Costo di un algoritmo Per complessità di un problema si intende, in
Per ottenere una valutazione affidabile, il tempo conclusione, la complessità degli algoritmi
di esecuzione di un algoritmo si misura in numero ottimi che lo risolvono.
di operazioni che l’algoritmo deve compiere
per fornire i risultati. Tale numero si chiama Ordine di grandezza e classi
costo dell’algoritmo. Per valutare tale costo di computabilità
si trascurano le operazioni meno onerose dal Alcune volte può risultare difficile formulare
punto di vista esecutivo (addizioni, incrementi, esattamente la complessità di un algoritmo,
decrementi) e si considerano solo le operazioni anche ricorrendo all’analisi dei casi ottimo,
dal costo dominante (per esempio, confronti pessimo e medio. Si fa allora riferimento all’ordine
e moltiplicazioni). Il tempo di esecuzione di un di grandezza della complessità, o complessità
algoritmo è proporzionale al suo costo. asintotica, cioè al valore che la complessità ha per
valori molto grandi delle dimensioni del problema.
Complessità computazionale
Il numero di operazioni di un algoritmo è legato Efficienza di un algoritmo
alla dimensione dei dati di input, chiamata Due algoritmi possono appartenere alla stessa
dimensione del problema. Pertanto, il numero classe di complessità (cioè possono avere la stessa
di operazioni di un algoritmo si calcola in funzione complessità computazionale), ma tempi di
di tale dimensione, mediante una funzione esecuzione diversi. In tal caso quello che ha
chiamata complessità computazionale o un tempo di esecuzione minore è detto più
efficiente dell’altro. Gli algoritmi con complessità
complessità dell’algoritmo.
esponenziale, al variare della dimensione di
Complessità e valori dei dati in ingresso input di un fattore 6, giungono a impiegare secoli
Spesso per valutare nel modo migliore la bontà di tempo di elaborazione. L’evoluzione tecnologica
di un algoritmo, è necessario valutare non non può far nulla per ottenere un’esecuzione
solo la dimensione dei dati di input, ma anche in tempi ragionevoli di questi algoritmi; infatti
la loro disposizione, cioè la sequenza in cui la loro intrattabilità non dipende dall’unità
si presentano. A parità di dimensione di dati, di elaborazione.

La complessità computazionale B4 205


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME B4
MAPPA
MODIFICABILE
COMPLESSITÀ
COMPUTAZIONALE

dipende da in certi casi se per due in un terzo caso


dipende anche da algoritmi  è dipende da

spazio tempo di
di memoria esecuzione
(soprattutto)

che si misura in

numero di
operazioni
o costo

che è legato a

dimensione dei
dati di input
o dimensione
dell’algoritmo

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Da quali aspetti dipende la complessità computazionale di un algoritmo?
2) Come si misura il tempo di esecuzione?
3) A che cosa è legato il tempo di esecuzione?
4) Da quale fattore ulteriore può dipendere la complessità computazionale di un algoritmo?
5) Quando la complessità computazionale di un algoritmo dipende anche dalla sequenza dei dati di input,
con che tipo di algoritmo si calcola?
6) Che cosa si intende per complessità asintotica di un algoritmo?
7) Vi possono essere algoritmi con la stessa complessità computazionale, ma l’uno più veloce dell’altro?
8) Fra due algoritmi con la stessa complessità computazionale, come si chiama il più rapido?

206 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo B4
1. Stabilisci quali delle seguenti affermazioni sono 6. In che cosa consiste la determinazione del costo
vere e quali false. di un algoritmo?
a Il tempo di esecuzione viene calcolato V F
in secondi.
7. Che cos’è la complessità computazionale?

b Il costo di un algoritmo è strettamente V F 8. In che cosa è espresso il costo?


collegato al suo tempo di esecuzione.
c La complessità di un algoritmo V F 9. Che cosa sono le unità solari?
è una funzione.
d Se f è O(g) e g è O(f), f e g sono V F 10. Perché non si può valutare il costo di un
dello stesso ordine. algoritmo servendosi di unità solari?
e Ha senso confrontare il caso medio di V F
11. Qual è la regola per valutare il costo di un ciclo?
un algoritmo con il caso ottimo di un altro.
f Se Alg1 è più efficiente di Alg2, Alg1 V F 12. Qual è la regola per valutare il costo
e Alg2 possono appartenere a classi di un’istruzione di selezione?
di complessità diverse.
g Algoritmi lineari hanno complessità V F 13. Che differenza c’è in termini di costo tra le due
maggiore di algoritmi polinomiali. istruzioni seguenti?
h Algoritmi esponenziali hanno complessità V F X←X+Y
maggiore di algoritmi polinomiali. X ← (X + Y) * W / 3 + 1
i 5N, 8N + 1, 23N + 5 hanno lo stesso V F
ordine di grandezza. 14. Perché affermare: “La valutazione di un’istruzione
l 115 N , 10N − 8N + 1, 2N + 3N + 5
2 2 2 V F semplice è pari a 1” è una valutazione
hanno lo stesso ordine di grandezza. approssimata?

2. Completa correttamente le seguenti frasi. 15. Quali sono le operazioni dal costo dominante?

A Data una funzione di complessità T(N) 16. Qual è l’unità di misura del tempo di esecuzione
di un algoritmo A si dice che T(N) è O(g(N)) se: di un algoritmo?
.......................................................................................................................................

.......................................................................................................................................
17. In quali casi i dati di ingresso sono irrilevanti
nel calcolo della complessità?
B Date due funzioni di complessità T1(N) e T2(N),
si dice che sono dello stesso ordine se: 18. La complessità è legata alla dimensione dei dati
.......................................................................................................................................
in input?
.......................................................................................................................................
19. La complessità è legata ai valori dei dati in input?
C Dire che la complessità di un algoritmo Alg1 è
proporzionale a N significa: 20. Che cosa significa fare l’analisi del caso ottimo,
.......................................................................................................................................
pessimo e medio?
.......................................................................................................................................
21. Che miglioramenti possono esserci in termini
di performance per un algoritmo esponenziale
3. In che cosa consiste la valutazione della bontà eseguito su un calcolatore del futuro 10.000
di un algoritmo? volte più veloce di un calcolatore attuale?

4. Perché analizziamo due algoritmi che risolvono 22. Quando un algoritmo si dice ottimo?
la stessa classe di problemi? In che cosa
consiste il loro confronto? 23. Perché si parla di complessità asintotica?

5. Perché si parla di risorsa spazio e risorsa tempo 24. Quando si dice che f(N) è di ordine g(N)?
di un algoritmo?
25. Quante e quali classi di computabilità conosci?

La complessità computazionale B4 207


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


26. Qual è la classe con complessità maggiore?
E quella con complessità minore? e le tue COMPETENZE
27. In che relazione sono i grafici di f(N) e g(N),
se f(N) è O(g(N))?
Costo di un algoritmo
28. Che cosa significa “determinare l’algoritmo 34. •• Calcola il costo del seguente frammento
più efficiente”? di pseudocodice:

29. Il costo di un algoritmo si esprime in termini di: I←1


A tempo di esecuzione J←0
B numero di cicli MENTRE (I < 5) ESEGUI
C numero di istruzioni SE (J = 15)
D numero di variabili ALLORA
J←0
30. L’analisi della complessità di un algoritmo viene ALTRIMENTI
effettuata:
I←I+1
A solo al caso medio
J ←J + 1
B solo al caso ottimo
FINESE
C solo al caso pessimo
FINEMENTRE
D al caso ottimo, medio e pessimo

31. Un algoritmo con complessità pari a C(N) = Nk 35. •• Qual è la dimensione del problema per
con K > 3 appartiene alla classe di complessità: un algoritmo che ha il compito di calcolare
il numero di divisori di un dato numero?
A esponenziale
B polinomiale Ordine di grandezza e classi
C lineare di complessità
D costante
36. •• ESERCIZIO SVOLTO Individua la classe
32. La classe di problemi P è: di complessità della seguente funzione:

A una classe di problemi risolvibili in tempo FUNZIONE F2(VAR N:INTERO):INTERO


polinomiale VARIABILI
B una classe di problemi risolvibili in tempo X,Y,I,J:INTERO
esponenziale
INIZIO
C una classe di problemi irrisolvibili
X←0
D una classe di problemi intrattabili
PER I ← 1 A N ESEGUI
33. Un algoritmo che appartiene alla classe PER J ← 1 A N ESEGUI
di complessità polinomiale: Y←I*J
A ha tempo di esecuzione superiore rispetto X←X+Y
all’equivalente algoritmo appartenente alla classe Y←X
esponenziale
FINEPER
B ha lo stesso tempo di esecuzione rispetto
all’equivalente algoritmo appartenente alla classe FINEPER
esponenziale RITORNO (X)
C ha tempo di esecuzione inferiore rispetto FINE
all’equivalente algoritmo appartenente alla classe
esponenziale
Svolgiamo insieme l’esercizio
D non è confrontabile rispetto al tempo
di esecuzione dell’equivalente algoritmo Abbiamo un ciclo PER esterno e un ciclo PER interno,
appartenente alla classe esponenziale tre istruzioni per ogni ciclo PER interno e una
istruzione RITORNO.

208 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Quanto tempo occorre ai due processori


Pertanto, i costi sono i seguenti. per ordinare 107 numeri?
• Assegnazione esterna: 1 +
• Assegnazione iniziale PER esterno: 1 + 46. ••• Procurati gli algoritmi di ordinamento
• Test PER esterno: N + 1 + BubbleSort, MergeSort e QuickSort.
• Incremento ciclo PER esterno: N + Prova a verificare che:
• Corpo ciclo PER esterno: N *(
A BubbleSort nel caso migliore ha una complessità
• Assegnazione iniziale ciclo PER interno: 1 +
lineare
• Controlli ciclo PER interno: N + 1 +
• Incrementi ciclo PER interno: N + B BubbleSort nel caso peggiore ha complessità
• Corpo ciclo PER interno: 3N) + quadratica
• Istruzione RITORNO: 1 C MergeSort è un algoritmo che ha complessità sia
nel caso migliore sia in quello peggiore (e anche in
Costo di F2 = 1 + (CostoPEREsterno) + 1 = quello medio) di O(NlogN)
= 2 + (1 + N + 1 + N + N * CostoPERInterno) = D QuickSort è un algoritmo O(N2), la cui complessità
= 4 + 2N + N * (1 + N + 1 + N + 3N)= nel caso migliore e nel caso medio è però
= 4 + 2N + N + N2 + N + N2 + 3N2 = 5N2 + 4N + 4 O(NlogN)

Quindi F2(N) ha complessità O(N2). 47. ••• Ordina un array con l’algoritmo del
Selection Sort. Vi sono molti modi per ordinare
un array di elementi interi in modo crescente.
Uno dei più facili da capire e da programmare
37. •• Fai un esempio di algoritmo che abbia è quello che si basa sull’algoritmo di Selection
complessità costante.
Sort, che si basa sui seguenti passi:
38. •• Fai un esempio di algoritmo che abbia • cerca nell’array il numero più piccolo e
complessità lineare. scambialo con il primo elemento dell’array;
• la parte ordinata dell’array è ora il primo
39. •• Fai un esempio di algoritmo che abbia elemento, mentre quella non ancora ordinata
complessità logaritmica. sono i rimanenti elementi;
• cerca nella parte non ordinata il numero più
40. •• Fai un esempio di algoritmo che abbia piccolo e scambialo con il secondo elemento
complessità quadratica. dell’array;
• ripeti la ricerca e lo scambio fino a quando tutti
41. •• Fai un esempio di algoritmo che abbia gli elementi sono al posto giusto;
complessità esponenziale. • ogni iterazione aumenta di 1 la lunghezza della
parte ordinata e diminuisce di 1 quella della
42. •• Stabilisci e classifica l’ordine delle funzioni parte non ordinata.
T(N): L’algoritmo è mostrato nel riquadro seguente.
Determina l’ordine di grandezza della procedura
A log(5N) + NlogN D 3K + N di Selection Sort.
B KN + K(N − 1) + K(N − 2) E N * (N − 1)
C (N + 1)! + KN F K(N − 1) + N(K − 1) PROCEDURA SelectionSort(A: ARRAY[N]
di INTERO)
43. •• Fai un esempio in cui il costo di un algoritmo VARIABILI
è funzione dei valori dei dati in input.
I, J, Indice, Min, Temp: INTERO
44. •• Fai un esempio in cui la dimensione del INIZIO
problema è legata al numero dei dati di input
PER I ← 1 A N ESEGUI
(quantità) e un altro in cui la dimensione del
problema è legata al valore del dato in input. Min ← A[I]
Indice ← I
45. •• Un processore Ghepardo a 1Ghz esegue
un algoritmo di ordinamento che richiede 2N2 PER J ← I + 1 A N ESEGUI
operazioni per ordinare n numeri. Un processore SE (A[J] < Min)
Bradipo a 1Mhz (anni ’80) esegue un algoritmo ALLORA
di ordinamento che richiede 50N log2 N
operazioni su n numeri. Min ← A[J]

La complessità computazionale B4 209


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Indice ← J 54. ••• Considera l’algoritmo per effettuare lo shift


FINESE sinistro in un vettore e:

Temp ← A[I] A individua la dimensione dei dati di input


B calcola la loro complessità
A[I] ← A[Indice]
C individua la loro classe di complessità
A[Indice] ← Temp
FINEPER 55. ••• Considera uno degli algoritmi
FINEPER di ordinamento di un vettore e:
FINE A individua la dimensione dei dati di input
B calcola la loro complessità
48. ••• Scrivi un algoritmo con complessità C individua la loro classe di complessità
computazionale “minima” che calcoli i primi N
numeri primi.
Costo di algoritmi ricorsivi
Efficienza di un algoritmo 56. ••• ESERCIZIO SVOLTO Costo dell’algoritmo
per il calcolo del fattoriale. Consideriamo
49. ••• Considera due algoritmi di ricerca il seguente algoritmo iterativo per il calcolo
di un elemento in un vettore e: del fattoriale di un numero.
A individua la dimensione dei dati di input FUNZIONE Fatt(VAR N:INTERO): INTERO
B calcola la loro complessità VARIABILI
C individua la loro classe di complessità
F,I: INTERO
D determina l’algoritmo più efficiente
INIZIO
50. ••• Considera due algoritmi di ordinamento F←1
dei valori di un vettore e: SE (N > 1)
A individua la dimensione dei dati di input ALLORA
B calcola la loro complessità PER I ← 1 A N ESEGUI
C individua la loro classe di complessità
F=F*I
D determina l’algoritmo più efficiente
FINEPER
FINESE
Riepilogativi
RITORNO(F)
51. ••• Considera l’algoritmo per il calcolo FINE
della somma dei valori in un vettore e:
A individua la dimensione dei dati di input
B calcola la loro complessità Svolgiamo insieme l’esercizio
C individua la loro classe di complessità Supponendo che N sia maggiore di 1, individuiamo
i seguenti costi:
52. ••• Considera l’algoritmo per calcolare il valore • assegnazione esterna al ciclo: 1
massimo in un vettore e: • costrutto SE: 1 + costo costrutto PER
A individua la dimensione dei dati di input • costrutto PER:
‒ assegnazione iniziale: 1
B calcola la loro complessità ‒ controlli ciclo: N+1
C individua la loro classe di complessità ‒ corpo ciclo: N
‒ incremento ciclo: N
53. ••• Considera l’algoritmo per calcolare la media • istruzione SCRIVI: 1
dei valori di un vettore e:
Costo di Fatt = 1 + CostoCostruttoSE + 1 =
A individua la dimensione dei dati di input = 1 + (CostoCostruttoPER + 1) + 1 =
B calcola la loro complessità = 1 + (1 + N + N + 1 + N + 1) + 1 = 3N + 5
C individua la loro classe di complessità

210 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B5 Intelligenza artificiale
e reti neurali

IMPARERAI…

Che cos’è l’intelligenza Quali sono le aree di applicazione Cosa sono i sistemi Cosa sono i sistemi
artificiale dell’intelligenza artificiale esperti neurali

1 Che cos’è l’intelligenza artificiale


Prima di affrontare l’affascinante tematica dell’intelligenza artificiale, ci sembra doveroso
partire da un necessario chiarimento: cos’è l’intelligenza?

In filosofia, per intelletto si intende quella facoltà mentale che ha ogni essere umano di com-
prendere la realtà e di farsi delle idee, la quale comporta a sua volta la capacità di scegliere,
discernere, confrontare, comparare, dissociare, associare, sintetizzare. L’insieme di queste
funzioni viene chiamato capacità intellettuale.

In psicologia, l’intelligenza è l’insieme delle funzioni conoscitive, adattative e immaginati-


ve, generate dall’attività cerebrale dell’uomo e di alcuni animali. È anche definibile come la
capacità di ragionare, apprendere, risolvere problemi, comprendere a fondo la realtà, le idee
e il linguaggio. Sebbene molti considerino il concetto di intelligenza in un ambito più ampio,
molte scuole di psicologia considerano l’intelligenza come distinta da tratti della personali-
tà come il carattere, la creatività o la saggezza.

L’intelligenza artificiale (d’ora in poi IA) è una moderna discipli-


na che negli anni recenti ha fornito un importante contributo In genere, si intende per intelligenza
la capacità di completare compiti
al progresso dell’informatica. Ricopre un chiaro interesse per e risolvere problemi nuovi (problem
coloro che sono interessati alla valutazione delle potenzialità solving), nonché la capacità di
dell’informatica e degli effetti che il progresso di questa disci- adattarsi all’ambiente e ai suoi
mutamenti. Aggiungiamo a questa
plina ha nei confronti dell’uomo. definizione anche la capacità
L’IA è stata influenzata da numerose discipline, fra le quali, oltre della comprensione della realtà
ovviamente all’informatica, la filosofia, la matematica, l’econo- (qualunque cosa sia), includendovi
mia, le neuroscienze, la psicologia, la cibernetica, le scienze co- anche la comprensione del
linguaggio. Oggi si tende a superare
gnitive e anche la linguistica. questa forma di intelligenza
orientata alla parte intellettuale, e
Ma di cosa si occupa specificamente l’IA? L’IA si occupa della si parla anche di altre tipologie di
comprensione e della riproduzione del comportamento intel- intelligenza, come quella emotiva,
quella relazionale e altre.
ligente. È difficile fornire definizioni precise di IA, sia perché si

Intelligenza artificiale e reti neurali B5 211


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

tratta di una materia in forte evoluzione, sia perché è una disciplina di frontiera in cui s’incon-
trano le numerose discipline che abbiamo precedentemente elencato. Pertanto, piuttosto che
delimitare e fornire una rigorosa definizione, preferiamo elencare e descrivere le sue caratteri-
stiche fondamentali e le sue principali aree d’applicazione.

Umanamente Razionalmente
«L’automazione delle attività che associamo «Lo studio delle facoltà mentali attraverso
al pensiero umano, come il processo decisionale, l’uso di modelli computazionali»
Pensare
la risoluzione di problemi, l’apprendimento…» [Charniak, McDermott, 1985]
[Bellman, 1978]
«L’arte di creare macchine che svolgono funzioni «Il ramo della scienza dei calcolatori che si occupa
che richiedono intelligenza quando svolte da esseri dell’automazione del comportamento intelligente»
Agire umani» [Luger-Stubblefield, 1993]
[Kurzweil, 1990]
«L’impresa di costruire artifatti intelligenti»
[Ginsberg, 1993]

L’intelligenza artificiale classica


Le varie declinazioni di IA convogliano le proprie teorie nella
comprovata necessità di elaborare l’informazione che sta alla
base dei processi cerebrali (rappresentata da simboli discreti) at-
traverso dei programmi informatici: questo è il punto di partenza
della cosiddetta intelligenza artificiale classica, per la quale ri-
portiamo la definizione fornita da Marco Somalvico, ingegnere
italiano specializzato nel campo dell’intelligenza artificiale.

L’intelligenza artificiale è quella disciplina, appartenente


all’informatica, che studia i fondamenti teorici, le metodologie
e le tecniche che permettono di progettare sistemi hardware e
sistemi software capaci di fornire al computer delle prestazioni
che, a un osservatore comune, sembrerebbero essere di perti-
nenza esclusiva dell’intelligenza umana.

È questa la definizione, accettata a livello internazionale, di un’area scientifica di notevole im-


portanza strategica che si propone di superare, in alcune zone, le attuali frontiere dell’infor-
matica, ponendosi come obiettivo scientifico quello di migliorare ed estendere le prestazioni
offerte dal computer.
L’obiettivo di questa disciplina, pertanto, è quello di riprodurre o emulare l’intelligenza uma-
na, in quanto non vi sono motivi alla base che impediscano che talune prestazioni (ma non
tutte!) dell’intelligenza umana (per esempio, la capacità di risolvere problemi risolubili con
procedimenti inferenziali, ossia deduttivi e induttivi) possano anche essere fornite da una
macchina (non tutti la pensano allo stesso modo: per taluni scienziati l’IA non è ammissibile
per motivi epistemologici, laddove venga postulata una distinzione tra la realtà e la conoscen-
za della realtà).
Emulare le facoltà umane significa ottenere delle prestazioni intelligenti conseguibili utiliz-
zando dei meccanismi propri della macchina, semmai differenti da quelli previsti per l’uomo,
ma tali da fornire prestazioni qualitativamente equivalenti e quantitativamente superiori a
quelle umane.

212 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Modelli antropomorfici e non antropomorfici


Considerando la storia e la natura dei risultati ottenuti dalle ricerche scientifiche nell’ambito
dell’IA, possiamo constatare che studiosi e ricercatori hanno analizzato e valutato i diversi
modelli della razionalità umana, scegliendo tra essi il migliore, per poter procedere alla conce-
zione di una nuova tecnica o di un nuovo sistema di IA. I modelli analizzati sono stati sia di tipo
antropomorfico (modelli che permettono non solo di ottenere prestazioni analoghe a quelle
dell’uomo, ma anche di farlo con gli stessi metodi usati dall’uomo) sia di tipo non antropo-
morfico, al fine di poter garantire i migliori risultati possibili attraverso l’esame di casistiche
di natura diversa.
Dalla comparazione dei risultati ottenuti è emerso che i modelli non antropomorfici hanno di-
mostrato caratteristiche di maggiore adattamento e integrazione con i modelli, con le tecniche
e con i sistemi di IA che erano già disponibili in seguito ai precedenti risultati delle ricerche.

2 Intelligenza artificiale forte e debole


Vediamo storicamente le distinzioni che sono state fatte nell’intendere il concetto di IA. Tutto
partì dal presupposto che l’IA è al tempo stesso una scienza e un’ingegneria.
■ È una scienza perché, nel momento in cui vengono emulati con determinati sistemi artifi-
ciali alcuni dei comportamenti intelligenti, l’uomo consegue l’obiettivo di formulare modelli
oggettivi e rigorosi e di ottenere conferme sperimentali; ciò permette di ottenere un indiscu-
tibile progresso nello studio, svolto con metodi scientifici, dell’intelligenza nell’uomo.
■ È un’ingegneria perché, quando si ottengono dalle macchine prestazioni che emulano ta-
luni comportamenti, erroneamente ritenuti inaccessibili all’ambito artificiale, si fornisce
un oggettivo progresso al contributo che l’ingegneria (e le macchine progettate nel suo am-
bito) offre al miglioramento della vita dell’uomo.

L’intelligenza artificiale forte


Partendo da questi presupposti, inizialmente l’IA ha avuto una posizione chiamata intelligen-
za artificiale forte.

L’intelligenza artificiale forte ritiene che un computer, correttamente programmato, pos-


sa essere veramente dotato di un’intelligenza pura, non distinguibile in nessun senso im-
portante dall’intelligenza umana, una sorta di macchina dotata di mente in senso pieno e
letterale.

L’idea alla base di questa teoria è il concetto che risale al filoso-


fo empirista inglese Thomas Hobbes, il quale sosteneva che “ra-
gionare non è nient’altro che calcolare”: la mente umana sarebbe
dunque il prodotto di un complesso insieme di calcoli eseguiti dal
cervello.
Un magnifico paradigma letterario dell’IA forte sono i robot di
Asimov, degli alter ego umani con cervelli positronici (dispositivi
immaginari da lui inventati) e capacità da esseri senzienti equiva-
lenti a quelle umane, e spesso anche superiori.

Intelligenza artificiale e reti neurali B5 213


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

L’INTELLIGENZA
ARTIFICIALE: le ORIGINI
LA STORIA DELL’INTELLIGENZA ARTIFICIALE
Il 1956 è l’anno che sancisce l'inizio degli studi sull'intelligenza artificiale: nello storico
convegno tenutosi nel Dartmouth College di Hanover (New Hampshire), John McCarthy
(informatico statunitense, vincitore del Premio Turing 1971, noto per i suoi contributi nel
campo dell'intelligenza artificiale) introdusse per la prima volta l’espressione Artificial
Intelligence nella proposta della conferenza, fornendo così l’input per l’istituzione della
nuova disciplina. In questa occasione, vennero raccolti i contributi sviluppati negli anni
precedenti per orientarne gli sviluppi in direzione delle potenzialità future.
Sebbene questo convegno rappresenti la nascita ufficiale di
questa disciplina, lo studio dell'intelligenza artificiale affonda
le sue radici in alcune teorie del passato che riassumeremo in
questa pagina.

I secolo d.C.: Erone di Alessandria


Già nella mitologia greca possiamo vedere alcuni
esempi di autoimitazione dell’uomo, ma è con Erone di
Alessandria che troviamo i primi approcci alla robotica
e all'intelligenza artificiale. Questo meccanico
alessandrino vissuto nel I secolo d.C., infatti,
costruì i primi automi semoventi basati su
meccanismi idraulici e pneumatici.

XII - XIII secolo d.C.:


Raimondo Lullo
Filosofo e teologo catalano, Raimondo Lullo
intuisce i fondamenti per tentare di imitare le facoltà
di pensiero. Prendendo spunto da una specie di macchina
pensante di origine araba, Lullo progetta l’ars magna: secondo
le descrizioni pervenute, questo marchingegno sarebbe stato
composto da cerchi concentrici realizzati con dischi di metallo o
gesso, all’interno dei quali venivano simboleggiati i vari concetti
in segni geometrici o algebrici. La loro reciproca combinazione
in tutti i modi possibili permetteva di ottenere una specie di
mappa o di catasto universale dei concetti.

214 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

XXI secolo: le reti neurali


Nel 1943, Warren McCulloch e Walter Pitts propongono il primo modello
di neuroni artificiali: l’idea alla base di questo progetto cibernetico è quella
di studiare i meccanismi dell’autoregolazione e del controllo presenti sia
negli organismi viventi sia nelle macchine con retroazione (in grado cioè di
rispondere in modo adattativo alle sollecitazioni dell’ambiente, modificando il proprio
comportamento). Prendendo spunto da questa teoria, nel 1949 Donald Hebb dimostra come una
semplice regola di aggiornamento per modificare le forze di connessione fra i neuroni possa dare luogo
a processi di apprendimento. Nonostante questi significativi successi iniziali, dopo solo pochi anni le
risorse sono ormai quasi completamente convogliate sull’intelligenza artificiale: l'interesse per le reti
neurali si ridesterà verso la metà degli anni ’80 dello scorso secolo con il riemergere di questo paradigma
nell’ambito dell’intelligenza artificiale.

XIX - XX secolo d.C.: Norbert Wiener


Nel tratteggiare la storia dell’intelligenza artificiale è importante soppesare l'eredità ricevuta da altre
discipline, in particolare dalla filosofia (i risultati relativi al dibattito sulla natura dell’intelligenza e sulle
relazioni fra conoscenza e azione), dalla matematica (l’approccio formale basato sulla logica) e dalla
psicologia (le relazioni fra conoscenza e azioni). Ma è con la cibernetica e con l’informatica che queste
influenze si fanno più manifeste e aprono la strada alla vera e propria nascita ufficiale dell’IA. Il termine
“cibernetica” fu coniato dal matematico Norbert Wiener, che lo derivò da una parola greca che
significa “pilota”. La cibernetica studia i meccanismi con cui uomini, animali e macchine comunicano
con l’ambiente esterno e lo controllano. Si tratta di una scienza multidisciplinare che ha forti interazioni
con molte altre discipline e aree tecnologiche: filosofia, psicologia,
matematica, biologia, fisica, intelligenza artificiale, teoria dei controlli, teoria
delle comunicazioni, robotica. La cibernetica ha origine dallo studio dei
meccanismi dotati di retroazione, ovvero in grado di adattarsi alle condizioni
esterne. La cibernetica studia dunque i meccanismi di comunicazione e di
interazione negli esseri viventi, sia allo scopo di aumentare le conoscenze
di tali meccanismi, sia per derivarne modelli che possono essere riprodotti
artificialmente. Negli ultimi tempi, il termine cibernetica viene usato meno
frequentemente per indicare la disciplina scientifica e spesso si preferisce
utilizzare termini più specifici quali teoria dei sistemi, teoria dei controlli,
intelligenza artificiale e via dicendo.

XVII - XVIII secolo d.C.: Gottfried Wilhelm Leibniz


Questa ricerca di un modo meccanico per determinare la verità si osserva chiaramente anche nel
pensiero di Leibniz. L’ars combinatoria leibniziana viene concepita inizialmente come “lingua
universale”, ma con un’evidente accentuazione dei caratteri logici: si tratta di un linguaggio
matematizzato modellato sulla stessa struttura del pensiero, che dovrebbe poter ridurre
ogni disputa filosofica a un semplice calcolo del valore di verità di un enunciato.
L'obiettivo è dimostrare le verità acquisite, ma anche scoprirne di nuove. Secondo
Leibniz, la logica, in quanto sistematizzazione del ragionamento, dev’essere
padroneggiata e poi meccanizzata per comporre il calculus ratiocinator,
in grado di ridurre il ragionamento a una sorta di algebra del pensiero.
L’immagazzinamento di tutta la conoscenza in un adeguato linguaggio
renderebbe possibile trattare meccanicamente le dispute intellettuali di qualsiasi
natura, secondo l’invito espresso da Leibniz di “prendere le penne e calcolare”.

Intelligenza artificiale e reti neurali B5 215


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I punti su cui l’IA forte si è concentrata maggiormente sono:


• la rappresentazione della conoscenza, in particolare tramite la logica matematica;
• l’uso del ragionamento e di meccanismi di dimostrazione automatica;
• la pianificazione, in particolare tramite l’applicazione di algoritmi basati su grafi;
• l’analisi del linguaggio naturale, nel tentativo di rendere automatica la comprensione e
la produzione di espressioni della lingua umana.
È stato dato, invece, poco spazio ad altri elementi oggi ritenuti fondamentali, come:
• l’apprendimento automatico, per cui un sistema apprende a funzionare meglio sulla base
delle esperienze registrate (si potrebbe anche dire “vissute”, applicando una metafora che
agli intelligenti artificiali viene molto naturale);
• la capacità di riconoscere e classificare.

La tecnologia emblematica dell’IA forte è stata quella dei sistemi esperti, ovvero di quei
programmi che riproducono il comportamento di un esperto umano in uno specifico dominio.

In particolare:
• forniscono le stesse risposte o gli stessi consigli che fornirebbe l’esperto umano;
• sono in grado di giustificare la propria risposta.
I sistemi esperti si usano per risolvere problemi la cui soluzione richiede una considerevole
esperienza umana. Tipici campi di utilizzo sono: diagnostica, progettazione, controllo, piani-
ficazione, istruzione ecc. Approfondiremo questo argomento più avanti, nel capitolo. Per ora,
basti sapere che il compito dell’interfaccia è quello di rendere la comunicazione tra l’utente e
il sistema esperto la più naturale possibile. La base di conoscenza memorizza la conoscenza
dell’esperto. Tale conoscenza consiste, essenzialmente, di fatti e regole.
Il motore inferenziale è la parte attiva del sistema. Usa la base di conoscenza per inferire
nuovi fatti e produrre soluzioni.
L’idea di fondo era che si potesse riversare tutta la conoscenza di un esperto di dominio in un
sistema esperto, e che questo avrebbe potuto essere equivalente (e quindi sostituibile) a una
persona. Il problema reale non è stato tanto la scelta della tecnologia, ancora oggi usata in for-
ma più limitata, ma piuttosto la promessa di poter avere tanti piccoli robot asimoviani pronti
a lavorare per noi.

Modulo
spiegazione

Base di Motore
Utente Interfaccia
conoscenza inferenziale

Modulo
aggiornamento

216 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’intelligenza artificiale debole


All’IA forte si contrappone l’IA debole.

L’intelligenza artificiale debole sostiene che un computer non sarà mai in grado di essere
equivalente a una mente umana, ma potrà solo arrivare a simulare alcuni processi cognitivi
umani senza riuscire a riprodurli nella loro totale complessità.

Si tratta quindi di un’IA che agisce come se pensasse e avesse una mente.
I sostenitori dell’intelligenza artificiale debole non si pongono più l’obiettivo di realizzare in-
telligenze simili a quelle umane, ma piuttosto di realizzare software che possano sostituire
alcune funzioni umane, come per esempio la traduzione automatica di testi, o la previsione di
atti criminali, che sono senza dubbio funzioni complesse non immediatamente riconducibili a
sistemi formali, ma la cui soluzione non potrà far dire che “nuove intelligenze” vivono tra noi.
L’importante è che il software agisca come un soggetto intelligente, non che lo sia davvero.
Se un navigatore satellitare ci consente di arrivare a destinazione, fornendoci informazioni
con una voce sintetica suadente, magari addirittura confrontandosi con il traffico reale sulle
strade, a chi segue l’IA debole non importerà il modo in cui ci arriva, mentre un seguace dell’IA
forte potrà obiettare che non è così che le persone ragionano.

• Obiettivo: comprensione • Obiettivo: costruzione


dell’intelligenza di entità dotate di razionalità
• Metodo: costruzione di modelli • Metodo: codifica del pensiero
computazionali, verifica razionale; comportamento
sperimentale razionale
• Criterio di successo: • Criterio di successo:
risolvere i problemi l’importante è
con gli stessi processi risolvere i problemi
usati dall’uomo che richiedono
intelligenza
IA come scienza IA come ingegneria
(approccio (approccio
della psicologia ingegneristico –
cognitiva – IA forte) IA debole)

Intelligenza artificiale e reti neurali B5 217


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

Aree di applicazione
dell’INTELLIGENZA
ARTIFICIALE

COS’È L’INTELLIGENZA ARTIFICIALE


L’intelligenza artificiale è quella disciplina, appartenente
all’informatica, che studia i fondamenti teorici, le
metodologie e le tecniche che permettono di progettare
sistemi hardware e sistemi software capaci di fornire
al computer delle prestazioni che, a un osservatore
comune, sembrerebbero essere di pertinenza esclusiva
dell’intelligenza umana.
Le sue applicazioni sono potenzialmente infinite,
ma  finora i contesti in cui è stata impiegata
con più successo sono quelli che vedi
schematizzati in queste due pagine.

Sistemi esperti
I sistemi esperti non rispondono
Robotica più all’esigenza di realizzare
algoritmi risolutivi di problemi
L’area della robotica intelligente (cioè l’area
applicativi, ma richiedono solamente
della robotica di interesse per l’IA) si articola
di rappresentare conoscenza: la
nelle sottoaree della manipolazione e della
macchina algoritmica utilizza poi
navigazione. In termini molto generali, queste
questa conoscenza per costruire
due particolari sottoaree si occupano dei
inferenzialmente la soluzione dei
problemi geometrici e di movimento connessi
problemi applicativi posti (purché
con la realizzazione di robot intelligenti e
riguardanti le informazioni possedute
hanno raggiunto da tempo risultati concreti
dal sistema). Per esempio, questo
e rilevanti anche dal punto di vista applicativo.
tipo di IA potrebbe essere usato in
futuro per affiancare il medico nella
formulazione di diagnosi.

218 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Pianificazione e schedulazioni autonome


È il contesto a cui appartengono anche i viaggi spaziali: i sistemi originano
un piano costituito da una sequenza di operazioni semplici e sono capaci di
monitorare l’esecuzione del piano per raggiungere un obiettivo di alto livello.

Domotica
Lo studio della realizzazione della “casa intelligente” è una delle applicazioni
più recenti dell'intelligenza artificiale: questa tecnologia è capace di mettere
in funzione elettrodomestici e controllare il loro stato anche in remoto,
automatizzando i lavori domestici con software connessi a Internet e piccoli
robot specializzati.

Controllo autonomo
Quando un sistema è particolarmente complesso e le sue variabili difficilmente
prevedibili, l'intelligenza artificiale può essere molto efficace: è il caso del
controllo automatico di veicoli che si devono orientare in ambienti mutevoli, come
le sonde spaziali o le automobili senza pilota.

Giochi
Storicamente, i metodi informatici che stanno alla base dell'intelligenza
artificiale sono stati sviluppati con obiettivi ludici. Lo studio dei giochi ha
determinato lo sviluppo e la messa a punto di numerose tecniche, soprattutto
quelle della ricerca nello spazio degli stati. Nel 1997, per la prima volta nella
storia, il software Deep Blue sviluppato dalla IBM ha sconfitto il campione del
mondo umano di scacchi, Garry Kasparov. La forza di questo programma deriva
principalmente dalla sua straordinaria potenza computazionale: l’algoritmo che
sceglie le mosse è capace di calcolare 100 milioni di posizioni al secondo.

Dimostrazione di teoremi matematici


In questo ambito, l'uso dell'intelligenza artificiale era volto inizialmente
alla ricerca e alla prova di nuovi teoremi in aritmetica, geometria, logica e
meccanica: di recente si è assistito a una svolta verso lo sviluppo di tecniche
inferenziali generali che permettono di dedurre, da un dato
insieme di fatti, nuovi fatti o loro proprietà e relazioni. Questi
sviluppi vengono poi integrati in altre applicazioni, come i
sistemi esperti e i sistemi domanda e risposta.

Programmazione automatica
L’obiettivo di questo filone di ricerca è quello di costruire sistemi che, partendo
da specifiche ad alto livello delle funzioni che un programma deve eseguire,
riescano a generare automaticamente il programma desiderato.

Comprensione del linguaggio naturale


La realizzazione di sistemi intelligenti per la comprensione e generazione di
espressioni linguistiche non ha ancora raggiunto risultati tecnologicamente
rilevanti, nonostante il grande interesse pratico e le ricadute commerciali: i pochi
risultati raggiunti sono infatti distribuiti nei nostri dispositivi informatici, sottoforma
di assistenti virtuali (Siri e Cortana) e traduttori automatici (GoogleTranslate).

Intelligenza artificiale e reti neurali B5 219


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

3 Il contributo di Turing
Il successo dell’IA è legato alla disponibilità di un sistema artificiale all’interno
del quale riprodurre, attraverso un processo di emulazione, i fenomeni dell’intel-
ligenza. Fin dall’inizio, il candidato ad assumere questo ruolo è stato il compu-
ter. Come abbiamo visto nelle precedenti Unità, alla base dell’invenzione di que-
sto meraviglioso strumento c’è il concetto di macchina universale di Turing.
Oltre a questa invenzione, il genio matematico Alan Turing fornì una soluzione
concreta e operativa al problema dell’espressione dell’intelligenza in una mac-
china: il test di Turing.

Il test di Turing
Il test di Turing è un metodo di verifica dell’intelligenza artificiale. È stato ideato da Alan
Turing negli anni ’50. Ancora oggi, è considerato uno dei principali criteri di verifica dell’intel-
ligenza artificiale. Il test di Turing è molto semplice. Una persona scrive su dei bigliettini delle
domande da inviare a due soggetti diversi in un’altra stanza. In una delle stanze è situata una
macchina, nell’altra si trova invece una persona. Entrambi i soggetti rispondono alla domanda
dell’esaminatore stampando su un biglietto una risposta. I biglietti vengono infine riconsegnati
all’esaminatore. Al termine del ciclo di domande, l’esaminatore deve scoprire in quale delle due
stanze si trova la macchina. L’esperimento viene poi ripetuto sostituendo la macchina con una
persona a cui viene affidato il compito di mentire alle domande. L’esaminatore deve cercare di
capire quale delle due persone sta mentendo e quale invece sta rispondendo sinceramente alle
domande. Il test di Turing è considerato superato soltanto se il numero di volte in cui l’esami-
natore individua la macchina è pari al numero di volte in cui l’esaminatore scopre la persona
che mente (al momento nessuna macchina è mai riuscita a superare il test di Turing sull’intel-
ligenza artificiale).
Le domande possono essere di qualsiasi tipo, e riguardare conoscenze enciclopediche (per es.:
dimmi qual è il fiume che attraversa la Pianura Padana), capacità di calcolo (per es.: quanto fa 5
alla quarta?), esperienze emotive (per es.: come ti senti quando osservi un tramonto?), doman-
de con co-referenza (per es.: ti piace il lago di cui abbiamo già parlato?) e qualsiasi altra cosa
venga in mente all’esaminatore.
Non sempre rispondere correttamente indurrà nell’esaminato l’idea che l’altro sia una persona.
Per giungere alla comprensione, il computer dovrebbe saper:
• interpretare il linguaggio
naturale, per comunicare
con l’esaminatore nel suo lin-
guaggio umano; L’umano
• rappresentare le conoscen- è A o B? PT
ze, per memorizzare quello
che sa o sente;

A B
• ragionare automaticamen-
te, per utilizzare la conoscen-
za memorizzata in modo da
rispondere alle domande e
trarre nuove conclusioni;
• apprendere, per adattarsi a
nuove circostanze, individua-
re ed estrapolare pattern.

220 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

SEI UN UMANO? PROVALO! Ormai ci viene automatico e non ci facciamo più caso: molto spesso ci viene chiesto, al momento della
registrazione o dell'accesso a un sito o a un backoffice online, di digitare caratteri alfanumerici copiandoli da un'immagine, oppure di
scegliere tra le immagini di un set quelle che possiedono alcune caratteristiche specifiche.
Lettere e numeri possono essere casuali o avere un senso compiuto ma,
in tutti i casi, non somigliano ai caratteri che di solito vengono riprodotti
da un qualsiasi word-processor. Le lettere sono distorte e spesso sono
presenti linee e colori fatti apposta per ostacolarne la lettura. Di norma,
non è necessario più di qualche secondo per riuscire a riconoscerle
correttamente o per individuare le immagini giuste. Quello che stiamo
facendo è un vero e proprio test. Nella fattispecie, è una forma di test di
Turing, immaginato appunto da Turing: CAPTCHA, Completely Automated
Public Turing test to tell Computers and Humans Apart (letteralmente,
Test di Turing completamente pubblico e automatico per distinguere
esseri umani e computer). Si tratta di una delle più familiari procedure
antispam, che sfrutta una delle peculiarità proprie del cervello umano,
ovvero quella di riconoscere istantaneamente simboli e immagini.
Se, infatti, nessuno di noi ha particolari difficoltà a leggere o analizzare
immagini da qualunque supporto (cartaceo o virtuale che sia), la stessa
cosa non vale per un computer che, per farlo, ha bisogno di un software
OCR. Considerando che al momento le macchine non sanno risolvere un
test di Turing (ovvero, formalmente, non sanno pensare), un test di Turing
è un buon metodo per distinguere una macchina da un essere umano.
Un essere umano, infatti, lo passa, mentre una macchina, al momento,
no. Questo ostacola quegli spambot che scandagliano autonomamente
la Rete alla ricerca di moduli di immissione.

WTF does that say?

Bisogna dare credito a Turing di aver concepito un test che è rimasto significativo a distanza di
sessant’anni. Sono state fatte delle estensioni al test per introdurre elementi multimediali, ma
fondamentalmente il test ancora oggi è considerato piuttosto valido.

4 Il contributo di Searle
Un tentativo di superare la posizione del test di Turing è stato rea-
lizzato da John Rogers Searle, nato nel 1932, professore di filoso-
fia a Berkeley, Università della California, noto per i suoi contributi
alla filosofia del linguaggio e alla filosofia della mente.
Searle, attraverso il suo esperimento mentale chiamato stanza ci-
nese, ipotizza l’esistenza di una stanza dove è possibile introdurre
dei testi scritti in una lingua e da dove verranno emessi dei testi
tradotti in un’altra lingua. Un osservatore potrà pensare che chi
sta facendo le traduzioni, sia esso una persona o un automa, sia un
soggetto intelligente. Secondo Searle, invece, questa operazione
potrebbe essere eseguita in modo del tutto automatico e mecca-
nico, utilizzando per esempio un libro di regole o un dizionario.

Intelligenza artificiale e reti neurali B5 221


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Non è necessario, infatti, che chi opera la traduzione conosca la lingua di traduzione e nemme-
no la lingua originale: l’operazione non ha pertanto nulla di intelligente.
La posizione di Searle non ha l’obiettivo di contestare il test di Turing, ma piuttosto l’aderenza
di questo alla posizione dell’IA forte.
D’altro canto, anche le osservazioni di Searle sono opinabili. Asserire che l’operazione di tradu-
zione sulla base di un dizionario sia possibile è un’affermazione palesemente falsa (famosa la
traduzione di “la carne è debole e lo spirito è forte”, tradotta nella lingua finale come “il liquore
è forte e la bistecca è avariata”); si prende un compito ostico e se ne ipotizza una soluzione ba-
nale, per poter sostenere che non c’è pensiero; ma se questa soluzione fosse possibile, il compito
non sarebbe complesso e non rientrerebbe nell’ambito dell’IA e della specificità dell’intelligen-
za umana.
Resta da analizzare il punto dell’IA forte contestato da Searle: è necessario che i programmi
“pensino”, o quanto meno seguano gli stessi processi attuati dalle persone, per poter risolvere
problemi tipicamente svolti dall’intelligenza umana?
Il problema è particolarmente mal posto, in quanto non è stato stabilito ancora il modo in cui
le persone “pensano”. Vi è perfino chi mette in dubbio l’esistenza del pensiero stesso quando è
separato dai suoi effetti operativi o altri che fanno risalire alle emozioni la base dell’intelligen-
za. La critica di Searle risulta pertanto non legata intimamente al test di Turing, ma a letture di
questo che ne hanno falsato il senso.
Non vi è alcun tipo di fondamento scientifico per poter supportare la posizione dell’IA for-
te; non rimane, perciò, che la posizione dell’IA debole, che può essere oggi ridefinita come IA
pragmatica. Ciò non significa affatto che gli obiettivi cardine dell’IA forte (la creazione di
robot e di automi antropomorfi) debbano essere abbandonati, ma solo che è possibile cercare
di raggiungerli anche in modi diversi dall’approccio al pensiero.

5 Intelligenza artificiale, informatica e robotica


La corretta collocazione dell’IA come disciplina richiede di valutare la sua opportuna dislo-
cazione all’interno dell’informatica, della quale l’IA è una parte e con cui è in relazione sia a
livello dei fondamenti sia a livello delle applicazioni.
Se spaziamo nell’ambito dei fondamenti dell’informatica, osserviamo che l’IA tende a ricer-
care e a sviluppare le teorie di base, sia già esistenti (per esempio, la logica matematica), sia
del tutto nuove (per esempio, la teoria dei problemi). Spostandoci nella sfera delle applicazio-
ni dell’informatica, invece, l’IA rappresenta una disciplina sperimentale che si propone di
ampliarne le applicazioni, in modo particolare quelle non numeriche. Per giungere, poi, a un
inquadramento ancora più particolareggiato dell’IA, andando oltre l’ambito dell’informatica,
è doveroso spingersi anche alla robotica, così da pervenire a osservazioni di natura più com-
plessiva. Inquadrare l’IA in questo modo significa partire da una visione del reale vista in due
ambienti: quello naturale, costituito dall’uomo e dal mondo, e quello artificiale composto dal
computer, nel caso dell’informatica, e dal robot per la robotica.

Computer e robot
Con l’informatica, l’uomo concepisce la realizzazione di una macchina (il computer) che ri-
produce alcune facoltà dell’intelligenza dell’uomo e che risolve alcuni problemi. Progettare
un computer significa per l’uomo sostituire se stesso con una macchina nel ragionare, senza
coinvolgere l’interazione con il mondo.

222 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Con la robotica, invece, l’uomo concepisce la


realizzazione di una macchina, il robot (l’in-
terelaboratore) che, in maniera piuttosto gros-
solana, riproduce sia talune facoltà dell’in-
telligenza dell’uomo che riflette sul reale, sia
talune facoltà dell’interazione dell’uomo che
agisce e percepisce (cioè interagisce) nel reale.
Computer e robot operano nell’ambito dell’in-
formazione. È fondamentale, però, analizzare
la natura dell’elaborazione dell’informazione,
sia nel computer sia nel robot. L’informazione,
intesa come l’entità oggetto di attività di ela-
borazione svolta dal computer e dal robot, è
interpretata come la classe di modelli del reale caratterizzati dalla proprietà di essere sot-
toposti alle attività di elaborazione e di interelaborazione svolte dalle macchine (computer
nell’informatica e robot nella robotica).
Nello specifico caso dell’elaborazione dell’informazione, si possono sinteticamente riconosce-
re tre tipi d’informazione:
• l’algoritmo
• il dato
• il problema.

Logicamente, si possono identificare, sempre in maniera sintetica, anche tre tipi di elaborazio-
ne dell’informazione:
• l’esecuzione di algoritmi (computer esecutorio);
• la gestione di dati (scrittura, memorizzazione, aggiornamento e lettura – computer ge-
stionale);
• la risoluzione di problemi (computer risolutorio); una dizione equivalente a risoluzione
di un problema è quella di inferenza sulla conoscenza (si può parlare in tal caso di elabo-
ratore inferenziale).

La robotica intelligente
Nel caso della robotica, cioè nel caso dell’interelaborazione dell’informazione, occorre ag-
giungere ai tre precedenti tipi di informazione (algoritmo, dato, problema) coinvolti nei corri-
spondenti tre tipi di elaborazione (esecutoria, gestionale, risolutoria o inferenziale), due altri
tipi di informazione:
• il modello dei fenomeni prodotti dal robot;
• il modello dei fenomeni percepiti dal robot.

Di conseguenza, si possono identificare due tipi di interazione con il mondo:


• la produzione di fenomeni conformi a un loro appropriato modello (l’informazione) posse-
duto e controllato dal robot, che compie questa attività attraverso il sistema degli attuato-
ri (cioè un’interfaccia di interazione in uscita dal robot verso il mondo);
• la percezione di fenomeni descritti da un loro appropriato modello (l’informazione) formu-
lato dal robot, che compie questa attività attraverso il sistema dei sensori (cioè un’interfac-
cia di interazione in entrata nel robot dal mondo).

Intelligenza artificiale e reti neurali B5 223


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Detto questo, risulta possibile affermare che:

L’IA studia i computer (gli elaboratori) e i robot (gli interelaboratori) nei quali viene svolta
elaborazione risolutoria o inferenziale.

La parte della robotica che è oggetto di interesse per l’IA prende il nome di robotica intelli-
gente. Al giorno d’oggi, siamo soliti riferirci al computer o al robot parlando di sistema in-
telligente. Secondo Bertrand Russell, filosofo e logico matematico gallese vissuto nel ’900,
le proprietà che si associano a un agente intelligente sono quelle relative alla sua capacità di
svolgere alcune attività intellettive tipicamente umane, all’offrire delle prestazioni di livello
umano, allo svolgere attività inferenziali e all’agire razionalmente.

INFORMATICA E ROBOTICA

PERCEZIONE
ATTRAVERSO I
SENSORI

ELABORAZIONE
ATTRAVERSO
il computer
(L’ELABORATORE)

PRODUZIONE
ATTRAVERSO gli
ATTUATORI

INFORMATICA ROBOTICA

6 Risoluzione automatica dei problemi


La nozione di problema è stata posta in risalto dall’IA attraverso l’affiancamento di questo
concetto alla nozione di algoritmo e studiando le attività e le modalità per la sua modellizza-
zione. Questa attività prende il nome di rappresentazione del problema o rappresentazione
della conoscenza. Sotto lo specifico punto di vista della rappresentazione della conoscenza,
peculiare importanza ha acquistato il caratteristico aspetto della risoluzione automatica dei
problemi.

Risolvere automaticamente un problema significa porsi l’obiettivo di corredare il com-


puter (l’elaboratore) di metodi generali e di programmi efficienti che possano permettergli,
attraverso processi completamente automatici o interattivi, di costruire l’algoritmo risolutivo
di un problema, ottenendo così la soluzione automatizzata del problema stesso.

L’approccio classico dell’informatica è quello che prevede che l’uomo costruisca, attraverso
l’algoritmo, la soluzione di un problema. Questa nuova concezione di utilizzo dell’elaboratore

224 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

richiede, invece, che l’uomo sia in grado di fornire alla macchina un algoritmo capace a sua
volta di costruire un algoritmo. In IA, questi algoritmi, che sono in effetti dei meta-algoritmi,
vengono definiti come algoritmi inferenziali.
L’input di un algoritmo inferenziale è, pertanto, la rappresentazione del problema che si desi-
dera che la macchina risolva automaticamente. Con questa tipologia di algoritmi, la macchina
viene concepita non più come mero esecutore abile e veloce nell’esecuzione di algoritmi ma,
piuttosto, come entità capace di costruire autonomamente gli algoritmi necessari per risolvere
problemi.
Continuando a ragionare sullo studio dell’IA che coinvolge elaboratori e robot, può essere utile
dare uno sguardo alla figura.
Nell’ambito dell’IA, esiste una differenza
tra problema intuitivo, cioè l’esigenza av- B
vertita dall’uomo di dover risolvere un pro- rappresentazione
blema, e la formalizzazione di tale proble-
ma, che in IA viene denominata problema inferenza
A
rappresentato. Conseguentemente, il riso- mondo
mondo della
lutore automatico di problemi è in grado di della realtà
conoscenza
confronto
operare un’elaborazione sul problema rap- della realtà
presentato che permette di costruire il pro-
C
blema risolto. Questo problema può essere
espresso sia dall’algoritmo risolvente, che fisica intelligenza artificiale
A fenomeno problema intuitivo
si applica al problema rappresentato, sia
B modello problema rappresentativo
dall’esecuzione dell’algoritmo risolvente, C legge problema risolto
che produce la soluzione del problema (in (algoritmo risolvente)
questo caso si fa riferimento a una soluzio-
ne algoritmica).
Sempre osservando la figura, ci rendiamo conto che le attività svolte possono essere articolate
nel seguente modo:
• passaggio dal mondo della realtà (fenomeno, problema intuitivo) al mondo della conoscen-
za della realtà (modello, problema rappresentato). Questo passaggio, che costituisce la rap-
presentazione, viene anche chiamato abduzione;
• passaggio all’interno della conoscenza della realtà (dal modello alla legge, dal problema
rappresentato al problema risolto). Questo passaggio, che costituisce la risoluzione ed
esecuzione, viene anche chiamato inferenza;
• passaggio dal mondo della conoscenza della realtà (legge, problema risolto) al mondo del-
la realtà (fenomeno, problema intuitivo). Questo passaggio, che costituisce il confronto e
soddisfacimento, viene anche chiamato adduzione.
Le attività dell’abduzione e dell’adduzione vengono globalmente intese con il termine di af-
ferenza, concetto che è in contrapposizione con quello di inferenza, in quanto quest’ultimo
opera all’interno della conoscenza della realtà. L’IA si concentra proprio sull’attività inferen-
ziale nell’emulare le attività intellettuali dell’uomo. Ciò, però, può variare da caso a caso. Per
esempio, nel caso della risoluzione automatica di problemi legati ai giochi (come quello in cui
il computer gioca a scacchi) il computer, dopo avere costruito l’algoritmo risolvente, lo esegue.
In altre circostanze, invece, la macchina costruisce l’algoritmo risolvente, mentre l’uomo lo
utilizza eseguendolo. È questo il caso dei sistemi esperti (di cui abbiamo già fatto cenno nel
Paragrafo 2 di questa Unità).

Intelligenza artificiale e reti neurali B5 225


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

7 I sistemi esperti
Definiamo sistema esperto un programma in grado di risolvere problemi complessi che ri-
entrano in un particolare dominio, con un’efficienza paragonabile a quella di uno specialista
umano di quel settore.

Un sistema esperto potrebbe, per esempio, essere capace di elaborare diagnosi mediche esa-
minando le cartelle cliniche (opportunamente formalizzate) di un paziente; o potrebbe va-
lutare tutti i fattori di rischio e le prospettive di guadagno di un determinato investimento
finanziario.
Tutti i sistemi esperti presentano i seguenti elementi costitutivi:
• una base di conoscenza
• un motore inferenziale
• un’interfaccia utente.

■ La base di conoscenza specialistica su un determinato dominio, rappresenta il sapere ne-


cessario ad affrontare e risolvere problemi in quel campo. Tale base dovrà, ovviamente, es-
sere efficacemente rappresentata nella memoria del computer. Rappresenta il repository
dove sono memorizzate le informazioni e le regole che permettono al sistema di porre in
essere un ragionamento.
■ Il motore inferenziale è in grado di dedurre, a partire dalla base di conoscenza, le conclu-
sioni che costituiscono la soluzione a un dato problema che rientra nel dominio. Il motore
inferenziale, che è il vero cuore del programma, funziona applicando alla base di cono-
scenza una serie di procedure euristiche (ossia, un approccio alla soluzione dei problemi
che si affida all’intuito e allo stato temporaneo delle circostanze) simili a quelle sviluppate
nell’ambito del problem solving. Tuttavia, nella maggior parte dei casi, alle euristiche ge-
nerali si affiancano delle euristiche specifiche per l’argomento di cui il sistema si occupa.
Infatti, in ogni campo specialistico un esperto umano è in grado di escludere immediata-
mente, e senza valutarle, una serie di opzioni che sono manifestamente improduttive.
■ L’interfaccia utente è rappresentata dal software che permette all’utente di sfruttare il
motore inferenziale; di solito è un’interfaccia web, a volte molto semplificata (una pagina
dove l’utente digita una domanda e riceve a video la risposta elaborata dal sistema esperto),
a volte più strutturata (oggi integrabile anche con altri sistemi basati sull’intelligenza arti-
ficiale come il riconoscimento e la comprensione del linguaggio naturale).

In sintesi, i principali attributi che si rico-


noscono a questi sistemi esperti sono:
• la trasparenza, ovvero la possibilità
di fornire spiegazioni circa le linee di
ragionamento seguite per raggiunge-
re la o le conclusioni;
• l’euristica, cioè l’adozione di strategie
tipiche degli esperti umani;
• la flessibilità, ovvero la capacità di
seguire, senza grosse difficoltà, modi-
ficazioni alle loro basi di conoscenza,
cioè alla loro riserva di conoscenza.

226 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Le prime applicazioni dell’IA ai sistemi esperti risalgono agli anni ’60 e furono sperimentate
negli ambienti di ricerca delle Università statunitensi.
Il primo sistema esperto degno di questo nome fu MACSYMA, un sistema esperto completo di
matematica simbolica ideato, tra gli altri, da Joel Moses (matematico israeliano-americano,
informatico e professore emerito del Massachusetts Institute of Technology). Il sistema MAC-
SYMA era ancora basato su algoritmi tradizionali e venne seguito da DENDRAL, il primo clas-
sico esempio di “generate and test”, ovvero di procedura euristica, destinato alla ricerca nel
settore chimico.
I primi studi sulla comprensione e l’elaborazione del linguaggio naturale portarono alla na-
scita di HEARSAY, un programma concepito da un’equipe di ricercatori della Carnegie Mel-
lon University per consentire il colloquio fra esperti tramite una lavagna astratta costituita
appunto dal computer. In seguito, lo sviluppo di sistemi esperti si è concentrato in particolar
modo sulla soluzione di problemi medici. In questo settore, una vera e propria pietra miliare è
costituita da MYCIN, che prese avvio come progetto nel 1972 all’Università di Stanford.
MYCIN permetteva di identificare i batteri che causano infezioni gravi, come la batteriemia
e la meningite, e di raccomandare antibiotici nella dose adatta al peso corporeo del paziente.
Il nome del sistema deriva proprio dagli antibiotici stessi: molti antibiotici, infatti, hanno il
suffisso -mycin. Il sistema MYCIN è stato utilizzato anche per la diagnosi di malattie di coagu-
lazione del sangue.
Da questo modello presero spunto altri sottosistemi destinati all’ampliamento degli studi sulla
spiegazione (GUIDON), sull’acquisizione della conoscenza (TEIRESIAS) e sul motore inferen-
ziale (EMYCIN).
EMYCIN fu, nel 1979, il primo sistema inteso come strumento generale (tool) per lo sviluppo
specialistico di ulteriori programmi. Sul suo modello presero forma programmi destinati a dia-
gnosticare malattie polmonari (PUFF e CENTAUR), per il cancro (ONCOCIN) e anche per la
diagnosi dei guasti industriali (DART).
Sempre per il settore medico fu realizzato, nei primi anni ’70, CASNET, caratterizzato dalla
presenza al suo interno di uno schema generale (EXPERT) utilizzabile anche in sistemi con
diversa specializzazione; mentre con ben diversa specializzazione furono PROSPECTOR, rea-
lizzato nel 1979 da Peter Hart e Richard Duda per la ricerca petrolifera, XCON, rinominato R1,
realizzato nel 1980 da John McDermott per progettare la configurazione hardware dei grandi
computer, e PLANT, realizzato nel 1981 da Ryszard Michalski dell’Università dell’Illinois per
diagnosticare le malattie nelle coltivazioni di soia. Sia presso le Università, sia nelle aziende
specializzate, l’ambiente in cui in un primo tempo s’era coltivata la programmazione avanzata
è andato trasformandosi in ambiente di sviluppo per sistemi esperti.

8 Le reti neurali: generalità


Funzionamento del cervello umano
Allo stato attuale delle conoscenze circa il funzionamento del cervello, risulta arduo indivi-
duare al suo interno un qualche meccanismo che possa essere considerato equivalente a una
macchina formale automatica a stati discreti e sequenziali. Per quanto si è potuto verificare,
nel cervello hanno luogo miliardi di processi contemporanei (o paralleli) e caratterizzati da
variazioni di stato continue. Esistono, poi, delle capacità cognitive come la percezione (visio-
ne, udito, tatto) che ragionevolmente non sembrano riconducibili a processi computazionali
simbolici. Infine, abbiamo visto come, nonostante ricerche e sperimentazioni, l’IA classica non
sia ancora riuscita a costruire dei modelli computazionali delle varie facoltà cognitive umane

Intelligenza artificiale e reti neurali B5 227


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

plausibili ed effettivamente funzionanti. Tutte queste considerazioni hanno portato, a partire


dalla fine degli anni ’70, alla nascita di una nuova impostazione nello studio della mente (e pa-
rallelamente nella costruzione di macchine intelligenti). Questa nuova impostazione si chiama
connessionismo e sinteticamente il suo fondamento teorico, che rovescia completamente le
tesi della IA classica, è il seguente:

Per spiegare e/o riprodurre l’intelligenza e tutte le facoltà cognitive di un essere umano (o di
qualche altra specie animale) è necessario emulare le proprietà e la fisiologia del cervello,
ovvero il funzionamento delle sue cellule.

A questo scopo, sono nate le reti neurali artificiali, nel tentativo quindi di riprodurre le atti-
vità proprie del cervello umano.

Una rete neurale artificiale è uno strumento informatico che imita il funzionamento di un
cervello biologico nel memorizzare e nell’utilizzare le informazioni ricevute.

Per poter costruire reti neurali in grado di imitare il comportamento del sistema nervoso uma-
no, sono prima state studiate accuratamente le caratteristiche del cervello umano.
Nel sistema nervoso esistono miliardi di neuroni (cellule nervose) formati da un corpo cellu-
lare e da molti prolungamenti ramificati, detti dendriti, attraverso i quali il neurone riceve
segnali elettrici da altri neuroni. Ogni neurone ha anche un prolungamento filamentoso chia-
mato assone, la cui lunghezza può variare da circa 1 cm a qualche metro. All’estremità, l’as-
sone si ramifica formando terminali attraverso i quali i segnali elettrici vengono trasmessi ad
altre cellule (per esempio, ai dendriti di altri neuroni). Tra un terminale di un assone e la cellula
ricevente esiste uno spazio. I segnali superano questo spazio per mezzo di sostanze chimiche,
dette “neurotrasmettitori”. Il punto di connessione tra terminale e dendrite è detto sinapsi.
Un neurone trasmette un impulso elettrico (si “attiva”) lungo il suo assone quando si verifica
una differenza di potenziale elettrico tra l’interno e l’esterno della cellula. L’impulso elettrico
provoca la liberazione di un neurotrasmettitore dai terminali dell’assone, che a loro volta pos-
sono, per esempio, influenzare altri neuroni.
Il cervello umano è un calcolatore complesso, non lineare e parallelo. Pur essendo costituito
da elementi di elaborazione molto semplici (i neuroni), è in grado di eseguire computazioni
complesse, come il riconoscimento, la percezione e il controllo del movimento, molte volte più
velocemente del più veloce degli attuali computer.
Il cervello è in grado di modificare le connessioni tra i neuroni in base all’esperienza acquisita,
cioè è in grado di imparare.

Sinapsi
Corpi Cellula di Schwann I neuroni biologici sono da
Dendriti di Nissl Assone 5 a 6 ordini di grandezza
Nodo di Ranvier
più lenti dei componenti
elettronici convenzionali: un
evento in un chip si verifica
Guaina mielinica
in alcuni nanosecondi
Cono di
(10–9 s) mentre un
emergenza
evento neurale in alcuni
dell’assone
millisecondi (10–3 s).
Assoni di Fibra muscolare
altri neuroni

228 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Nel cervello non esiste un controllo centralizzato, nel senso che le varie zone del cervello fun-
zionano insieme, influenzandosi reciprocamente e contribuendo alla realizzazione di uno spe-
cifico compito.
Infine, il cervello è fault tolerant, cioè se un neurone o una delle sue connessioni sono danneg-
giati, il cervello continua a funzionare, anche se con prestazioni leggermente degradate.
Dopo questa doverosa premessa, risulta maggiormente evidente che per riprodurre artificial-
mente il cervello umano è necessario realizzare una rete di elementi molto semplici che sia una
struttura distribuita, parallela, capace di apprendere e quindi di generalizzare (cioè di produr-
re uscite in corrispondenza di ingressi non incontrati durante l’addestramento).

I componenti di una rete neurale artificiale


Una rete neurale è costituita da un insieme di nodi collegati. Per ogni nodo vi sono dei col-
legamenti di input (da cui arrivano segnali) e dei collegamenti di output (attraverso cui la
rete emette segnali). I nodi possono assumere due stati: stato di riposo e stato di attivazione.
Quando un nodo è in stato di attivazione, esso invia dei segnali ai nodi con cui è collegato.
Un importante aspetto della microfisiologia cerebrale che viene emulato dalle reti neurali è il
sistema di eccitazione. Infatti, i collegamenti tra i nodi di una rete neurale sono di due tipi:
collegamenti eccitatori e collegamenti inibitori.
Ogni collegamento tra un nodo della rete e un altro, strato di output
inoltre, è dotato di un peso: il peso del collegamento
assegna diversi valori ai segnali che li attraversano. pesi
Ogni nodo diventa attivo e dunque manda un segnale
ai nodi a esso connessi, solo se i messaggi che gli arri-
vano (nel computo tra segnali inibitori e segnali ecci-
tatori) lo portano oltre una certa soglia di attivazione collegamenti
(misurata mediante una scala numerica).
Visto nel suo complesso, il comportamento di una nodi
rete neurale può essere descritto così:

Un processo in cui, una volta fornita in ingresso


alla rete una configurazione di segnali-stimolo (me-
diante l’attivazione di alcuni suoi nodi, detti nodi
in input), la rete rilascia in uscita un’altra configu-
razione di segnali. strato di input

Le reti neurali come “scatole nere”


Le reti neurali si caratterizzano per la loro flessibilità e adattabilità riguardo all’analisi di
situazioni difficili da interpretare o caratterizzate da notevole complessità. Le reti neurali, in-
fatti, vengono adottate nei casi in cui l’esperto non riesce a individuare le regole che collegano
gli input con gli output. Si comportano come un sistema esperto: vengono, pertanto, modifica-
te costantemente le regole in base ai secondi con cui si prendono le decisioni, in relazione alle
variazioni che avvengono nel contesto ambientale all’interno del quale sono inserite.
Le condizioni idonee all’applicabilità delle reti neurali sono:
• ampio numero di variabili da tenere simultaneamente in considerazione;
• struttura delle relazioni del modello sottostante il dominio non chiaramente definita;

Intelligenza artificiale e reti neurali B5 229


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

• variabili non stabili nel tempo a causa di mutamenti nell’ambiente;


• costi alti associati a previsioni errate.
Così inquadrate, le reti neurali sono ritenute delle scatole nere poiché non forniscono alcuna
trasparenza del ragionamento adottato per giungere alla risposta finale. In base a ciò, le aspet-
tative future riguardano la possibilità di integrare i sistemi basati sui sistemi esperti (quindi
sulla conoscenza) con le reti neurali.
Le aree di lavoro sulle quali la ricerca sta procedendo sono le seguenti:
■ l’area in cui si cercano di sviluppare i processi elaborativi che consentono di documen-
tare e di creare la conoscenza che caratterizza uno specifico dominio. Nella risoluzione
di un problema, viene dapprima utilizzata la rete neurale e in seguito il sistema esperto,
realizzando quasi una forma di concorrenzialità tra le due tecnologie;
■ l’area che si sta occupando dell’integrazione tra i sistemi esperti e le reti neurali, in parti-
colar modo nell’ambito delle previsioni finanziarie, dove le reti neurali vengono utilizzate
come operatori statistici. Con questo tipo di approccio, la soluzione del problema richiede
inizialmente l’impiego della rete neurale e, solo in seguito, del sistema esperto.

Dati di input
Ricerca
Rete neurale delle regole Base
di interpretazione di conoscenza
dei fenomeni

Rappresentazione
Dati di output della conoscenza

9 Le reti neurali: l’approccio operativo


Il funzionamento di una rete neurale può essere sintetizzato nel seguente modo:

La rete neurale, una volta raccolti gli input necessari, li pone tra loro in relazione pesandoli
in funzione della loro influenza. Al termine effettua una sorta di media ponderata che rap-
presenta l’output ossia l’esito previsto per il fenomeno studiato.

Si intuisce facilmente che una scelta attenta e oculata delle variabili (gli input), le quali defi-
niscono il problema oggetto di studio e alimentano la rete, è di fondamentale importanza. Gli
scienziati hanno pensato di ricondurre questo fenomeno a una somma dei segnali di ingresso:
se la somma supera un certo livello, viene emesso un segnale. Ciò in base al fatto che ogni se-
gnale in ingresso ha un peso diverso e, di conseguenza, un’influenza diversa sul risultato della
somma. Cambiare i pesi significa poter cambiare i modi di far funzionare i neuroni. Il proble-
ma che ci si pone, però, è il seguente: come può avvenire un cambiamento automatico dei pesi
affinché possiamo ottenere la funzione voluta?
Marvin Minsky, un informatico e scienziato americano specializzato in IA, negli anni ’60 rie-
sce a dare una risposta partendo dal caso di un semplice neurone. Minsky utilizza un metodo

230 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

che confronta il risultato sbagliato con quello corretto, in funzione dell’er-


rore effettuato dal neurone, e in base al quale avviene la modifica dei pesi.
Affinché le funzioni possano essere utili è necessario, però, porre più neu-
roni in cascata e, da questa esperienza, si noterà che servono due strati per
ottenere una qualsiasi funzione.
Furono Rummelhart (uno dei più importanti scienziati cognitivisti) e
McLelland (psicologo cognitivo, considerato uno degli sviluppatori della
“rivoluzione connettiva” del 1980), nel 1984, a risolvere il problema di come
ottenere un cambiamento automatico dei pesi in una rete a due strati, uti-
lizzando un algoritmo di backpropagation. L’algoritmo utilizza l’errore
compiuto dagli strati finali della rete di neuroni come
mezzo per cambiare i pesi dei neuroni finali. In più,
questo errore, sommato a tutti gli errori provocati su
altri neuroni finali, viene usato anche per cambiare i
pesi dei neuroni intermedi. Operando così, si può far
imparare a una rete neurale una qualsiasi funzione
in maniera automatica.
Appare evidente che l’utilizzo più vantaggioso di una
rete neurale è proprio quello dell’acquisizione auto-
matica della conoscenza da un sistema complesso. In
tal modo, è stato possibile superare i limiti posti da
un sistema esperto.
Una rete neurale artificiale dev’essere in grado di ap-
prendere le caratteristiche del fenomeno che le viene presentato attraverso la modifica dei pesi
attribuiti alle connessioni (i pesi prima dell’apprendimento vengono impostati a valori casuali
compresi tra zero e uno).
Una classe interessante è rappresentata da quegli algoritmi che sono realizzati attraverso un
ciclo di insegnamento fondato sugli esempi.

Con esempio si fa riferimento all’associazione tra i dati che descrivono il problema e la rela-
tiva soluzione.

Conoscenza estratta Apprendimento


in modo autonomo per la generalizzazione
dagli esempi
Apprendimento
da esempi

Reti neurali e apprendimento Minimizzazione di un errore

Sintesi Adattamento delle Apprendimento Modifica dei


della funzione risposte della rete governato pesi delle
output=f (input) a quelle desiderate da un algoritmo connessioni

Intelligenza artificiale e reti neurali B5 231


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

In questo modo, la rete modifica i propri parametri automaticamente e sarà così in grado di
trovare la soluzione anche partendo da nuove classi di dati.
Chiariamo il concetto partendo da un semplice esempio.
Durante la fase di apprendimento, una rete è in grado di autocorreggersi. Per farlo, ricorre alla
differenza tra quanto reputava dovesse accadere e quanto è avvenuto in passato nelle diverse
manifestazioni dello stesso fenomeno osservato. Per esempio, una rete utilizzata per prevedere
l’andamento della borsa valori svolge il suo apprendimento prendendo in esame i vari anda-
menti passati in corrispondenza di determinati valori che si sono realizzati per gli input (valori
come il PIL, il costo del lavoro, la quantità di moneta in circolazione ecc.); in sostanza, la rete
considera i valori degli input in un determinato periodo e calcola il relativo esito. In altri termi-
ni, calcola quale dovrebbe essere, in base al suo apprendimento e alle azioni previste dall’algo-
ritmo, il valore raggiunto dall’indice di borsa in base agli input ricevuti. Considerato che si trat-
ta di valori che fanno riferimento a fenomeni passati, si è in grado di comunicare alla rete l’esito
corretto che poi si è verificato, cioè qual è stato l’andamento della borsa. In questo modo, la rete
confronta la sua opinione con l’esito corretto, calcolando l’errore compiuto. Utilizzando l’algo-
ritmo di apprendimento, la rete modifica i propri pesi in modo tale che, in situazioni future,
nel caso le venissero sottoposti gli stessi valori per gli input, l’errore da essa compiuto risulte-
rebbe più moderato. La rete, così, assorbe gradualmente le regole che legano l’input all’output,
per arrivare, a completamento dell’apprendimento, a generare errori sempre più ridotti.
Dall’analisi del precedente esempio, appare chiaramente evidente che le reti neurali rappre-
sentano uno dei primi strumenti informatici adattivi, nel senso che sono strumenti che si
“modellano” sulla base del fenomeno studiato.
Il risultato fornito non ha la pretesa di raggiungere una correttezza globale sui casi possibili,
ma vuole garantire che l’errore associato al valore ottenuto rappresenti il minimo possibile.
In aggiunta a questo, i programmi basati su reti neurali non si bloccano di fronte a un errore
ma, anzi, lo sfruttano per perfezionare le prestazioni. Le reti neurali, quindi, rappresentano un
validissimo approccio per affrontare problemi di “ottimizzazione dell’approssimazione”, come
l’interpretazione dei comandi vocali, l’interpretazione della scrittura o le previsioni nei più
svariati campi.

10 Algoritmi genetici e logica fuzzy


L’evoluzione della tecnologia ha permesso l’interesse anche verso gli algoritmi genetici e i
sistemi di fuzzy logic, che insieme costituiscono il paradigma del soft computing.
In tal modo, si è concentrato l’interesse non più su una tecnologia che richiede la presenza di
un esperto che esprima in modo chiaro e formalizzato la conoscenza su un determinato do-
minio (sistemi esperti), ma su una che si focalizza sulle tecniche di creazione o di estrazione
della conoscenza a partire dai dati storici. Questa attività di ricerca è conosciuta come data
mining.

Gli algoritmi genetici


Un algoritmo genetico è un metodo di ricerca globale e stocastico basato sul principio
darwiniano dell’evoluzione biologica.

Nell’ambito della biologia, con il termine evoluzione si intende il progressivo e ininterrotto


accumularsi di modificazioni successive, fino a manifestare, in un arco di tempo sufficiente-

232 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

mente ampio, significativi cambiamenti negli organismi viventi. Questo processo si basa sulla
trasmissione del patrimonio genetico di un individuo alla sua discendenza e sull’interferenza
in essa frapposta dalle mutazioni casuali.
Nonostante i cambiamenti tra una generazione e l’altra siano generalmente piccoli, il loro ac-
cumularsi nel tempo può portare a un concreto cambiamento nella popolazione, attraverso
svariati fenomeni, il principale dei quali è, secondo la teoria di Charles Darwin, quello della
selezione naturale.
Gli algoritmi genetici operano su una popolazione di potenziali soluzioni applicando il prin-
cipio della sopravvivenza del più adatto, così come avviene in natura, evolvendo verso una
soluzione che si avvicina il più possibile alla reale soluzione del problema.
Gli algoritmi genetici sono stati sviluppati inizialmente da John
Holland (scienziato statunitense e professore di psicologia, elet-
trotecnica e informatica), intorno alla metà degli anni ’70, come
metodo per individuare e ottimizzare gli algoritmi usati nel cal-
colo di alcune funzioni. A tale fine, Holland si è rifatto al mecca-
nismo della selezione naturale. Scopo del meccanismo è quello
di generare popolazioni sempre migliori, fino a identificare le ca-
ratteristiche che formano l’evoluzione con la miglior funzione di
fitness, che è il vero legame con la realtà che si vuole simulare e
ottimizzare. L’algoritmo genetico infatti ricercherà il massimo (o
se si vuole il minimo, e allora invece di fitness si potrà chiamare funzione costo o errore) di
questa funzione. I parametri rispetto a cui ottimizzare la funzione vanno codificati, opportu-
namente quantizzati, in stringhe binarie.
Un algoritmo genetico è una procedura di ricerca iterativa il cui scopo è l’ottimizzazione della
funzione di fitness e si svolge nei seguenti passi:
• generazione di una popolazione iniziale con caratteristiche pseudocasuali;
• assegnazione, a ogni individuo, di un valore di fitness;
• ordinamento degli individui per valori di fitness;
• definizione dei migliori individui come genitori della prossima generazione.
Partendo da questi individui, se ne genera un numero pari della generazione successiva. Ciò
può avvenire secondo due differenti procedure.

Spesso le tecnologie alla base


degli algoritmi genetici vengono
applicate anche a popolazioni di
reti neurali che, come abbiamo
visto, presentano per conto loro
alcune interessanti proprietà di
autoapprendimento. In questo
modo, per esempio, sono
state generate delle specie di
“formiche digitali” che sono in
grado di svolgere compiti quali
la ricerca del cibo, e mostrano la
capacità di lottare e di sopraffare
i loro simili, o la capacità di
evitare il contatto con “sostanze
velenose”.

Intelligenza artificiale e reti neurali B5 233


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Eseguendo cambiamenti casuali su un singolo genitore (mutazione), oppure combinando


efficacemente le caratteristiche di una coppia di genitori (incrocio o crossover).

L’algoritmo procede nuovamente fino a quando non si ha la convergenza delle caratteristiche,


ovvero i genitori ottenuti da una popolazione non possono essere migliorati ulteriormente.
Pertanto, partendo da una popolazione iniziale, un algoritmo genetico produce nuove genera-
zioni che, solitamente, contengono individui migliori delle precedenti: l’algoritmo evolve, così,
verso l’ottimo globale della funzione di fitness. Non è garantito che un algoritmo genetico trovi
una soluzione ottima a livello globale, ma è comunque in grado di trovare soluzioni buone in
tempi ragionevoli.

La logica fuzzy o sfumata


I sistemi di fuzzy logic o di logica sfumata nascono con l’obiettivo di permettere l’adozione,
all’interno di processi decisionali, di meccanismi in grado di gestire informazioni contraddi-
stinte da un grado di precisione piuttosto basso. Lo scopo fondamentale è di agevolare la defi-
nizione degli ambiti in cui si svolgono processi decisionali, specialmente nella delicata fase di
interazione del programma col mondo esterno.
La teoria fuzzy nasce nella metà degli anni ’60, quando il professore
Lotfi Aliasker Zadeh, un ingegnere, matematico e ricercatore ira-
niano, espose la necessità di utilizzare concetti imprecisi nella riso-
luzione di problemi della vita reale.
La logica sfumata permette un’appartenenza parziale a un insieme,
consentendo la definizione di “ragionamenti” automatizzati più
raffinati, in quanto impiega insiemi caratterizzati da confini flessibi-
li (la logica convenzionale, invece, si basa su insiemi caratterizzati da
confini rigidi). I processi decisionali che utilizzano confini rigidi di
definizione dell’insieme (detti anche “soglie di appartenenza”) devo-
no poter gestire repentini cambiamenti di stato simultaneamente al
cambiamento di valore di un dato che si trova nei pressi della soglia.
Questo modo di procedere, però, potrebbe rivelarsi inidoneo nel caso in cui si debbano realiz-
zare modelli rappresentativi del mondo reale. L’utilizzo della logica sfumata elimina il concetto
di soglia rigida e consente l’utilizzo delle funzioni di appartenenza,

Le funzioni di appartenenza sono specifiche funzioni che indicano il grado di appartenen-


za a un insieme sfumato e restituiscono un valore che può variare da 0 a 1 chiamato grado di
appartenenza (0 indica un’appartenenza nulla, 1 un’appartenenza totale).

Insiemi fuzzy
La logica sfumata è quindi considerata uno strumento flessibile attraverso il quale si è resa
possibile la rappresentazione di concetti imprecisi che tutti noi utilizziamo normalmente nel
linguaggio naturale. Per esempio, nella frase “Lucia è alta” il concetto di altezza risulta im-
preciso, poiché non ci è data una definizione rigorosa di quanto Lucia sia alta. Con gli insiemi
fuzzy possiamo definire il concetto di altezza, per esempio con il seguente insieme:
{ 0,1/150 + 0,25/160 + 0,5/170 + 0,8/180 + 0,9/190 + 1/200 }.

234 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

POPOLAZIONE

SELEZIONE RIMPIAZZAMENTO

GENITORI CROSSOVER MUTAZIONE FIGLI

L’insieme fuzzy appena rappresentato è composto da una serie di valori che indicano l’altezza
di una persona in centimetri, e da un numero compreso nell’intervallo [0,1] che, come abbia-
mo visto, rappresenta il grado di appartenenza dell’elemento all’insieme. Pertanto, scrivendo
0,5/170, stiamo affermando che una persona alta 170 cm è di altezza media poiché il grado di
appartenenza dell’elemento 170 è 0,5, mentre una persona alta 200 cm è una persona decisa-
mente alta, poiché il grado di appartenenza dell’elemento 200 è 1. Un insieme fuzzy può essere
rappresentato attraverso una funzione che indica la funzione di appartenenza degli elementi
all’insieme. Un esempio di funzione di appartenenza può essere il seguente:
1
μ(x) =
⎛ 50−x ⎞⎟
2
1+⎜⎜ ⎟
⎝ 10 ⎟⎠

che è una funzione gaussiana utilizzabile, per esempio, per rappresentare l’insieme fuzzy “per-
sone con età prossima ai 50”, poiché essa forma una curva che raggiunge il picco massimo (di
valore 1) con x uguale a 50.

Intelligenza artificiale e reti neurali B5 235


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME
INTELLIGENZA ARTIFICIALE E RETI NEURALI
AUDIO

L’intelligenza artificiale comportamenti di questo tipo, riproducono anche


L’intelligenza artificiale (IA) è la disciplina alcuni comportamenti di un uomo impegnato a
informatica che studia le metodologie e le tecniche interagire con la realtà, agendo e percependo.
con le quali progettare sistemi hardware e
I sistemi esperti
software capaci di fornire al computer prestazioni
L’approccio classico all’informatica prevede che un
che, a un osservatore comune, apparirebbero
uomo fornisca alla macchina un algoritmo capace
come comportamenti propri dell’intelligenza
di risolvere un problema. Nel tempo si è sviluppato
umana.
un approccio diverso, che consiste nel fornire
Intelligenza artificiale forte e debole invece alla macchina un algoritmo con il quale
Inizialmente l’IA è stata basata sulla convinzione costruire un altro algoritmo capace di risolvere
che fosse possibile costruire un computer capace un problema. Gli algoritmi che programmano le
di comportamenti non distinguibili in nessun macchine perché costruiscano altri algoritmi sono
senso importante da quelli dell’intelligenza chiamati algoritmi inferenziali o meta-algoritmi.
umana (intelligenza artificiale forte). In seguito Un programma che mette in grado una macchina
è stata basata sulla convinzione che un computer di costruire algoritmi per risolvere problemi
non potrà mai essere equivalente a una mente complessi relativi a un particolare dominio
umana: potrà solo giungere a simulare alcuni di conoscenze con un’efficienza paragonabile
processi cognitivi umani, senza mai poter riuscire a quella di uno specialista umano del settore
a riprodurli integralmente (intelligenza artificiale si chiama sistema esperto.
debole).
Le reti neurali
Il contributo di Turing Le reti neurali artificiali sono strumenti
Turing ha contribuito all’Intelligenza Artificiale informatici che imitano il funzionamento di un
innanzitutto mediante la definizione della cervello biologico nel memorizzare e nell’utilizzare
macchina astratta chiamata macchina di le informazioni. Il fondamento teorico delle reti
Turing universale (MdTU), e inoltre attraverso neurali artificiali è la tesi del connessionismo,
l’invenzione del test di Turing, un criterio per che rovescia quella dell’IA classica: per riprodurre
verificare se una macchina sia in grado di pensare le facoltà cognitive di esseri viventi bisogna
come un essere umano. A oggi nessuna macchina emulare il funzionamento delle cellule
ha superato il test. del cervello.
Intelligenza artificiale, informatica Algoritmi genetici e logica fuzzy
e robotica Negli anni più recenti si è affermato un approccio
Il computer è una macchina che riproduce nuovo alla costruzione di algoritmi, che si chiama
alcuni comportamenti intelligenti di un uomo soft computing. Tale approccio conduce alla
impegnato a riflettere sulla realtà. I robot costruzione di algoritmi genetici e di algoritmi
sono macchine che, oltre a riprodurre alcuni basati sulla logica fuzzy.

236 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

B5
MAPPA
MODIFICABILE

INTELLIGENZA
ARTIFICIALE

è ideazione se costruzione contributi si differenzia può essere


di di di Turing in due rami affrontata con
due approcci

sistemi
hardware e
software

che simulano

comportamenti
intelligenti

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
1) L’intelligenza artificiale si occupa dell’ideazione di quali sistemi?
2) Che cosa simulano questi sistemi?
3) In quali due rami si differenzia l’intelligenza artificiale?
4) Quali sono i due principali contributi di Turing all’intelligenza artificiale?
5) Secondo quali due approcci può essere affrontata l’intelligenza artificiale?
6) L’approccio connessionista all’intelligenza artificiale a quali sistemi dà luogo?
7) L’approccio soft computing all’intelligenza artificiale a quali due tipi di algoritmi dà luogo?
8) Se è utilizzata per costruire algoritmi che costruiscono algoritmi, a quali sistemi dà luogo
l’intelligenza artificiale?

Intelligenza artificiale e reti neurali B5 237


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo B5
1. L’intelletto: 5. I bot:
A è un insieme di funzioni conoscitive A sono programmi che simulano comportamenti
B è la facoltà mentale che ha ogni essere umano umani legati alla sola sfera cognitiva
di comprendere la realtà e di farsi delle idee B sono programmi che si trovano in rete e che
C è la capacità di ragionare permettono di giocare con il computer
D è la capacità di apprendere e risolvere problemi C sono programmi che si trovano in rete
che simulano dialoghi spesso semplici
2. L’intelligenza: con esseri umani
D sono dispositivi hardware da collegare al computer
A è un insieme di funzioni conoscitive, adattative per poter gestire i suoni in modo più efficace
e immaginative
B è la facoltà mentale che ha ogni essere umano 6. La domotica:
di comprendere la realtà
A si interessa dello studio della casa intelligente
C è la capacità di scegliere, discernere, confrontare
tramite soli sistemi hardware capaci di mettere in
D è la capacità intellettuale funzione elettrodomestici e controllare il loro stato
quando si è fisicamente presenti nella propria
3. L’intelligenza artificiale: abitazione
A è la disciplina che studia attraverso la telematica B si interessa dello studio della casa intelligente
come progettare sistemi hardware e software tramite soli sistemi software capaci di mettere in
capaci di fornire al computer le prestazioni funzione elettrodomestici e controllare il loro stato
di pertinenza umana quando si è fisicamente presenti nella propria
B è la disciplina che si occupa degli studi teorici abitazione
per la progettazione dei soli sistemi hardware per C si interessa dello studio e della realizzazione della
fornire al computer le prestazioni umane casa intelligente tramite una tecnologia capace di
C è la disciplina che studia come progettare sistemi mettere in funzione elettrodomestici e controllare
hardware e software capaci di fornire al computer il loro stato quando si è fisicamente presenti nella
le prestazioni di pertinenza umana propria abitazione
D è la disciplina che studia come progettare D si interessa dello studio e della realizzazione della
sistemi software capaci di fornire al computer casa intelligente tramite una tecnologia capace di
le prestazioni di pertinenza umana mettere in funzione elettrodomestici e controllare
il loro stato anche quando non si è fisicamente
4. L’intelligenza artificiale forte: presenti nella propria abitazione

A ritiene che un computer non possa essere 7. Quali tipi di informazioni è possibile riconoscere
veramente dotato di una intelligenza non nell’ambito del processo di elaborazione
distinguibile in nessun senso importante dell’informazione stessa?
dall’intelligenza umana
A L’algoritmo, il dato, il problema
B ritiene che un computer non possa essere
una macchina dotata di mente B L’esecuzione, la gestione, la risoluzione
C ritiene che un computer possa essere veramente C L’algoritmo, le variabili, la soluzione
dotato di una intelligenza non distinguibile in D La risoluzione, l’algoritmo, il tracing
nessun senso importante dall’intelligenza umana
D sostiene che un computer non può mai essere 8. Gli algoritmi inferenziali:
equivalente a una mente umana ma potrà solo A sono algoritmi classici
arrivare a simulare alcuni processi cognitivi umani
B sono procedure di calcolo estemporanee
senza riuscire a riprodurli totalmente
C sono meta-algoritmi
D sono algoritmi non previsti dall’intelligenza
artificiale

238 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

9. Con abduzione facciamo riferimento: 12. Nei sistemi esperti, il motore inferenziale:
A al passaggio dal mondo della realtà (fenomeno, A rappresenta il sapere necessario ad affrontare
problema intuitivo) al mondo della conoscenza e risolvere problemi in quel campo
della realtà (modello, problema rappresentato) B è in grado di dedurre, a partire dalla base
B al passaggio all’interno della conoscenza della di conoscenza, le conclusioni che costituiscono
realtà (dal modello alla legge, dal problema la soluzione a un dato problema che rientra
rappresentato al problema risolto) nel dominio
C al passaggio dal mondo della conoscenza della C è un insieme di moduli informatici grazie ai quali
realtà (legge, problema risolto) al mondo della un essere umano è in grado di interagire con
realtà (fenomeno, problema intuitivo) il programma ponendo domande e leggendo le
D al passaggio dal mondo della realtà (fenomeno, risposte
problema intuitivo) al mondo della conoscenza D è l’insieme del sapere e dei moduli informatici
della realtà (legge, problema risolto) necessari per gestire l’interazione con
il programma
10. Con inferenza facciamo riferimento:
A al passaggio dal mondo della realtà (fenomeno,
13. MYCIN è stato il primo sistema esperto degno
di questo nome. Quali tra le seguenti affermazioni
problema intuitivo) al mondo della conoscenza
relative a questo sistema sono esatte?
della realtà (modello, problema rappresentato)
B al passaggio dal mondo della conoscenza della A Permetteva di identificare i batteri che causano
realtà (legge, problema risolto) al mondo della infezioni gravi
realtà (fenomeno, problema intuitivo) B Il nome del sistema deriva dal classico suffisso
C al passaggio dal mondo della realtà (fenomeno, mycin usato negli antibiotici
problema intuitivo) al mondo della conoscenza C Non era utile per la diagnosi di malattie
della realtà (legge, problema risolto) di coagulazione del sangue
D al passaggio all’interno della conoscenza della D Raccomandava antibiotici con la loro dose
realtà (dal modello alla legge, dal problema adattata al peso corporeo del paziente
rappresentato al problema risolto)
14. Completa correttamente il seguente testo.
11. Un sistema esperto è: Nel sistema nervoso esistono miliardi di
A un computer che è in grado di risolvere problemi _________ ________________ formati da un corpo
complessi caratterizzato da una potenza di calcolo cellulare e da molti prolungamenti ramificati,
di efficienza pari a quella di uno specialista umano i ________________. I ________________
di quel settore hanno un prolungamento filamentoso chiamato
B un insieme di hardware e software caratterizzati ____________________, la cui lunghezza
da una sinergia e da una potenza di calcolo pari può variare da circa 1 cm a qualche metro.
a quella di uno specialista umano di quel settore (dendriti, neuroni, assone, neuroni)
C un programma che è in grado di risolvere problemi
complessi che rientrano in un particolare dominio, 15. Quali tra le seguenti affermazioni inerenti le reti
con una efficienza paragonabile a quella di uno neurali sono corrette?
specialista umano di quel settore A Una rete neurale è costituita da un insieme di nodi
D un software che si basa su algoritmi inferenziali collegati
e meta-algoritmi caratterizzato da efficienza B I collegamenti di input sono quelli a cui arrivano
dipendente dai sistemi hardware impiegati segnali
C I collegamenti di output sono quelli attraverso cui
la rete emette segnali
D I collegamenti tra i nodi di una rete neurale sono
di tipo eccitatorio e inibitorio

Intelligenza artificiale e reti neurali B5 239


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

CLIL ASCOLTA
LA PRONUNCIA
GLOSSARIO
CLIL

Artificial intelligence AUDIO

The ability to process symbols is the basis of intelligent All of these capabilities are derived from the presence in the
behavior. mind of a set of precise rules, which are similar to the rules of
The example of symbolic processing that characterizes a formal system.
human beings to the greatest extent is without doubt verbal For various reasons, in their theory of language, Chomsky
language. and his followers assigned a primary role to syntactic
The origin of language took place between 100 and competence. Thanks to this every speaker is able
200 thousand years ago, a time which experienced the to immediately perceive that:
evolutionary leap that has differentiated Homo sapiens, our a) “the cat eats the mouse” is a grammatically correct
species, from all other species of hominids. sentence, while
Language and intelligence are closely interconnected. b) “the cat mouse the eats” is not.
All the same, the Turing test assumes that any intelligent
computer must know how to communicate by means of This recognition is determined by the fact that in the
natural language, as we humans do. formation of a sentence (or in the symmetrical process of
Since the beginning one of the main goals of artificial understanding a sentence) formal rules are followed which,
intelligence has been the development of programs that together, make up the grammar of a language.
can produce and understand natural language speech. These rules, which are divided into different groups
Actually, the first steps in this direction were motivated (or components), are applied (not necessarily in a sequential
more by practical concerns than theoretical stimuli. In fact manner) to the construction of correct sentences, or to the
some of the earliest funding for research projects in the verification of sentences spoken by other speakers. The main
then nascent field of artificial intelligence were attracted by group of rules (or basic components) of the Chomsky
the prospect of developing systems of machine translation theory determines the general structure of a sentence and
between different languages, whose commercial application takes into account the fact that everyone is intuitively able
was (and is) obvious. Research on natural language to group words together in such a manner as to comprise
processing constitutes one of the leading sectors of artificial functional groups known as phrases.
intelligence and, in particular, computational linguistics.

LINGUISTIC COMPETENCE AND PHRASES


Linguistic competence, in turn, is divided into three
components:
• phonological competence: the ability of a speaker to
produce and understand the sounds of spoken language;
• syntactic competence: the ability to produce or
recognize grammatically correct sentences;
• semantic competence: the ability to assign or to extract
meaning from sentences.

Glossary
• Phonological competence
the ability to produce and understand the sounds
of spoken language.
• Syntactic competence
the ability to produce or recognize grammatically
correct sentences.
• Semantic competence
the ability to assign or to extract meaning from
sentences.
• Language
a collection of sentences of finite length all
constructed from a finite alphabet of symbols.

240 Sezione B Teoria della computazione


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sezione C
INFRASTRUTTURE
DI RETE E ASPETTI
DI SICUREZZA

C1 C2
Protocolli di rete La sicurezza delle reti e la crittografia dei dati
Una rete è strutturata a livelli che poggiano l'uno La sicurezza a livello telematico non esiste.
sull'altro, come a formare una pila. Ogni livello Partendo da questa affermazione si può intuire quanto
gestisce la comunicazione con gli altri attraverso il problema sia grave e di difficile soluzione; pertanto
i protocolli di rete. sono state messe in campo diverse strategie nel tentativo
ISO/OSI e TCP/IP rappresentano le più diffuse di tenerlo, il più possibile, sotto controllo.
infrastrutture di rete.

PREREQUISITI OBIETTIVI
Conoscenze Conoscenze
• Fondamenti di telematica • Il modello ISO/OSI
• Topologie di rete • La suite TCP/IP
• Differenza tra segnale analogico • I dispositivi di rete
e digitale • Indirizzamento e concetto di subnetting
• I mezzi trasmissivi • Il concetto di sicurezza
Abilità Abilità
• Saper individuare una topologia • Saper realizzare una semplice rete LAN
di rete • Saper predisporre il piano di indirizzamento anche con eventuali sottoreti
• Saper effettuare delle • Saper riconoscere un dispositivo di rete
operazioni nel sistema binario • Saper utilizzare dei sistemi per la difesa del computer
• Saper effettuare le conversioni Competenze
binario-decimale e viceversa
• Acquisire la padronanza di strumenti dell’informatica e utilizzare tali strumenti
per la soluzione di problemi significativi in generale

241
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

C1 Protocolli di rete

LABORATORIO CASE STUDY


Reti informatiche
Progettazione di una rete
informatica LAN

IMPARERAI…

Come vengono trasmessi Cos'è il modello A cosa servono Com’è strutturata


i dati all'interno di una rete ISO/OSI i protocolli di rete una rete di computer

1 Reti di computer
Prima di introdurre i concetti sui protocolli di rete e su come avviene lo scambio informativo
all’interno di una rete di computer, riteniamo opportuno riproporre alcuni concetti di base
sulle reti, argomenti che sono stati trattati nel primo biennio di questo corso.

Una rete di computer (computer network) è costituita da un insieme di computer o più in ge­
nerale da unità di elaborazione autonome, connesse mediante un sistema di comunicazione
in grado di scambiarsi messaggi o condividere risorse utilizzando regole di comunicazione
note come protocollo di comunicazione.

Parliamo più in generale di unità di elaborazione anziché di computer. Sono esempi: una
stampante di rete e le unità che controllano o gestiscono il traffico in rete, come modem e rou­
ter. Tali unità di elaborazione vengono chiamate nodi o host.
• I nodi sono collegati fisicamente tra loro attraverso un sistema di comunicazione che pre­
vede attrezzature passive (cavi elettrici, fibre ottiche, connettori e così via) e attrezzature
o dispositivi attivi (modem, router, schede di rete e così via).
• I nodi sono collegati logicamente tra loro attraverso programmi e software che, per dialo­
gare correttamente, utilizzano un insieme di regole detto protocollo informatico di co­
municazione.

Le apparecchiature
che iniziano con
H sono gli host,
mentre quelle
identificate dalla T
sono i terminali. Sistema di
comunicazione

242 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

2 I tipi di rete
Esistono vari tipi di rete, dalle più piccole, che possono essere composte anche solo da due
personal computer, a reti enormi, con migliaia di computer distribuiti su vaste aree geogra­
fiche.

Un possibile criterio di classificazione delle reti si basa sulla loro estensione geografica. I vari
tipi di rete sono:
• PAN
• LAN
• CAN
• MAN
• WAN
• GAN

■ PAN (Personal Area Network, rete personale): è una rete che si estende per pochi metri. In
tale ambito operano diversi dispositivi che gravitano attorno a un unico utente: telefono
cellulare, tablet, notebook. Tali dispositivi possono scambiarsi informazioni o collegarsi a
reti di livello superiore come, per esempio, Internet. Una rete PAN può utilizzare sia colle­
gamenti via cavo (wired) che connessioni wireless.
■ LAN (Local Area Network): sono reti che si estendono fino a qualche centinaio di metri (ma
esiste anche una definizione di LAN estesa, la cui ampiezza copre qualche chilometro), mai
però di suolo pubblico; di solito, si sviluppano all’interno di un edificio. Il termine locale si
usa per indicare “vicinanza” e si contrappone a remoto, che indica “lontananza”. Sono reti
affidabili, non molto costose e di facile manutenzione. La tecnologia più diffusa per la rea­
lizzazione di una LAN è Ethernet.
■ CAN (Campus Area Network o Controller Area Network o Cluster Area Network): si usa in un
ambito ristretto come quello di un campus universitario o di una fiera espositiva.
■ MAN (Metropolitan Area Network): può coprire un’area di alcune decine di chilometri qua­
drati, corrispondente appunto a una città; tuttavia, a essa si preferisce ormai la WAN. Sto­
ricamente le MAN sono nate per fornire servizi di TV via cavo nelle città in cui la ricezione
terrestre non era buona. In pratica, un’antenna posta in una posizione favorevole distribu­
iva il segnale alle case mediante cavo. Dopo una prima fase avvenuta a livello locale, sono
subentrate le grosse aziende che hanno richiesto di cablare intere città, soprattutto negli
Stati Uniti. Quando il fenomeno Internet è esploso, queste società hanno diffuso la comuni­
cazione Internet anche attraverso il cavo TV utilizzando la struttura preesistente. Questa
struttura, attualmente, utilizza la fibra ottica come mezzo di collegamento.
■ WAN (Wide Area Network): sono reti che connettono computer posti a distanze enormi.
Sono anche dette reti geografiche poiché si possono sviluppare in ambito nazionale, inter­
nazionale e intercontinentale. Naturalmente, i tempi di risposta sono maggiori rispetto a
quelli di una LAN; sono quindi reti un po’ più lente. Queste reti sono, per la loro stessa natu­
ra, molto più “aperte” delle reti locali, ovvero hanno tutta una serie di procedure già predi­
sposte per accogliere nuovi elaboratori remoti: da quelli di un’eventuale nuova sede fino al
computer portatile di un dipendente munito di modem e (ovviamente) di linea telefonica.
■ GAN (Global Area Network): sono reti che collegano computer collocati in vari continenti
attraverso l’uso di diverse tecnologie: dai semplici cavi ai satelliti.

Protocolli di rete C1 243


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Internet, o più semplicemente “the Net”, “la Rete”, è il classico esempio di GAN. Non ha impor­
tanza quale sia la tecnologia che unisce le reti: cavi, fibre ottiche, ponti radio, satelliti o altro.
Non è neppure rilevante di che tipo siano i computer connessi: dal piccolo personal computer
al grosso elaboratore. Punto di forza di Internet, e motivo del suo velocissimo espandersi, è
la capacità di “parlare” un linguaggio universale, adatto alla quasi totalità degli elaboratori
esistenti.

3 Le topologie di rete
La topologia di una rete definisce il modo in cui sono collegati i nodi della sottorete di co­
municazione. Ogni topologia possiede caratteristiche che influenzano il costo e il through­
put, cioè la quantità di informazioni scambiate nell’unità di tempo.

La topologia è fisica quando definisce il modo in cui i componenti hardware sono collega­
ti fisicamente. È logica quando definisce il percorso dei messaggi attraverso i componenti
hardware. La topologia fisica può essere diversa dalla topologia logica. Con i tipi di collega­
mento che abbiamo visto in precedenza si realizzano, per esempio, le seguenti topologie di rete.
• Topologia a bus
• Topologia a stella
• Topologia ad anello
• Topologia a maglia completa
■ Topologia a bus: tutti i nodi sono connessi a un unico mezzo fisico co­
mune (il bus) che viene condiviso (collegamento di tipo multipunto). Le
estremità del mezzo fisico non sono tra di loro collegate e devono avere
dei terminatori che impediscano al segnale di generare echi non desi­
derati. La trasmissione è di tipo broadcast: i messaggi vengono inviati a
tutti i nodi ma solo quello che riconosce di essere il destinatario lo me­
morizza sul proprio hard disk; solo un nodo alla volta può trasmettere sul canale. Per evita­
re collisioni, ovvero sovrapposizioni di segnali da parte di più nodi che vogliono trasmette­
re contemporaneamente, si adottano tecniche dette di accesso al canale. Una delle tecniche
più diffuse è nota come tecnica a contesa di tipo CSMA (di cui parleremo nel Paragrafo 8).
■ Topologia a stella: tutti i nodi hanno un collegamento di tipo punto a
punto con un nodo centrale detto centro stella che può essere un ripeti­
tore di segnale (hub) o un dispositivo intelligente (switch o router). Tra i
nodi periferici vi è, quindi, un collegamento di tipo logico. Un messaggio
inviato dal mittente è ricevuto da tutti i nodi, ma solo il destinatario lo
memorizzerà sul suo hard disk. Il tipo di trasmissione è di tipo broad­
cast, quindi la topologia logica è di tipo a bus, mentre quella fisica è di
tipo a stella. Se uno o più collegamenti fisici vengono interrotti, il resto della rete continua a
funzionare. Se si guasta il nodo centrale tutta la rete rimane bloccata. Si possono facilmen­
te aggiungere nuovi nodi fino al numero massimo previsto dal nodo centrale (per esempio,
il massimo numero di connessioni previste dallo switch centrale). È la topologia più utiliz­
zata per piccole LAN.
■ Topologia ad anello: ogni nodo è connesso al successivo con un colle­
gamento di tipo punto a punto. L’ultimo nodo è connesso al primo, in
modo da formare un anello unidirezionale. Ogni messaggio da trasferire

244 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

deve percorrere l’anello fino al destinatario: se consideriamo il messaggio di risposta per la


conferma, ogni scambio di informazioni coinvolge tutti i nodi della rete che devono coope­
rare anche se non direttamente interessati al messaggio.
■ Topologia a maglia completa: ogni nodo è collegato a ognuno degli
altri nodi. L’invio di un messaggio, così, avviene in modo diretto, senza
pericoli di collisioni o interferenze e senza tempi di attesa. Gli svantag­
gi sono da ricercare nella complessità della manutenzione e nei costi di
installazione e di manutenzione.

4 Tecniche di commutazione e protocolli


La componente hardware della trasmissione:
le tecniche di commutazione
Come sai, in una rete non sempre la stazione che trasmette e quella destinataria sono fisi­
camente collegate. Sai anche che disporre di un collegamento dedicato per ogni coppia di
stazioni presenta indiscussi vantaggi (la linea è sempre disponibile, non esistono problemi di
congestione del traffico e di snervanti attese, non è necessario specificare mittente e destina­
tario ecc.), ma anche alcuni svantaggi (basti pensare al problema costi di implementazione).

La commutazione è un particolare sistema che consente di realizzare un circuito virtuale


tra due stazioni nel caso in cui siano compresenti la richiesta di trasmissione e la disponi­
bilità della linea.

I collegamenti commutati non sono fissi, ma si stabiliscono al momento della trasmissione e


permangono per il solo tempo necessario al suo completamento. Il concetto di commutazione
si basa, così, su quello di condivisione del canale trasmissivo.
Fondamentalmente, sono tre le tecniche di commutazione:
• commutazione di circuito
• commutazione di messaggio
• commutazione di pacchetto
dove la prima deriva dal sistema telefonico, mentre le altre due sono di derivazione tipicamente
informatica.

■ La commutazione di circuito è quella utilizzata nelle conversazioni telefoniche, nelle


quali si riesce a costruire un canale fisico tra i due interlocutori. Quando viene effettuata
una chiamata, si avvia la ricerca di un percorso lungo la rete che, attraversando una serie di
centraline di commutazione, congiunge il mittente al destinatario della chiamata.
drin...
tu... drin...
tu... Centralina
di commutazione
(palazzo)

Linea Linea
diretta diretta
Centralina di
commutazione (zona)

Protocolli di rete C1 245


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il percorso identificato viene impegnato fisicamente e in modo


esclusivo (cioè per tutto il tempo della trasmissione). La ricerca e la I servizi orientati
alla connessione
definizione del percorso, che dovrà essere seguito dai dati, avvengo­ hanno un utilizzo
no prima che inizi la trasmissione dei dati. Di regola, questo accade inefficiente delle risorse
negli istanti di tempo che passano da quando si termina la compo­ trasmissive, poiché
sizione del numero del destinatario al momento in cui viene emesso se i due interlocutori
non trasmettono alcun
il segnale acustico (linea libera od occupata). Dedicare un segmen­ segnale (per esempio
to di linea a una particolare operazione causa delle attese a quegli sono in silenzio) le risorse
utenti che richiedono delle connessioni in transito dalla centralina non vengono sfruttate.
coinvolta.
■ La commutazione di messaggio rappresenta un’alternativa alla commutazione di circui­
to poiché non prevede l’impiego fisico di un percorso che porti dal mittente al destinatario,
ma semplicemente la definizione di un percorso logico obbligatorio. In altri termini, il per­
corso del messaggio è prefissato, ma vengono impegnate solo le linee del cammino interes­
sate in quel momento al transito del messaggio: l’intero percorso da compiere, quindi, non
rimane occupato per tutto il tempo, lasciando disponibili i tratti rimanenti del percorso
per gli altri utenti della rete. La spedizione avviene per “passi”: quando un blocco di dati è
pronto, esso viene spedito alla prima centralina di commutazione in direzione del desti­
natario; il secondo passo di avvicinamento alla meta avverrà non ap­
pena la seconda centralina del percorso risulterà disponibile, e così via.
■ Con la tecnica della commutazione di pacchetto, il messaggio vie­
A differenza della
ne suddiviso in parti (chiamate pacchetti) di piccole dimensioni: ogni commutazione
pacchetto che compone il messaggio può essere spedito senza aspetta­ di circuito, la
re che tutti i precedenti siano arrivati a destinazione e, cosa più impor­ commutazione di
tante, seguendo anche un percorso diverso. pacchetto non è in
grado di garantire
il tempo minimo di
percorrenza delle
P4 informazioni, né tanto
meno un ordine esatto
P2 di arrivo dei pacchetti:
la rete cercherà di
“fare del suo meglio”
(best effort).
P3
P1
P2 P3 P4 P1
P1 P2 P3 P4
Messaggio

P1 P2 P3 P4

Si utilizza il termine “pacchetto” per indicare che la lunghezza massima dei messaggi è
prefissata. Il vantaggio di far viaggiare più pacchetti destinati a uno stesso dispositivo
lungo strade differenti è quello di ridurre il rischio di sovraffollamento di alcune linee e
di sottoutilizzo di altre: un rialzo improvviso delle richieste di transito lungo una linea si
risolve dirottando alcuni pacchetti lungo percorsi alternativi. Poiché i pacchetti possono
arrivare in un ordine diverso rispetto a quello di partenza, i dispositivi di ricezione dei dati
devono provvedere alla ricostruzione dell’esatta sequenza dei pacchetti che compongono
il messaggio, prima della consegna al destinatario. In caso di ricezione errata, vengono
ritrasmessi solo i singoli pacchetti non ricevuti. Per questi motivi, la commutazione di pac­
chetto è la tecnica maggiormente utilizzata dalle reti attuali.

246 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La componente software della trasmissione: i protocolli


Finora ci siamo occupati delle sole componenti hardware, ma una rete è dotata anche di im­
portantissime componenti software, senza le quali i dispositivi hardware non potrebbero as­
solvere al loro compito.

Le componenti software di una rete telematica sono rappresentate dai programmi di ge­
stione del collegamento e del traffico dei dati.

Nel processo di comunicazione umana, il problema fondamentale è rappresentato dalla de­


finizione di un linguaggio comune ai diversi interlocutori. Nel caso della comunicazione tra
computer, il problema non cambia.
Pur utilizzando tutti lo stesso alfabeto (il codice binario), i computer “parlano” frequentemen­
te linguaggi diversi e incompatibili. Affinché la comunicazione possa avvenire con successo,
i computer devono “parlare la stessa lingua”, ossia, ciò che si comunica, con i relativi tempi e
modalità, dev’essere conforme a particolari convenzioni mutuamente accettabili dalle entità
interessate: tali convenzioni prendono il nome di protocolli di comunicazione.
In generale, quindi:

Un protocollo è un insieme di regole che standardizzano e governano le operazioni delle


unità funzionali che sovrintendono la comunicazione.

Un protocollo definisce come avviene lo scambio di dati e cosa ci si sta scambiando. In termi­
ni più formali diremo che il “come” riguarda le modalità, ovvero le procedure da seguire per
scambiarsi i dati, e il “cosa” riguarda il significato, ovvero il formato dei dati scambiati (cioè, il
formato dei messaggi).

In particolare, i protocolli consentono di:


• usare efficacemente la rete;
• coordinare l’instradamento (routing), ossia l’invio dei dati da un computer all’altro;
• assicurare che la comunicazione vada a buon fine;
• compiere un controllo e risolvere eventuali errori (arbitraggio);
• consentire il funzionamento di particolari servizi di rete, quali lo scambio di file e la posta
elettronica.

5 Il modello architetturale ISO/OSI


Nella realtà esistono sistemi di elaborazione che utilizzano sistemi operativi tra loro incom­
patibili: la loro comunicazione e collaborazione rappresenta una delle primarie esigenze del
mercato attuale.

Con l’espressione sistema di elaborazione intendiamo l’insieme di uno o più computer,


compresi i loro sistemi operativi, i programmi applicativi, gli operatori e altro; in pratica, tutto
ciò che, considerato come un’unica entità, può elaborare informazioni.

Si definiscono sistemi aperti quei sistemi che, pur basandosi su sistemi operativi incompatibi­
li, sono capaci di interagire tra loro in accordo con degli standard predefiniti.

Protocolli di rete C1 247


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il modello di standard di riferimento è l’OSI (Open Systems Interconnection), definito da una


speciale commissione dell’ISO (International Organization for Standardization), ossia l’agenzia
dell’ONU responsabile degli standard internazionali, inclusi quelli delle comunicazioni.
Il comitato ISO ha stabilito un modello di riferimento secondo il quale

un sistema aperto è costituito da sette strati funzionali detti layer (livelli) o sottosistemi,
numerati da uno a sette, ciascuno dei quali comunica con quelli adiacenti attraverso speci­
fici protocolli.

Un modello di riferimento, quindi, definisce il numero e le caratteristiche funzionali dei li­


velli, mentre

l’architettura di rete definisce, livello per livello, i protocolli effettivi e le interfacce, ovvero
le relazioni che intercorrono tra gli strati appartenenti agli stessi layer nelle stazioni trasmit­
tenti e riceventi.

Host A Host B

7 Applicazione Applicazione 7
Protocolli di elaborazione
di alto livello
6 Presentazione Presentazione 6 (gestione dei dati)

5 Sessione Sessione 5

4 Trasporto Trasporto 4

3 Rete Rete 3 Protocolli di elaborazione


di basso livello
Sottorete
(trasporto dei dati)
2 Linea Linea 2
di

comunicazione
1 Fisico Fisico 1

Mezzo fisico Mezzo fisico

I sette layer garantiscono tutte le funzioni necessarie alla rete per la comunicazione tra sistemi
e, inoltre, una molteplicità di funzioni opzionali (compressione, cifratura dei dati ecc.): in tal
modo, si suddivide un compito complesso in un insieme di compiti più elementari.

248 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il modello si basa su tre punti cardine:


• simmetria
• struttura gerarchica
• modularità.

■ Simmetria: consente di bilanciare i carichi elaborativi sui vari sistemi. Assicura, inoltre,
che le varie richieste provenienti da un sistema siano interpretate correttamente dalla con­
troparte. Ciò rappresenta la base per i processi elaborativi di tipo cooperativo e di tipo
client­server.
■ Struttura gerarchica: i vari sottosistemi (layer) sono organizzati in una rigorosa gerarchia
operativa: ogni livello riceve i comandi e i dati dal livello superiore, esegue per esso alcune
sue particolari funzioni e chiede servizi al livello inferiore. Lo scopo di un layer è appunto
quello di offrire determinati servizi ai livelli più alti, nascondendo i dettagli su come tali
servizi vengano implementati.
■ Modularità: garantisce che ogni livello abbia ben definite funzioni interne e interfacce
con cui riceve, o trasmette, comandi e dati verso i propri livelli adiacenti. La definizione di
queste relazioni assicura che ogni livello abbia specifiche caratteristiche che lo contrad­
distinguono dagli altri. Ciò è particolarmente importante poiché garantisce possibilità di
sviluppo: nel caso in cui nuove tecnologie necessitino di aumentare e/o variare le prestazio­
ni di un layer, non sarà necessario modificare anche gli altri.

Soffermiamoci particolarmente sulla struttura gerarchica e analizziamo la seguente figura:


cercheremo di comprendere come avviene la comunicazione tra due host.

Host A Host B
Protocollo di livello
7
Livello 7 Livello 7
Interfaccia livello Interfaccia livello
6/7 Protocollo di livello 6/7
6
Livello 6 Livello 6
Interfaccia livello Interfaccia livello
5/6 Protocollo di livello 5/6
5
Livello 5 Livello 5
Interfaccia livello Interfaccia livello
4/5 Protocollo di livello 4/5
4
Livello 4 Livello 4
Interfaccia livello Interfaccia livello
3/4 Protocollo di livello 3/4
3
Livello 3 Livello 3
Interfaccia livello Interfaccia livello
2/3 Protocollo di livello 2/3
2
Livello 2 Livello 2
Interfaccia livello Interfaccia livello
1/2 Protocollo di livello 1/2
1
Livello 1 Livello 1

Mezzo fisico

Protocolli di rete C1 249


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

6 ISO/OSI: la comunicazione tra host


Emerge facilmente che il Livello N dell’host A “conversa” con il Livello N dell’host B grazie alle
regole e alle convenzioni indicate dal protocollo di livello N. I processi (entità) che effettuano
tale conversazione vengono detti peer entity (entità di pari livello).
Concretamente, il dialogo fra due peer entity di livello N viene realizzato attraverso i servizi
offerti dal livello sottostante, ossia dal livello N−1. È opportuno precisare immediatamente che:

Non esiste un trasferimento diretto dal Livello N dell’host A al Livello N dell’host B.

Ogni livello di host A deve passare i dati, assieme a delle specifiche informazioni di controllo, al
livello sottostante, e ciò fino al livello più basso, sotto cui c’è la presenza del mezzo fisico, grazie
al quale i dati vengono effettivamente trasferiti dall’host A all’host B. Una volta giunti all’host
B, i dati vengono passati al Livello 1 e, da qui, a quello superiore, fino a raggiungere il Livello N.

Fra ogni coppia di livelli adiacenti è definita un’interfaccia che qualifica le operazioni primi­
tive, le quali possono essere richieste al livello sottostante, nonché i servizi che possono essere
offerti dal livello sottostante.
Per meglio comprendere questi primari meccanismi su cui si basa il funzionamento del softwa­
re di rete, possiamo analizzare la figura seguente, che schematizza una situazione reale in cui
due professionisti geograficamente distanti, uno giapponese e l’altro italiano, desiderino co­
municare:

Professionista Dialogo Professionista


sull’argomento
giapponese italiano

Uso della lingua


giapponese
Interprete Interprete

Uso del fax


Assistente Assistente

Mezzo fisico

Vediamo, ora, come avviene la trasmissione di un messaggio tra due host. Supponiamo che
un’entità di Livello 7 in esecuzione sull’host A debba inviare un messaggio M alla sua peer
entity dell’host B. La generazione del messaggio avviene al livello più alto del modello, cioè al
settimo. Analizziamo la figura seguente:
• il Livello 7 consegna il messaggio M al Livello 6;
• il Livello 6 aggiunge un suo header H6 in testa al messaggio. L’header racchiude informa­
zioni di controllo, per esempio il numero di sequenza del messaggio, la dimensione del mes­
saggio, l’indirizzo del mittente, quello del destinatario ecc. Un livello può anche aggiungere
un suo trailer in coda al messaggio in cui si trova un campo CRC per verificare che il mes­
saggio ricevuto sia conforme a quello trasmesso;
• il Livello 6 consegna questo prodotto al Livello 5;

250 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

• il Livello 5 aggiunge un suo header H5 in testa al messaggio e consegna questo prodotto al


Livello 4;
• il Livello 4 aggiunge un suo header H4 in testa al messaggio e consegna questo prodotto al
Livello 3;
• il Livello 3 aggiunge un suo header H3 in testa al messaggio e consegna questo prodotto al
Livello 2;
• il Livello 2 aggiunge un suo header H2 in testa al messaggio e un trailer T2 in coda e lo spe­
disce sul mezzo trasmissivo.

Host A Host B

M Protocollo M
di Livello 7
Livello 7 Livello 7

H6 M Protocollo M H6
di Livello 6
Livello 6 Livello 6

H5 H6 M Protocollo M H6 H5
di Livello 5
Livello 5 Livello 5

H4 H5 H6 M Protocollo M H6 H5 H4
di Livello 4
Livello 4 Livello 4

H3 H4 H5 H6 M Protocollo M H6 H5 H4 H3
di Livello 3
Livello 3 Livello 3

H2 H3 H4 H5 H6 M T2 T2 M H6 H5 H4 H3 H2
Protocollo
di Livello 2
Livello 2 Livello 2

Protocollo
di Livello 1
Livello 1 Livello 1

Mezzo fisico

Una volta giunto all’host, il messaggio risale i sette layer


Questo modello è solo teorico, non esiste
seguendo la procedura inversa a quella con cui è stato ge­ un’implementazione reale.
nerato. In questa seconda fase, ogni layer esamina e usa le In pratica quello che si usa è
informazioni aggiuntive di propria competenza, dopodi­ un’architettura chiamata Suite TCP/IP,
ché le elimina e passa il messaggio al livello superiore. Se che semplifica il protocollo ISO/OSI,
raggruppando alcuni livelli. È inoltre
tutto procede senza intoppi, il messaggio viene spacchetta­ doveroso ricordare che il messaggio
to, cioè viene a poco a poco ripulito da questi dati addizio­ non è necessariamente generato a
nali, finché non si sarà ripristinato il messaggio originale Livello 7, ma qualsiasi entità di un livello
da visualizzare sul programma destinatario. può generare un messaggio da inviare
alla sua peer entity di un altro host.
Questa tecnica è chiamata imbustamento multiplo
(il nome si spiega bene da solo).

Protocolli di rete C1 251


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

7 I compiti dei sette strati funzionali


Occupiamoci, ora, dell’analisi dei sette livelli, partendo dal primo.
■ Il livello fisico (physical) è il più basso dell’architettura e, come tale, il più vicino al canale
fisico di trasmissione dei dati. Il livello fisico si occupa della trasmissione dei bit (che rap­
presentano l’unità di trasmissione) lungo il canale di trasmissione: la sua funzione princi­
pale è, pertanto, quella di garantire che i bit spediti vengano ricevuti correttamente dal de­
stinatario. Affinché la trasmissione possa essere garantita, questo livello deve verificare la
compatibilità del destinatario a colloquiare, la sua disponibilità a ricevere i dati e control­
lare che lungo il canale non siano eseguite più operazioni contemporaneamente. A questo
stadio, non è richiesta la codifica e l’interpretazione della semantica del messaggio: sarà
compito dei livelli superiori attribuire un significato a questa sequenza di bit.
Il livello fisico è molto legato alle caratteristiche fisiche delle interfacce e delle linee di co­
municazione: pertanto, si interesserà anche delle modalità di attivazione e disattivazione
del collegamento.
■ Il livello di linea (chiamato anche collegamento dati o data link) riguarda le reti locali e si
occupa di organizzare i dati in strutture di bit (possibilmente esenti da errori) chiamate
frame (o pacchetti), che dovranno essere passate al livello successivo (quello di rete) attra­
verso il quale saranno preparate per affrontare il loro viaggio lungo i “labirinti” della rete.
Per identificare, controllare, impacchettare i dati, il livello di linea provvederà a inserire
delle sequenze predefinite di bit di controllo: il ricevitore dovrà essere a conoscenza del
significato di queste sequenze di bit in modo che, quando riceverà il messaggio, potrà ri­
conoscerle e ricostruire il messaggio iniziale. Un altro compito di questo livello è quello di
concretizzare un meccanismo di riconoscimento, correzione e potenziale prevenzione del­
le irregolarità in fase di trasmissione. Anche questo livello non si occupa del significato del
messaggio: ciononostante, cerca di garantire una trasmissione formalmente e fisicamente
corretta.
■ Il livello di rete (network) è quello che conclude il controllo sul funzionamento della sotto­
rete di comunicazione. La funzione fondamentale è quella di stabilire e mantenere la con­
nessione attraverso la rete nonché determinare il modo in cui i frame vengono instradati
dalla sorgente verso il destinatario. Le strategie in base alle quali viene fissato il percorso
dipendono da numerosi fattori, anche architetturali.
Abbiamo già introdotto il concetto di topologia di rete: un’architettura a stella o completa­
mente connessa, per esempio, non avrà problemi di instradamento, mentre per un’architet­
tura parzialmente connessa il problema dovrà essere affrontato.
Nel caso in cui un messaggio viaggi da un tipo di rete a un altro, possono sorgere alcuni
problemi di interpretazione del messaggio: è compito di questo livello risolvere i problemi
di interconnessione tra ambienti distinti. Ciò avviene grazie alla presenza di alcuni nodi
intermedi denominati router. Un router è un computer o un apposito dispositivo sul quale
viene eseguito un particolare programma, il cui compito è quello di esaminare le intesta­
zioni (header) dei pacchetti di dati in arrivo, per poi inviare questi pacchetti alla corretta
rete collegata. I router, basandosi su una mappa di rete denominata tabella di routing, pos­
sono far in modo che i pacchetti raggiungano le loro destinazioni attraverso percorsi più
efficaci. Se cade la connessione tra due router, per non bloccare il traffico, il router sorgente
può definire un percorso alternativo.
■ Il livello di trasporto (transport) consente il trasferimento dei messaggi lungo la rete sta­
bilendo le connessioni che definiscono il percorso nella rete che va dal mittente al destina­
tario.

252 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Nel caso in cui il traffico risulti troppo intenso, il livello di trasporto può suddividere i fra­
me che compongono il messaggio e spedirli utilizzando percorsi di rete diversi: sarà com­
pito del destinatario ricostruire il messaggio completo nell’eventualità che i diversi frame
(che seguono strade distinte) non giungano nell’ordine corretto.
■ Il livello di sessione (session) consente a sistemi diversi di stabilire tra loro una sessione
completa di dialogo, ossia un canale logico di comunicazione, attraverso l’organizzazione
e la sincronizzazione dei messaggi e del tipo di percorso (monodirezionale, bidirezionale
ecc.); sarà, poi, compito dei livelli inferiori scegliere il percorso ottimale da far seguire al
messaggio.
■ Il livello di presentazione (presentation) considera la sintassi e la semantica delle infor­
mazioni trasmesse, ossia viene analizzato il significato del messaggio. Ciò implica il rico­
noscimento e l’interpretazione non solo dei dati componenti il messaggio stesso, ma anche
dei caratteri di controllo, dei metodi di conversione dei dati dal formato originale in quello
standard recepito dalla rete, dei dati eventualmente crittografati o compressi ecc. Attual­
mente, queste operazioni richiedono una soluzione generale all’interno di un livello speci­
fico, utilizzando un metodo interpretativo standard.
■ Il livello di applicazione (application) si occupa di fornire i suoi servizi direttamente agli
utenti. Fanno parte di questo livello tutte le applicazioni funzionanti in rete. Il suo compito
è quello di garantire la corrispondenza tra i dispositivi presenti, così che il messaggio venga
proposto al destinatario nel modo previsto dai dispositivi in suo possesso: se, per esempio,
è in arrivo un messaggio da visualizzare su un terminale, questo livello dovrà riorganizzare
i dati in base alle sue caratteristiche.

8 Il livello fisico: il protocollo CSMA/CD


Ethernet, il tipo più diffuso di rete locale, si basa sul protocollo a contesa CSMA/CD (Carrier
Sense Multiple Access with Collision Detection, accesso multiplo con rilevazione di portante a
rilevanza di collisione).
Tutte le stazioni rilevano continuamente se sulla rete stanno viaggiando dei segnali (rilevazio­
ne della portante): si dice che le stazioni “ascoltano” la rete. Quando la rete è libera, la stazione
che deve trasmettere invia i dati a quella cui sono destinati. Tutte le stazioni ricevono questi
dati e li analizzano. Soltanto quella cui sono stati effettivamente indirizzati, però, li accetta.

CS = Carrier Sense (Rilevazione della portante)


Ascolta Ascolta
e aspetta e aspetta
che la rete che la rete L’Ethernet non rappresenta
sia libera sia libera un protocollo, ma una
famiglia di tecnologie
necessarie alla realizzazione
e al funzionamento di reti
locali (LAN nello specifico)
Trasmette le cui specifiche tecniche
sono state stabilite con lo
standard IEEE 802.3.
Prima di trasmettere, ciascun nodo della rete “ascolta” se c’è già qualcuno che sta
trasmettendo. In caso affermativo ci sarà un segnale elettrico in transito (la “portante”)
perciò la stazione resta in attesa fino a quando quella che sta trasmettendo ha finito.

Protocolli di rete C1 253


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’accesso alla rete è multiplo, perciò tutte le stazioni hanno la stessa facoltà di parlare, a con­
dizione di accertarsi prima che la linea sia libera, operazione che possono eseguire tutte in
contemporanea.

MA = Multiple Access (Accesso multiplo)

Tutti
ascoltano
per vedere
se è libero

Tutti i nodi possono accedere alla rete non appena questa si libera
(accesso multiplo) e chiunque può iniziare a trasmettere per primo.

Può accadere che due o più stazioni tentino di trasmettere all’incirca nello stesso momento
poiché hanno trovato la linea libera. La trasmissione parte nello stesso momento e quella del­
la prima, inevitabilmente, “collide” con quella della seconda: i segnali elettrici che trasmetto­
no i dati che hanno generato la collisione si sovrappongono, generando messaggi non com­
prensibili dalle stazioni destinatarie. Se non esistesse nessun sistema per segnalare l’avvenuta
collisione, le due stazioni continuerebbero a trasmettere i rispettivi messaggi per intero, nella
convinzione che questi saranno recapitati ed elaborati. Il sistema di controllo delle collisioni si
serve di un apposito circuito presente nella scheda d’interfaccia, che rimane sempre in ascolto
anche quando la scheda medesima sta trasmettendo, per verificare che non siano avvenute
collisioni. Fondamentalmente, il circuito non è complesso: tutto ciò che deve verificare è l’esi­
stenza di valori di tensione superiori alla norma. In caso di collisione, infatti, i segnali elettrici
delle due stazioni si mescolano e finiscono anche per sommarsi, perciò la tensione risultante
che circola in rete è maggiore.

CD = Collision Detection (Segnalazione di collisione)


Trasmette Trasmette
e ascolta e ascolta
Collisione

Due stazioni possono iniziare a trasmettere contemporaneamente


senza sapere una dell’altra. In tal caso, si verifica una collisione
tra i due segnali. Anche durante la trasmissione, perciò,
le schede d’interfaccia devono restare costantemente in ascolto
per accorgersi se si è verificata una collisione.

Nel caso in cui si verifichi una collisione, le stazioni trasmittenti sospendono la trasmissione e
attivano un timer di durata casuale prima di ritentare la trasmissione. Il fatto che il timer sia
casuale impedisce che entrambe ritentino la trasmissione nello stesso istante (è per questo mo­
tivo che si dice che “Ethernet usa un sistema di accesso di tipo probabilistico”). Se, nonostante
l’uso dei timer, la collisione si verificasse nuovamente, il timer verrebbe allungato progressiva­
mente fino a un punto in cui il continuare delle collisioni indicherebbe un guasto fisico sulla rete.

254 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Risoluzione della collisione

Trasmette
Ascolta e ascolta

Ascolta

Dopo che si è verificata la collisione, le macchine interessate dalla collisione


attivano un timer di durata casuale e lasciano decorrere il tempo del timer
prima di ricominciare a trasmettere.
Ricomincia quella il cui timer si esaurisce prima.

Spesso si sente parlare di qualsiasi collegamento che utilizza il


Una broadcast storm (tempesta
protocollo a contesa CSMA/CD come di Ethernet, ma ciò non è
di trasmissioni) nelle reti di
tecnicamente corretto: il vero Ethernet è solo quello che rispec­ computer è una situazione che
chia la versione originale a 10  Mbps, ossia quello che corrispon­ si verifica quando vengono
de allo standard IEEE 802.3 (l’acronimo IEEE sta per Institute of trasmessi in rete dei messaggi
broadcast o multicast, ognuno
Electrical and Electronics Engineers, ente statunitense con sede a dei quali richiede al nodo che
New York che riunisce scienziati, ingegneri e studenti, concentran­ lo riceve di rispondere inoltrando
do la propria attività nella definizione di standard per il mondo il suo messaggio. La conseguenza
dell’elettronica e dei sistemi di calcolo). Qualunque altro schema è un notevolissimo aumento del
traffico di rete, che comporta
diverso che utilizza CSMA/CD viene definito come uno schema una saturazione completa delle
di rete che utilizza il protocollo Ethernet; si riferisce, cioè, a una risorse di rete disponibili o,
delle sue numerose varianti (per esempio, una versione chiamata conseguentemente, un radicale
Fast Ethernet trasferisce i dati a 100 Mbps, mentre le versioni a calo delle prestazioni.
Quando ci si riferisce al
l000 Mbps vengono chiamate Gigabit Ethernet). broadcast storm ci si può riferire
Ethernet presenta un increscioso difetto: in caso di iperconge­ al femminile (tempesta di
stionamento, può non riuscire a convogliare alcuni dei messaggi trasmissioni; letteralmente storm
in tempo, non riuscendo così a soddisfare i requisiti di tempistica significa tempesta) o al maschile
(nel senso, più generico, di fiume
del software coinvolto. Il risultato di tutto questo sono sempre più di informazioni).
tentativi di invio dei dati e una conseguente broadcast storm.

9 Il livello data link


I dati che devono essere trasmessi vengono raggruppati all’interno di uno specifico pacchetto
e la trasmissione dev’essere sempre controllata per evitare che si verifichino errori.
Il compito del Livello 2 dello standard ISO/OSI è proprio quello di garantire ai livelli superiori
un supporto di trasmissione veloce e privo di errori.
Il formato del pacchetto dipende dal tipo di rete locale. Al fine di uniformare la gestione dei di­
versi tipi di LAN e MAN fin dal terzo livello OSI, si è suddiviso il livello data link in due sottolivelli:
■ LLC (Logical Link Control), comune a tutti i tipi di LAN, fornisce l’interfaccia tra la LAN e
gli strati dell’utente. Può essere configurato in modo tale da fornire un servizio connesso o
non connesso (vedremo la differenza tra poco);
■ MAC (Media Access Control), specifico di ogni modello di LAN, è responsabile della ge­
stione del traffico sulla LAN, determina quando il supporto fisico della LAN è libero di
trasmettere i dati, individua le collisioni dei dati nelle reti a collisione, determina quando
deve avvenire la ritrasmissione dei dati.

Protocolli di rete C1 255


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il formato MAC del frame di una rete Ethernet è mostrato nella seguente figura:

Preambolo Indirizzo Indirizzo Tipo Dati FCS


destinatario mittente
64 bit 48 bit 48 bit 16 bit variabile 32 bit
8 byte 6 byte 6 byte 2 byte da 46 a 1500 byte 4 byte

vendor code

Il primo campo, il preambolo, viene trasmesso per primo, per garantire la stabilità e la sin­
cronizzazione dei supporti fisici. I due campi successivi indicano gli indirizzi MAC del desti­
natario e del mittente. Tali campi sono composti da 6 byte e servono per specificare in modo
univoco l’indirizzo della scheda di rete del computer destinatario e del computer mitten­
te. I primi tre byte indicano il vendor code, cioè un numero unico al mondo e identificativo
del costruttore di quella scheda di rete; i secondi tre byte sono utilizzati dal costruttore come
identificativo univoco di quella scheda. I successivi 16 bit del formato MAC indicano il tipo di
protocollo eseguito nella rete. Lo stesso campo nello standard 802.3, viene utilizzato per indi­
care la dimensione del campo dati che, nel formato Ethernet, ha una lunghezza variabile, per
esempio 1024 bit. L’ultimo campo FCS (Frame Check Sequence) è destinato a contenere alcuni
bit per il controllo degli errori sui bit trasmessi.

Servizi connessi e non connessi


I livelli superiori devono essere distinti in:
• servizi connessi o connection oriented
• servizi non connessi o connectionless.

Una connessione è un’associazione che si stabilisce tra due livelli paritari allo scopo di
scambiare informazioni tra due o più entità di livello superiore dei rispettivi sistemi.

Un collegamento viene detto “connesso” quando la comunicazione tra due entità avviene nelle
seguenti tre fasi distinte:
• creazione della connessione
• trasferimento dati
• chiusura della connessione.
Nella prima fase il mittente effettua una esplicita richiesta di connessione al destinatario
(che ancora non sa di essere tale), ovviamente, in modalità non connessa. In questa fase, mit­
tente e destinatario faranno riferimento ai loro indirizzi.
Nelle fasi successive, i due interlocutori non faranno più riferimento ai loro indirizzi ma al nu­
mero identificativo che contraddistingue la connessione tra di essi creata.

La principale differenza tra servizi connessi e servizi non connessi consiste nella sequen­
zialità delle informazioni scambiate.

In un collegamento connesso è possibile rilevare, e in alcuni casi correggere, eventuali erro­


ri, perdite, duplicazioni o altre anomalie del flusso dei pacchetti di dati. In un collegamento
non connesso, invece, non è possibile effettuare alcun controllo sulla correttezza del flus­
so dei vari pacchetti sia come sequenza sia come invio complessivo, in quanto ogni pacchetto
è totalmente indipendente dagli altri.

256 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I servizi non connessi garantiscono una maggiore efficienza nello sfruttamento del canale
trasmissivo, pur non garantendo alcun controllo del flusso. I pacchetti trasmessi a un livello
non connesso e non confermato, cioè senza che sia stata attesa la risposta di ricezione avve­
nuta da parte del destinatario, prendono il nome di datagram. Tale termine deriva dall’unione
di data (dati) e telegram (telegramma) e fa intendere che per spedire un pacchetto si scrive il
nome del destinatario e si consegna il tutto all’ufficio postale (servizio non connesso) senza
attendere la risposta di avvenuto ricevimento da parte del destinatario (servizio non confer­
mato).
I servizi non connessi si occuperanno di verificare gli errori di flusso, gestire gli errori di dati
con ritrasmissioni, suddividere i dati in frame, riconoscere e gestire i delimitatori dei frame. I
servizi connessi del livello data link si occuperanno, invece, di stabilire la connessione, chiu­
dere una connessione e trasferire i dati con le funzionalità dei servizi senza connessione.

Individuazione dei frame


Una volta suddivisa l’unica entità di dati in N pacchetti, questo livello deve preoccuparsi che i
pacchetti arrivino correttamente a destinazione e vengano ricostruiti per riformare un’unica
entità. Occorre, allora, individuare l’inizio e la fine di ogni frame delimitandolo con carat­
teri speciali.
È possibile ricorrere a diverse tecniche; tra le più diffuse:
■ riempimento di caratteri o character stuffing; si scelgono due o più caratteri speciali
con il compito di identificatori univoci di inizio e fine frame. Per distinguere tali sequenze
da eventuali sequenze uguali presenti nel pacchetto di dati, si aggiungono a tali sequenze
di dati caratteri di controllo da eliminare in fase di ricezione;
■ riempimento di bit o bit stuffing; si sceglie una particolare sequenza di bit, per esempio
01111110, come unico elemento identificatore di inizio e fine frame. Per distinguere allora
tale sequenza da eventuali sequenze simili di bit presenti nel pacchetto dati (nel nostro
esempio per distinguere le sequenze di dati aventi sei bit consecutivi a 1), si aggiunge un bit
di zero per spezzare tale sequenza, bit da eliminare in fase di ricezione.

Gestione del collegamento tra mittente e destinatario


Le varie topologie di rete causano la presenza a questo livello di diversi tipi di protocolli, cia­
scuno mirato a ottimizzare le prestazioni del tipo di rete su cui opera. Nel caso di una rete
punto­a­punto con servizi di tipo connesso, avremo sempre tre fasi:
• la creazione di una connessione
• lo scambio di dati
• la chiusura della connessione.
In tutte e tre le fasi, a ogni richiesta da parte del mittente detta ENQ (da enquire), può corri­
spondere un consenso a proseguire, detto ACK (da acknowledgement), oppure un rifiuto, detto
NAK (da negative acknowledgement), o ancora, un’assenza totale di risposta, detta NRE (da no
replay), corrisposta dopo un tempo massimo prestabilito.
In questi ultimi due casi, il mittente può avviare una procedura di rilevazione e correzione
degli errori che vedremo in seguito.
Nel caso invece di una rete multipunto a contesa occorre evitare che il mittente sovraccarichi
il destinatario di richieste quando il destinatario non è magari in grado di rispondere. Occorre,
quindi, che il mittente invii il frame solo se il destinatario è in grado di riceverlo. Questa sincro­
nizzazione prende il nome di controllo del flusso.

Protocolli di rete C1 257


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

10 Il controllo del flusso dei frame


Per controllare il flusso dei frame occorre:
• imporre un buffer di memoria in ingresso al destinatario;
• predisporre un’opportuna segnalazione di disponibilità del destinatario.

Due sono le principali tecniche di controllo del flusso che vengono utilizzate:
• controllo del flusso con tecnica stop and wait o trasmissione con attesa;
• controllo del flusso con tecnica sliding window o delle finestre scorrevoli.

■ La tecnica stop and wait consiste nel trasmettere un frame e attendere un segnale di ri­
scontro dal destinatario. Questa tecnica offre, però, scarsi risultati nel caso di trasferimenti
consistenti di frame. La tecnica stop and wait richiede un collegamento tra gli interlocutori
di tipo half duplex, cioè quando un’entità trasmette l’altra riceve e, viceversa, per i segnali
di riscontro. Per assicurare la possibilità a tutti di trasmettere in qualsiasi momento, il ca­
nale viene utilizzato in modalità full duplex, una direzione per i dati e l’altra per i riscontri.
In questo modo, però, la banda del canale viene utilizzata a metà, in quanto l’altra metà è
utilizzata per i segnali di riscontro: la tecnica delle sliding windows evita questo inconve­
niente.
■ La tecnica sliding windows consente a ogni stazione di trasmettere e ricevere contem­
poraneamente dati, evitando la trasmissione dei segnali di riscontro, ottimizzando, così,
il canale in modalità full duplex. Tutte le entità interlocutrici sono dotate di un buffer che
può contenere un numero N di frame. Un mittente, allora, può inviare fino a N frame al de­
stinatario, senza che possano essere persi per sovraccarico del destinatario. A ogni frame
scambiato, il destinatario aggiunge un numero di sequenza per indicare lo stato del frame
in ricezione.

11 Gestione degli errori


La correzione degli errori in trasmissione
Un’importante funzione svolta dal livello data link riguarda l’individuazione e la, eventuale,
correzione degli errori in trasmissione.
Il campo FCS del frame Ethernet, per esempio, contiene un insieme di caratteri necessari per il
controllo degli errori.
Durante la trasmissione possono verificarsi:
• errori singoli, un solo bit nei dati trasmessi può essere non corretto;
• errori multipli, cioè due o più bit nello stesso frame di dati possono essere non corretti.

Il livello data link può:


• solo rilevare gli errori e non correggerli, ma segnalarli ai livelli superiori;
• rilevarli ed effettuare una richiesta di ritrasmissione;
• rilevarli e correggerli in modo autonomo.

Il suo comportamento dipende dalla tecnica adottata per le trasmissioni unidirezionali


(simplex) o bidirezionali (half duplex o full duplex).
Nel caso di trasmissioni unidirezionali, il mittente non potrà richiedere la ritrasmissione, ma

258 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

potrà solo individuare un errore e poi o correggerlo o trasmetterlo ai livelli su­


Puoi approfondire
periori. In questo tipo di trasmissioni è possibile utilizzare i codici di Ham­ la trattazione del
ming per individuare e correggere eventuali errori singoli e multipli ma, per Codice di Hamming
questi ultimi, occorre un numero considerevole di bit di controllo. nel menu
Materiali aggiuntivi
Nel caso di trasmissioni bidirezionali, occorre solo individuare gli errori; del libro digitale.
la correzione non è richiesta in quanto è sufficiente la ritrasmissione. Una
tecnica molto semplice è quella della checksum o controllo di parità.

Il controllo di parità
Il controllo di parità consiste nell’aggiungere un bit, detto bit di parità, alla codifica stan­
dard di ogni carattere trasmesso, in modo che il nuovo carattere così ottenuto contenga un
numero sempre pari, o sempre dispari, di simboli 1; si parla allora rispettivamente di parità
pari e parità dispari.

All’arrivo del carattere, il mittente dovrà verificare che il numero di 1 presenti nel carattere
ricevuto corrispondano a quanto richiesto dal bit di parità.

Parità pari:
1 0 0 1 1 0 1 0 1 0 0 1 1 0 1

Si aggiunge uno 0 per ottenere un numero pari di 1

Parità dispari:
1 1 0 0 1 1 0 1

Si aggiunge un 1 per ottenere un numero dispari di 1

Come si può facilmente intuire, tale metodo rileva solo errori singoli e non multipli; è infatti
un metodo quantitativo (conta solo gli 1) e non posizionale (non ci dice dove sono questi 1).
Un esempio di metodo correttivo è quello della parità incrociata. In tale metodo si suddivide
il messaggio in blocchi di N caratteri calcolando la parità longitudinale e trasversale di ogni
blocco e inviandola assieme al blocco. Consideriamo il seguente esempio in cui supponiamo di
applicare la parità pari:

0 1 0 1 1 1 0 0
1 1 1 0 0 1 0 0
Parità 1 0 0 1 1 1 0 0
0 1 0 1 0 1 0 1 Blocco di caratteri
trasversale da trasmettere
1 1 0 0 1 0 1 0
0 1 0 0 0 1 0 0
1 0 0 1 0 1 1 0
1 1 0 1 1 1 0 1

0 1 1 0 1 0 0 Parità longitudinale

Protocolli di rete C1 259


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Con questa tecnica è possibile rilevare la presenza di errori multipli e, se sono in numero pari,
anche di individuarli.
Come possiamo notare dalla figura, se i bit segnati in rosso dovessero cambiare valore all’arri­
vo, ce ne accorgeremmo confrontandoli con le parità trasversali e longitudinali, mentre errori
del tipo segnalato in blu non verrebbero individuati. Infatti, gli errori in blu sono due per riga,
per cui il bit di parità sarebbe lo stesso anche se non ci fossero. Pertanto il sistema non riusci­
rebbe a individuare riga e colonna dell’errore.

Il codice a ridondanza ciclica


Una delle tecniche più utilizzate, e sicuramente più raffinata della precedente, è quella del co­
dice a ridondanza ciclica: CRC (Cyclic Redundant Code).
Elenchiamo i passi da effettuare per utilizzare tale tecnica.
• Chiamiamo A(N) la sequenza di N bit del frame da trasmettere, associamo ad A(N) un poli­
nomio P(x) di grado N−1, i cui coefficienti sono i simboli binari che compongono A(N).
• Dividiamo P(x), al quale sono stati traslati i coefficienti di M−1 posizioni aggiungendo M−1
coefficienti nulli, per un altro polinomio D(x) di grado M detto polinomio generatore.
Chiamiamo R(K) il resto di tale divisione.
• Viene trasmessa la sequenza di bit così formata: A(N) concatenata a R(K) indichiamola con
A(N) + R(K).
• Il mittente esegue la divisione tra A(N) + R(K) e il polinomio generatore D(x).
• Se il resto della divisione è nullo, allora non vi sono stati errori nella trasmissione.

Facciamo un esempio considerando:


N=8 e A(8) = 10001101
Avremo:
P(x) = 1x7 + 0x6 + 0x5 + 0x4 + 1x3 + 1x2 + 0x1 + 1x0 = x7 + x3 + x2 + 1
Utilizziamo il seguente polinomio generatore:
M=4
D(M) = 1011
D(x) = x3 + 0x2 + x1 + 1x0 = x3 + x + 1

P(x), traslando i coefficienti e aggiungendo 4−1 coefficienti nulli al fondo, diventa:


P(x) = P'(x) = 1x10 + 0x9 + 0x8 + 0x7 + 1x6 + 1x5 + 0x4 + 1x3 + 0x2 +
+ 0x1 + 0x0 = x10 + x6 + x5 + x3

Dividiamo P'(x) per D(x) in aritmetica modulo 2. Per effettuare tale tipo di divisione occorre
non considerare gli eventuali prestiti e riporti delle somme e delle sottrazioni, ovvero, si appli­
ca l’operazione logica di XOR bit a bit tra gli operandi intermedi. Affinché il divisore (parziale)
sia contenuto nel dividendo (parziale) è sufficiente che il numero di bit significativi del dividen­
do sia almeno uguale a quello del divisore.

260 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

10001101000 1011
1011 10110110
=01111
1011
=1000
1011
=01110
1011
=1010
1011
=0010
010 K = 3 → R3(x) = 0x2 + 1x1 + 0x0 = x

Ricordiamo che la divisione viene effettuata utilizzando la tecnica del modulo 2; per esempio,
il primo passaggio consiste nel selezionare i 4 bit più significativi del dividendo (1000); questi
contengono il divisore (in quanto il numero di bit è uguale a quelli del divisore), per cui si mette
1 al bit del risultato.
Per continuare, occorre sottrarre ai 4 bit del dividendo il divisore. Poiché siamo in aritmetica
modulo 2, occorre effettuare l’operazione di XOR bit a bit, ottenendo: 011 come risultato della
sottrazione.
Per poter andare avanti, occorre abbassare il prossimo bit del dividendo e, poiché ciò che si
ottiene non contiene il divisore (in quanto ha solo tre bit significativi), allora si aggiunge 0 al
risultato, e così via.
Il polinomio da trasmettere è:
A(N) + R(K) = 1 0 0 0 1 1 0 1 + 0 1 0 = 1 0 0 0 1 1 0 1 0 1 0
Che corrisponde al polinomio trasmesso:
T(N + K) = T(8 + 3) = 1x10 + 0x9 + 0x8 + 0x7 + 1x6 + 1x5 + 0x4 + 1x3 + 0x2 + 1x1 + 0x0 =
= x10 + x6 + x5 + x3 + x
Il mittente dividerà T(N + K) per D(M) e si controllerà il resto; se è nullo non ci saranno stati
errori, infatti:
10001101010 1011
1011 10110110
=01111
1011
=1000
1011
=01110
1011
=1011
1011
=0000
000 Resto nullo

Protocolli di rete C1 261


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Con questa tecnica si rilevano e individuano errori singoli, doppi e presenti in numero dispari;
per far questo è importante la scelta del polinomio divisore D(M). La scelta del polinomio G(x)
è importante per la bontà del metodo.
I polinomi che sono diventati standard internazionali sono:
CRC­16: x16 + x15 + x2 + 1 = 11000000000000101
CRC­CCITT: x16 + x12 + x5 + 1 = 10001000000100001

12 La suite TCP/IP
Si parla di internetwork quando reti anche non omogenee (sia LAN che MAN o WAN) ven­
gono collegate fra loro.

Per esempio, Internet è un’infrastruttura di internetworking, cioè di inter­


connessione tra reti diverse. Il nome TCP/
Attenzione: internet (con la “i” minuscola) è sinonimo di internetwork, cioè IP assegnato a
tutta la suite di
l’interconnessione di più reti generiche; Internet (con la “I” maiuscola) è il protocolli prende
termine utilizzato per riferirci alla specifica internetwork che fa riferimento il nome dai due
a un insieme di protocolli chiamato TCP/IP (Transmission Control Protocol / protocolli più
Internet Protocol). significativi dei
tanti presenti al
L’infrastruttura di rete denominata TCP/IP racchiude numerosi protocolli e, suo interno.
a differenza del modello ISO/OSI, prevede quattro livelli, così come riportato
in figura.

Applicazione

Processo/
Presentazione
Applicazione

Sessione

TRASPORT
Trasporto
(TCP UDP)

Rete INTERNET (IP)

Collegamento dati

Rete
Fisico

Come si evince dalla figura, il protocollo IP si colloca al terzo livello ISO/OSI, mentre TCP si
colloca al quarto e utilizza IP a livello inferiore. Ai soli fini informativi, è doveroso ricordare
che in realtà il TCP/IP annovera al quarto livello anche un altro importante protocollo: UDP.

262 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Questa architettura semplificata si contrappone alla complessità del modello ISO/OSI ed è sta­
to uno dei motivi che ha portato alla sua imponente diffusione. Dalla figura si nota, inoltre,
come il livello applicativo sia sempre presente ma, in determinati casi, può innestarsi pronta­
mente sul protocollo TCP, varcando alcuni livelli intermedi.

Il protocollo TCP/IP possiede alcune proprietà molto importanti che hanno decretato il suc­
cesso a livello internazionale. Ricordiamo, tra le altre:
• l’indipendenza dalla tecnologia di rete e l’utilizzo di un’unica unità di trasmissione dati,
nota con il nome di datagrammi;
• l’interconnessione tramite indirizzi di rete (indirizzi IP) e domini, che consente il colle­
gamento dinamico di nuovi nodi, o di intere reti, senza dover intervenire sulla struttura
precedente.
Per comprendere al meglio il funzionamento del protocollo TCP/IP, occorre partire dal livello
del protocollo IP. Questo protocollo definisce pacchetti che, abbiamo detto, vengono chiamati
datagrammi e rappresentano le unità di base per le comunicazioni su Internet. Questi pacchet­
ti passano da una parte all’altra del pianeta in concomitanza con l’apertura di una pagina web
o l’invio dei messaggi di posta elettronica. Il datagramma IP contiene indirizzi a 32 bit sia per
il computer di origine, sia per quello di destinazione. Questi indirizzi IP identificano in modo
univoco i computer e sono utilizzati dai router per dirigere i singoli datagrammi alle rispettive
direzioni. Il router non esamina il contenuto del datagramma, ma ne legge solo l’indirizzo di
destinazione a lunghezza totale.
I datagrammi IP sono suddivisi logicamente in due aree:
• l’intestazione, che contiene tutte le informazioni necessarie per il suo instradamento lun­
go la rete;
• il campo dati vero e proprio.
Ma se l’IP rappresenta il braccio del TCP/IP, il TCP rappresenta la mente. Infatti, mentre il
primo si limita a spedire rapidamente i dati che gli arrivano senza preoccuparsi se qualcosa
non procede correttamente, il secondo si occupa di controllare che l’informazione trasmessa
dai livelli superiori arrivi correttamente a destinazione. Il TCP, al contrario del protocollo IP,
fornisce una visione dei dati di tipo a flusso (data stream), cioè i dati sono ricevuti in sequenza
e nello stesso ordine con il quale sono stati trasmessi, strutturati semplicemente come una se­
quenza di byte, e in più fornisce al suo utente una visione del collegamento come se esso fosse
una linea dedicata.
Per il TCP, il segmento rappresenta l’unità di trasferimento che viene utilizzata sia per i dati,
sia per i messaggi di riscontro e per la gestione delle connessioni. Come il datagramma a livello
IP, così il segmento TCP è suddiviso in due parti che contengono una l’intestazione e l’altra i
dati.
Il complesso dei protocolli TCP/IP definisce le modalità con cui devono essere organizzati e
trasmessi i dati lungo la sottorete di comunicazione, lasciando ai gateway il compito di sceglie­
re, di volta in volta, lungo quale via far avanzare i singoli datagrammi.
È per questa fondamentale caratteristica, e per i motivi poc’anzi definiti, che il protocollo
TCP/IP è divenuto uno standard affermato per la gestione delle connessioni tra reti e oggi, con
la diffusione mondiale di Internet, è riconosciuto come l’infrastruttura di base per tutte le con­
nessioni a questa immensa rete pubblica.

Protocolli di rete C1 263


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

13 Interconnessione di reti:
bridge, router e gateway
Quando si uniscono reti elementari per realizzare un’internetwork si devono utilizzare dei di­
spositivi di rete particolari il cui compito è quello di collegare fra loro le varie reti. A seconda
del livello su cui intervengono per effettuare questo collegamento, questi dispositivi prendono
il nome di bridge, router e gateway.

Il bridge mette in connessione due (o più) reti limitandosi a intervenire nei primi due livelli
del modello ISO/OSI, cioè connettendo tra loro solo reti fisiche dello stesso tipo.

In altri termini, si puo dire che il bridge sia in grado di connettere reti separate che han­
no uno schema di indirizzamento compatibile. I bridge più semplici eseguono soltanto la
duplicazione di ogni pacchetto, del secondo livello ISO/OSI, nelle altre reti a cui è connesso,
mentre bridge più sofisticati sono in grado di determinare gli indirizzi dei nodi connessi nelle
varie reti così da trasferire solo i pacchetti che necessitano di questo attraversamento. Poiché il
bridge opera al secondo livello ISO/OSI, non è in grado di distinguere i pacchetti in base ai pro­
tocolli di rete del terzo livello (TCP/IP) e, pertanto, trasferisce indifferentemente tali pacchetti.

I router connettono due o più reti intervenendo al terzo livello del modello ISO/OSI: sono
in grado, pertanto, di trasferire solo i pacchetti di un determinato tipo di protocollo di rete
(per esempio, il TCP/IP) indipendentemente dal tipo di reti fisiche effettivamente connesse.

In altri termini, si può dire che i router siano in grado di connettere reti separate che hanno
schemi di indirizzamento differenti, ma che utilizzano lo stesso tipo di protocollo di rete
al terzo livello ISO/OSI. L’instradamento dei pacchetti attraverso le reti connesse al router av­
viene in base a una tabella di instradamento.

Il gateway (o router multiprotocollo) mette in connessione due o più reti intervenendo sia
a livello di trasporto sia nei livelli superiori del modello ISO/OSI, in funzione dei servizi che
implementa (DNS, Proxy ecc.).

È evidente, quindi, che il suo scopo non è tanto quello di connettere delle reti differenti, ma di
mettere in connessione i servizi di due o più ambienti che altrimenti sarebbero incompatibili.
Per esempio, un gateway può ritrasmettere i dati e fornire la conversione tra due diversi tipi di
applicazioni di trasferimento di posta elettronica.
Nel settore della comunicazione il termine gateway ha molti significati e, in particolare, viene
utilizzato spesso per descrivere qualsiasi dispositivo di internetworking. Nonostante i termini
router e gateway siano intercambiabili, consigliamo di utilizzare i due termini tenendo conto
delle funzioni da loro svolte.

14 Classi di reti e indirizzi IP


Solitamente un nodo di una rete (che sia un computer, una stampante di rete, un router…) è
caratterizzato da tre nomi:
• il MAC (Media Access Control) address
• il nome del computer che utilizziamo per chiamarlo
• l’indirizzo IP.

264 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Il MAC address è un codice univoco inserito nella scheda di rete. È composto da 48 bit, 24
dei quali sono assegnati dall’IEEE e vengono conservati in un registro mondiale così da
evitare duplicazioni e 24 dal produttore della scheda. Ogni scheda di rete ha, pertanto, un
MAC address diverso da tutti gli altri.
■ Il nome del computer viene definito da colui che installa la rete. È fondamentale, prima di
procedere con l’implementazione della LAN, definire una valida e rigorosa politica di de­
nominazione e tenerne traccia. Le reti, infatti, tendono a crescere rapidamente non appena
gli utenti ne comprendono l’utilità. L’amministratore della rete deve sempre disporre di
un’attenta documentazione di riferimento gestibile attraverso:
• un semplice documento che riporti il nome di ogni computer e di tutte le periferiche
collegate;
• un database;
• un diagramma aggiornato della rete.

■ Un indirizzo IP (dall’inglese Internet Protocol address) è un’etichetta numerica che identi­


fica univocamente un dispositivo (host) collegato a una rete informatica che utilizza l’In­
ternet Protocol come protocollo di comunicazione.

Come funzionano gli indirizzi IP


I tradizionali indirizzi IP (secondo la versione V4 del protocollo IP, attualmente in uso) sono
composti da una sequenza di 32 bit, suddivisi convenzionalmente in quattro gruppi di 8 bit. Es­
sendo solo 8 i bit per ogni numero, i valori andranno da 0 a 255. Per rendere più semplice il com­
pito del programmatore, il protocollo prevede che si possa utilizzare, al posto della notazione
binaria, una notazione decimale che suddivide l’indirizzo in quattro campi numerici (uno per
ogni byte) separati da un punto. Questo tipo di rappresentazione è definito come notazione
decimale puntata. Per esempio:

11000000.10101000.00000001.00101101 IP Binario
{
{
{
{

192 . 168 . 1 . 45 IP Decimale

All’interno di un indirizzo del genere, si distinguono due parti:


• Net ID (network address o indirizzo di rete);
• Host ID (host address o indirizzo del singolo host).

Il meccanismo è simile a quello del numero telefonico in cui la prima parte del numero, il pre­
fisso, definisce la zona, ovvero il distretto telefonico, mentre il resto identifica l’apparecchio
telefonico specifico di quella zona. In pratica, quando viene richiesto un indirizzo IP, si ottiene
un indirizzo di rete in funzione della quantità di nodi che si devono connettere. Gli indirizzi
disponibili sono stati distribuiti in cinque classi.

Protocolli di rete C1 265


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

CLASSE RANGE IP NUMERO HOST NUMERO RETI


24 bit 7 bit
A da 1.0.0.0 a 126.255.255.255
16.777.214 host 128 reti
16 bit 14 bit
B da 128.0.0.0 a 191.255.255.255
65.534 host 16.384 reti
8 bit 21 bit
C da 192.0.0.0 a 223.255.255.255
254 host 2.097.152 reti

D da 224.0.0.0 a 239.255.255.255 riservata per il multicasting

E da 240.0.0.0 a 254.255.255.255 riservata per usi futuri

■ Classe A: comprende tutti gli indirizzi in cui il primo ottetto (o byte) ha un valore decimale
da 0 a 126; nella classe A il primo byte identifica la rete (come il prefisso telefonico identifica
il distretto), i tre successivi le macchine. Gli indirizzi di classe A hanno il primo bit a zero.
0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh
La classe A è riservata alle reti molto grandi (possono essere composte da più di 16.000.000
di macchine). Gli indirizzi di classe A validi vanno da x.0.0.1 a x.255.255.254 dove x può
assumere qualsiasi valore da 0 a 126.
Per esempio, data la serie 10.0.0.0 – 10.255.255.255 è possibile utilizzare gli indirizzi che
vanno da 10.0.0.1 a 10.255.255.254.

Generalmente, il primo (x.0.0.0) e l’ultimo indirizzo (x.255.255.255) sono riservati, e non


possono essere usati come host perché assumono significati particolari.

Per esempio, l’indirizzo IP decimale 1.2.3.0 che in binario corrisponde a 00000001.000


00010.00000011.00000000 potrebbe essere un indirizzo di host (dipende dalla netmask,
concetto che vedremo tra poco). Un indirizzo IP in cui i bit degli host sono tutti a 1 pren­
de il nome di broadcast e non può essere assegnato a un host in quanto viene utilizzato
nel momento in cui qualche applicazione deve effettuare una comunicazione a TUTTI
gli host della rete.
Come si evince dalla tabella, lo spazio lasciato libero tra la classe A e la classe B, ov­
vero gli indirizzi 127.*, sono riservati per identificare una rete virtuale interna al nodo
stesso. All’interno di questa rete si trova un’interfaccia di rete immaginaria connessa
su questa stessa rete, corrispondente all’indirizzo 127.0.0.1, mentre gli altri indirizzi di
questo gruppo non vengono mai utilizzati. Per identificare questi indirizzi si parla di
loopback, anche se questo termine viene usato in altri contesti con significati differenti.
All’interno di ogni nodo, quindi, l’indirizzo 127.0.0.1 corrisponde a se stesso (local host).
■ Classe B: comprende tutti gli indirizzi in cui il primo byte ha un valore decimale da 128
a 191. Se, per esempio, un indirizzo IP inizia per 158, si intuisce immediatamente che è di
classe B. La classe B impiega i primi due byte per definire la rete e i secondi due per identi­
ficare ciascuna macchina. Gli indirizzi di classe B iniziano con 10, pertanto utilizzano i
rimanenti 14 bit per identificare l’indirizzo di rete e i restanti 16 per gli host.
10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh
Ogni rete di classe B può comprendere fino a 65.534 macchine.
Gli indirizzi di classe B validi vanno da x.x.0.1 a x.x.255.254, per la solita ragione che il pri­
mo e l’ultimo sono riservati.

266 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Classe C: comprende tutti gli indirizzi in cui il primo byte ha un valore da 192 a 223. I
primi tre byte identificano la rete, l’ultimo le macchine che appartengono a quella rete. Se
un indirizzo IP inizia per 200 si intuisce immediatamente che è di classe C. Gli indirizzi di
classe C iniziano con 110 e utilizzano i 21 bit successivi per identificare la rete e i restanti
8 per gli host
110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh
Gli indirizzi di classe C validi vanno da x.x.x.1 a x.x.x.254, per la solita ragione che il primo
e l’ultimo sono riservati. Una rete di classe C può comprendere, al massimo, 254 host.

■ Le classi D ed E sono classi particolari. La classe D viene utilizzata per trasmissioni multi­
cast, come operazioni streaming (l’invio di un video in tempo reale su destinazioni multi­
ple). La classe E, invece, i cui indirizzi iniziano con 4 bit a 1111, è destinata a usi sperimen­
tali e, quindi, non è utilizzabile all’interno di una rete.
Ricapitolando, il valore del primo byte è:
CLASSE DA A
A 1 127
B 128 191
C 192 223
D 224 239
E 240 255

15 La subnet mask
Indirizzi IP pubblici e privati
Per identificare i singoli host all’interno di una LAN è necessario utilizzare gli indirizzi IP pri­
vati, mentre se si desidera esporre la macchina su Internet, per esempio, per pubblicare un sito
web, c’è bisogno di un indirizzo IP pubblico.

Indirizzi IP

Pubblici Privati

Sono unici al mondo in Internet e sono Sono indirizzi utilizzabili per le reti private.
stabiliti da enti internazionali GARR/IANA Come tali vengono eliminati in Internet

Ogni classe di indirizzi ha un intervallo riservato agli indirizzi privati. In particolare:


• nella classe A è stato riservato l’intervallo
da: 00001010.00000000.00000000.00000000 = 10.0.0.0
a: 00001010.11111111.11111111.11111111 = 10.255.255.255.

Protocolli di rete C1 267


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

• Nella classe B è stato riservato l’intervallo


da: 10101100.00010000.00000000.00000000 = 172.16.0.0
a: 10101100.00011111.11111111.11111111 = 172.31.255.255.
• Nella classe C è stato riservato l’intervallo
da: 11000000.10101000.00000000.00000000 = 192.168.0.0
a: 11000000.10101000.11111111.11111111 = 192.168.255.255.

La maschera di sottorete
Analizziamo la seguente figura. La LAN di un’azienda, il cui Net ID è 192.168.0.0, è stata suddi­
visa in tre sottoreti logiche, rispettivamente una per il reparto magazzino (Net ID 192.168.10.0),
una per l’amministrazione (Net ID 192.168.20.0) e una per il reparto vendite (Net ID 192.168.30.0)

Magazzino
Net ID: 192.168.10.0

Reparto contabilità
Net ID: 192.168.20.0

Rete Azienda Reparto vendite


Net ID: 192.168.0.0 Net ID: 192.168.30.0

La scomposizione di una rete locale in sottoreti è una pratica usuale il cui obiettivo è quello di
evitare eventuali fastidiosi intasamenti. La scomposizione consiste nel creare apposite sotto­
reti, ognuna formata da tutti quegli host che hanno necessità di condividere specifiche attività
e risorse. Le sottoreti, quindi, possono essere immaginate come raggruppamenti di computer
separati che, di tanto in tanto, hanno la necessità di accedere a computer situati al di fuori del
loro gruppo.

Affinché i singoli host di una sottorete possano comunicare tra loro, devono avere, ovvia­
mente, lo stesso Net ID e un Host ID diverso, ma sempre compreso tra quelli previsti dalla
combinazione dei bit destinati agli host.

Nella figura sotto, per esempio, riportiamo la situazione della sottorete del Magazzino con i
singoli Host ID.
Magazzino
Net ID: 192.168.10.0
Il collegamento fisico delle varie sottoreti avviene 192.168.10.2
192.168.10.10

attraverso i router il cui compito è quello di instra­


dare i pacchetti.
192.168.10.4
Quando si configura un indirizzo IP è sempre ne­ 192.168.10.1

cessario definire anche una maschera di sottorete


(o subnet mask). 192.168.10.7 192.168.10.5

192.168.10.6

268 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La funzione di una maschera di rete è quella di mascherare una parte dell’indirizzo IP, in
modo che il protocollo TCP/IP riesca a distinguere il Net ID dall’Host ID.

Ciò renderà più veloci le comunicazioni tra i computer.


Come gli indirizzi IP, la subnet mask è composta da un quartetto di byte e ha la funzione di
indicare al computer qual è la parte dell’indirizzo IP da considerare per identificare i computer
che si trovano sulla sua stessa rete. In altri termini, attraverso la subnet mask un computer ri­
esce a capire se il computer con cui sta comunicando si trovi sulla sua stessa rete o su un’altra.
Nel primo caso, invia i dati direttamente al computer di destinazione. Nel secondo, li spedisce
al router che provvederà, poi, a instradarli all’host presente nella sottorete coinvolta nella tra­
smissione.
Riprendiamo in esame la figura precedente. Nella nostra sottorete, i computer sono caratteriz­
zati da indirizzi di classe C. In tale classe sappiamo che i primi tre byte indicano la rete, mentre
l’ultimo indica l’host; la loro subnet mask sarà, pertanto, 255.255.255.0. È evidente, quindi, che:

Per comunicare all’interno di una rete tutti i computer (compresi i router) devono disporre
della medesima subnet mask.

Si deve notare, inoltre, che la subnet mask non è una sequenza qualsiasi di 0 e 1: i bit impostati
a 1, che rappresentano il Net ID, devono essere tutti contigui.
Indirizzo IP Subnet mask Subnet mask
CLASSE Net ID
di broadcast (formato decimale) (formato binario)

A X.0.0.0 X.255.255.255 255.0.0.0 11111111.00000000.00000000.00000000

B X.X.0.0 X.X.255.255 255.255.0.0 11111111.11111111.00000000.00000000

C X.X.X.0 X.X.X.255 255.255.255.0 11111111.11111111.11111111.00000000

A livello macchina, l’identificazione del Net ID avviene ponendo in AND l’indirizzo IP di un


host con la sua subnet mask.
Prendiamo ancora una volta in esame la sottorete Magazzino raffigurata nella figura che ab­
biamo esaminato in precedenza.
Supponiamo che l’host 192.168.10.3 (mittente) desideri comunicare con l’host 192.168.10.7 (de­
stinatario). Affinché il protocollo TCP/IP possa “capire” se il destinatario si trova sulla stessa
sottorete del mittente, pone in AND i due indirizzi con le rispettive subnet mask.

Se, a risultato ottenuto, i due Net ID coincidono, allora gli host si trovano sulla stessa sottorete
e la comunicazione può avvenire direttamente.

Nel caso in cui ciò non accada, la trasmissione del pacchetto avverrà tramite il router che prov­
vederà a instradare il pacchetto nella sottorete del destinatario.
Host 192.168.10.3 11000000.10101000.00001010.00000011 AND
Subnet mask 11111111.11111111.11111111.00000000 =
11000000.10101000.00001010.00000000


Net ID

Protocolli di rete C1 269


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Host 192.168.10.7 11000000.10101000.00001010.00000111 AND


Subnet mask 11111111.11111111.11111111.00000000 =
11000000.10101000.00001010.00000000




Net ID

I due Net ID dell’esempio coincidono: gli host si trovano sulla stessa sottorete. Ovviamente,
per ottenere l’Host ID è sufficiente porre in AND l’indirizzo di un host con la maschera di rete
invertita.
Un’ulteriore ripartizione della rete può essere effettuata utilizzando una parte dei bit inizial­
mente destinati a contenere la parte host.
Prendiamo ancora in esame un generico indirizzo IP di classe C e facciamo uso dell’Host ID per
creare due sottoreti utilizzando i primi 2 bit che seguono l’indirizzo di rete originario:
xxxxxxxx.xxxxxxxx.xxxxxxxx.00000000 indirizzo di rete
xxxxxxxx.xxxxxxxx.xxxxxxxx.01000000 indirizzo della prima sottorete
xxxxxxxx.xxxxxxxx.xxxxxxxx.10000000 indirizzo della seconda sottorete
xxxxxxxx.xxxxxxxx.xxxxxxxx.11111111 indirizzo broadcast.

16 Reti peer-to-peer e reti client-server


Riguardo alla loro organizzazione, le reti possono essere classificate in due tipi:
• reti peer­to­peer o paritetiche o alla pari
• reti client­server.

■ Si parla di rete peer­to­peer quando tutti i computer hanno uguale importanza e tutti
possono accedere alle risorse comuni.

■ Al contrario, si parla di rete client­server quando è presente un computer “specializzato”,


denominato Server, il cui compito è quello di mettere a disposizione le proprie risorse agli
altri computer della rete che, così, vengono detti Client.

270 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Da queste semplici definizioni si deduce immediatamente che:


■ in una rete peer­to­peer
• non ci sono server dedicati;
• tutti i computer possono essere indistintamente client e/o server delle risorse;
• non esistono amministratori della rete, ma ogni utente ha il compito di gestire il pro­
prio computer oppure quello che utilizza;
• la sicurezza e l’amministrazione della rete non è centralizzata; l’unica sicurezza ga­
rantita è la protezione all’accesso del singolo computer;
• la gestione e l’amministrazione della rete diventa impossibile se il numero di compu­
ter/utenti cresce;
■ in una rete client­server
• è possibile controllare gli accessi, nel senso che è possibile regolamentare l’accesso
attraverso la creazione di appositi profili utenti in ciascuna postazione; sul server viene
memorizzata la lista degli utenti e le relative autorizzazioni;
• è possibile pianificare le attività; per esempio è possibile stabilire gli orari di accesso
di ogni singolo utente o di gruppi di utenti, concedere a essi particolari permessi (per
esempio, se e quando connettersi a Internet), contenere l’utilizzo di specifici software,
definire quote personalizzate di spazio disco, impedire l’uso di memorie di massa ecc.;
• è possibile ottimizzare la gestione dei sistemi e del software; pensate che sui compu­
ter eventuali crash possono rendere necessarie reinstallazioni sia del sistema operativo
che di tutto il software; con una rete client­server è possibile creare immagini degli
hard disk dei client in modo che il ripristino completo possa avvenire in pochi minuti;
allo stesso modo è possibile effettuare l’installazione remota di nuovo software (de­
ploying);
• deve esistere un amministratore di rete.

Protocolli di rete C1 271


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

I DISPOSITIVI
di RETE
COS’È UN DISPOSITIVO DI RETE
Un dispositivo di rete è un hardware con funzione di nodo
telecomunicativo tra altri dispositivi. Oltre a permettere la comunicazione
all'interno della rete, deve anche assicurarne stabilità ed efficienza.
L'evoluzione dei dispositivi di rete si è spinta nella direzione di permettere
connessioni più veloci e stabili, nonostante l’aumentare della complessità
del sistema. Rispetto a quando un dispositivo doveva gestire solo poche
connessioni tra computer, oggi deve amministrare pc, smartphone,
tablet ed elettrodomestici intelligenti.

I proxy e i firewall
Questi strumenti servono a limitare l’accesso a Internet o a veicolarlo secondo
regole specifiche.
Il proxy server è un programma, installato sul computer con la connessione
remota, che riesce a soddisfare tutte le richieste Internet dei client della rete locale,
instradandole verso il modem.
Nell'uso comune, i firewall vengono tipicamente usati per mantenere più sicuro
un sistema: per esempio, in un ufficio si possono limitare le connessioni in entrata
o in uscita per impedire che i dispositivi siano colpiti da attacchi hacker.
Un altro esempio molto comune si trova nelle università, dove gli studenti vengono
autorizzati a collegarsi da casa propria alla rete istituzionale (tramite proxy)
per poter accedere a contenuti ai quali l’ente è abbonato (tipicamente, articoli
di riviste scientifiche).

272 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I router
Si tratta di dispositivi sui quali viene eseguito
un programma che esamina ogni intestazione
dei pacchetti di dati in arrivo per poi inviare
questi pacchetti alla corretta LAN collegata.
Per permettere a qualsiasi dispositivo che si trova
su una delle LAN di scambiare dati con uno
qualsiasi degli altri dispositivi presenti sulle altre
reti, spesso è necessario collegare insieme più reti
LAN. Quando si hanno a disposizione due o più bus LAN,
è possibile semplicemente collegarli insieme: a questo punto,
si ottiene semplicemente un bus LAN più grande.
Riunire due LAN più piccole in una LAN più grande risulta efficace, a patto che abbiano
lo stesso indirizzamento IP e che siano abbastanza vicine fisicamente da supportare
il collegamento: tuttavia, è meglio collegare le due LAN per mezzo di un tipo
di dispositivo chiamato router. Questa tecnica è particolarmente importante se si
vogliono collegare LAN di tipo diverso (LAN a stella con LAN ad anello): in questo
caso, infatti, è assolutamente necessario avere una tecnologia di traduzione/inoltro per
far passare i segnali da una LAN all’altra. Questa funzione di instradamento garantisce
che le reti non coinvolte nel traffico di dati non vengano interessate nel trasferimento
dei pacchetti, permettendo di ottimizzare i canali di comunicazione: si evita il
cosiddetto broadcast storm, un improvviso fiume di messaggi che ostruisce il mezzo
trasmissivo. Il router mette in connessione due o più reti intervenendo al terzo livello
del modello ISO/OSI: in altri termini, si può dire che il router è in grado di connettere
reti separate che hanno schemi di indirizzamento differenti ma che utilizzano lo stesso
tipo di protocollo al terzo livello TCP/IP.

Gli switch e gli hub


Gli switch e gli hub venivano spesso utilizzati nella stessa rete.
Oggi gli switch, grazie all’abbattimento dei costi, hanno sostituito
totalmente gli hub, garantendo velocità di trasmissione maggiori.
Rispetto agli hub, gli switch offrono una larghezza di banda maggiore
agli utenti, perché il canale di comunicazione non è condiviso, ma
dedicato: se la velocità di comunicazione dello switch su ogni porta è
di 100 Mbps, ogni host può comunicare con un altro host a 100 Mbps,
indipendentemente dal traffico sulle altre porte.
Gli switch sono hub intelligenti, perché “imparano” a riconoscere i dispositivi
collegati alle proprie porte per poi inviare i pacchetti di dati solo a quelli interessati.
Si avvalgono infatti degli indirizzi MAC di ciascun frame per gestire il flusso del traffico di
rete. Monitorando i frame che riceve, lo switch costruisce una MAC table: in base a questo
apprendimento, manda i dati solo alla porta a cui è collegato il dispositivo che li sta chiedendo.
Lo switch riduce quindi la quantità di traffico non necessario, dato che le informazioni ricevute
nella porta vengono trasmesse solo al dispositivo con il giusto indirizzo di destinazione e non,
come negli hub, a tutte le porte.

Protocolli di rete C1 273


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

17 La comunicazione tra reti differenti


Vediamo come comunicano due reti differenti che non devono utilizzare Internet. Analizziamo
la seguente figura in cui riportiamo due reti paritetiche. La funzione di router è svolta da un
computer con due schede di rete che, pertanto, ha due indirizzi IP.

Un router ha sempre tanti indirizzi IP quante sono le schede di rete installate.

10.60.5.2
10.60.5.3
10.60.5.1

LAN 1

10.60.5.4 10.60.5.5 10.60.5.6


192.168.10.2

ROUTER 192.168.10.3

10.60.5.254

192.168.10.1
192.168.10.4
LAN 2

192.168.10.6 192.168.10.5

Procediamo: utilizzando le opzioni di rete mes­


se a disposizione dal sistema operativo disponi­
bile sul computer, occorre definire le proprietà
del protocollo TCP/IP delle singole macchine,
assegnando l’indirizzo IP, la subnet mask e l’in­
dirizzo IP del gateway. Per esempio, il computer
di indirizzo IP 10.60.5.3 che fa parte della LAN
1 sarà configurato come riportato nella figura.
Ovviamente, l’indirizzo 10.60.5.254 dovrà essere assegnato a tutti i computer che fanno parte
della LAN 1, mentre per quelli che fanno parte della LAN 2 andrà sostituito con 192.168.10.1.

L’utilizzo di Internet
Vediamo come comunicano due reti differenti che devono condividere Internet. Condividere
l’accesso a Internet significa disporre di un’unica connessione che viene resa disponibile a tutti
i computer. Tenendo conto della suddivisione della banda, la soluzione migliore a oggi è quel­
la di una connessione a banda larga. La condivisione può avvenire sfruttando un software di
proxy server oppure attraverso un router. Consideriamo, per esempio, due reti paritetiche dei
laboratori di informatica della scuola. Analizziamo la figura della pagina seguente.

274 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

10.60.5.3 10.60.5.2
LAN 1
10.60.5.1
10.60.5.200

PROXY ADSL
10.60.5.4 10.60.5.5 10.60.5.6
192.168.10.2

ROUTER 192.168.10.3

10.60.5.254
192.168.10.4
192.168.10.1

LAN 2

192.168.10.6 192.168.10.5

Anche in questo caso la funzione di router è svolta da un computer con due schede di rete che,
pertanto, ha due indirizzi IP. Per configurarlo, dobbiamo procedere esattamente come affer­
mato nel paragrafo precedente. È necessario configurare l’indirizzo del proxy server agendo
attraverso le Proprietà del browser. Nel caso di Windows, per esempio, occorre:
• fare clic sul pulsante Strumenti di Internet Explorer;
• dal menu selezionare la voce Opzioni Internet;
• selezionare la scheda Connessioni;
• fare clic sul pulsante Impostazioni LAN;
• viene visualizzata la finestra di dialogo Impostazioni rete locale (LAN), all’interno della
quale è necessario spuntare la casella Utilizza un server proxy…;
• all’interno della casella Indirizzo inserire l’indirizzo IP del computer che svolge funzioni
di proxy.
Il computer che funge da proxy server può anche essere utilizzato come web server, per esem­
pio per consentire l’accesso al nostro sito web personale. In tal caso, il computer dovrà essere
caratterizzato da due indirizzi IP, uno pubblico (per la connessione alla rete Internet) e uno
privato (per la connessione alla rete LAN e/o all’eventuale Intranet).

Protocolli di rete C1 275


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La diagnosi TCP/IP
Due utili strumenti di diagnosi TCP/IP sono rappresentati dai comandi DOS ping e ipconfig
che verificano rispettivamente la connessione tra due host in rete e la configurazione del proto­
collo TCP/IP. Essendo comandi DOS, possono essere impostati soltanto richiamando il prompt
dei comandi DOS.
La sintassi del comando ping è la seguente: ping <Indirizzo IP>.
“Pingando” l’indirizzo IP di un computer si verifica, quindi, la connessione tra il proprio com­
puter e quello “pingato”. Se il comando ping non viene eseguito correttamente e viene visualiz­
zato il messaggio Richiesta scaduta, occorre verificare che l’indirizzo IP dell’host sia corretto
e che l’host e tutti i gateway (router) tra il computer e l’host siano operativi. Supponiamo che il
comando impartito sia ping 172.18.20.2. Le risposte possono essere le seguenti:
Reply from 172.18.20.2: byte=…….. collegamento OK
Destination host unreachable host non trovato
Time out collegamento interrotto
Nel caso in cui si voglia soltanto visualizzare l’impostazio­
ne TCP/IP del computer è sufficiente digitare al prompt il
comando ipconfig, eventualmente seguito dall’opzione /all
nel caso in cui si desiderino informazioni più dettagliate.

276 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME C1
PROTOCOLLI DI RETE
AUDIO

Tecniche di commutazione e protocolli ISO/OSI, quella del modello TCP/IP prevede 4 livelli
di rete soltanto. L’esempio più noto è Internet.
Per superare inconvenienti come i costi
I compiti dei sette livelli funzionali
di implementazione, per collegare delle reti
del protocollo ISO/OSI
è meglio utilizzare collegamenti commutati,
Il livello fisico (physical) si occupa della
invece che dedicati (cioè fissi). I collegamenti
trasmissione corretta dei bit.
commutati si possono realizzare secondo
Il livello di linea (data link) organizza i dati
tre tecniche: per commutazione di circuito
in strutture di bit chiamate frame. Il livello di rete
(percorso fisico), di messaggio (percorso logico)
(network) instrada i frame dalla sorgente al
o di pacchetto (spezzettamento del messaggio
destinatario. Il livello di trasporto (transport)
in pacchetti, ciascuno dei quali segue un percorso
stabilisce se suddividere o meno i frame in percorsi
autonomo).
per ciascuno diversi. Il livello di sessione (session)
Per funzionare, le componenti hardware hanno
consente a sistemi diversi di stabilire una sessione
bisogno di componenti software chiamate
di dialogo completa. Il livello di presentazione
protocolli di comunicazione, che gestiscono
(presentation) analizza il significato del
il modo in cui sono scambiati i dati e fanno sì che
messaggio.
i computer parlino la stessa lingua.
Il livello di applicazione (application) fa in modo
I modelli architetturali ISO/OSI e TCP/IP che al destinatario il messaggio sia proposto nel
Reti diverse collegate fra loro – con dispositivi modo richiesto dai dispositivi di cui il destinatario
di tre possibili tipi: bridge, router o gateway – dispone.
danno luogo a un’internetwork.
La correzione degli errori di trasmissione
I sistemi di elaborazione che, pur avendo sistemi
Le tecniche di controllo degli errori di trasmissione
operativi diversi, in accordo con standard
più utilizzate sono due: il controllo di parità
predefiniti sono capaci di interagire tra loro, sono
e la tecnica del codice a ridondanza ciclica
chiamati sistemi aperti.
o CRC (Ciclic Redundant Code).
Lo standard di riferimento dei sistemi aperti
è l’OSI (Open Systems Interconnection), definito Reti peer-to-peer e reti client-server
dall’agenzia dell’ONU ISO (International In base all’organizzazione, le reti si classificano
Organization for Standardization). L’ISO ha stabilito in due tipi: reti peer-to-peer o paritetiche
che un sistema aperto debba avere sette livelli (nelle quali tutti i computer hanno uguale
funzionali, chiamati layer (livelli) o sottosistemi. importanza) e reti client-server
Un secondo standard, di fatto diffusissimo, fa (in cui un computer, detto server, mette a
riferimento all’insieme di protocolli chiamato disposizione le sue risorse agli altri computer,
TCP/IP. Contrariamente all’architettura del modello chiamati client).

Protocolli di rete C1 277


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME C1
MAPPA
MODIFICABILE
PROTOCOLLI
DI RETE

errori di trasmissione i principali servono a far


richiedono sono comunicare

reti diverse

preferibilmente
mediante

collegamenti
commutati

dando luogo a

una
internetwork

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) A che cosa servono i protocolli di rete?
2) Che tipo di collegamenti è preferibile attuare fra le reti?
3) Come si chiama il tipo di rete cui dà luogo il collegamento di reti diverse?
4) Quali sono i dispositivi di collegamento fisico possibili tra reti diverse?
5) Quali sono i due tipi di organizzazione possibili di un’internetwork?
6) Quali sono i principali protocolli di rete?
7) Che cosa richiedono gli errori di trasmissione?
8) Che architettura prevede il protocollo ISO/OSI?
9) Quali sono i sette livelli funzionali dell’architettura ISO/OSI?
10) Da quanti livelli funzionali è composta l’architettura del protocollo TCP/IP?
11) Qual è l’esempio più noto dell’internetwork basata sul protocollo TCP/IP?

278 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo C1
1. Una rete di computer è scalabile quando: 7. Completa correttamente la seguente frase.
A è possibile aumentare le prestazioni del sistema, Nelle reti _______________ (dette anche
aumentando il numero di elaboratori _______________ o _______________) tutti i nodi
B non è possibile aumentare le prestazioni hanno uguale importanza e accedono alle risorse
del sistema, aumentando il numero di elaboratori comuni. Non esistono nodi _______________
o _______________ stabiliti ma esiste un numero
C è possibile aumentare le prestazioni del sistema,
di nodi equivalenti che svolgono entrambi i ruoli
aumentando le prestazioni dei singoli elaboratori
verso altri nodi della rete. Un classico esempio
D consente un collegamento via wireless di questo tipo di rete è rappresentato dalla rete
per la condivisione di file (_______________).
2. Quale tra le seguenti è un’azione fondamentale
(server, client, P2P, paritetiche, file sharing,
svolta da una rete di computer?
peer-to-peer)
A Consente la condivisione delle risorse
B Consente l’uso di Internet a velocità diverse 8. Completa correttamente la seguente frase.
C Consente lo scambio di messaggi tra i computer Attraverso le reti _______________ i messaggi
connessi anche con dispositivi spenti possono essere inviati a tutti i computer: in tal
D È composta da dispositivi informatici caso si parla di _______________. Quando, invece,
che non devono essere autonomi i messaggi vengono inviati a un sottoinsieme
dei computer si parla di _______________.
3. Con host si intendono: (broadcast, broadcasting, multicasting)
A computer o dispositivi che indirizzano i terminali 9. Nel flusso trasmissivo half duplex:
verso i nodi
B i computer che contengono informazioni A i dati non possono viaggiare
e restituiscono dati ai terminali o periferiche B i dati possono viaggiare in una sola direzione
che offrono servizi C i dati possono viaggiare in entrambe le direzioni
C i cavi su cui viaggiano le informazioni ma non contemporaneamente
D i dispositivi passivi della rete D i dati possono viaggiare contemporaneamente
in entrambe le direzioni
4. I nodi (2 risposte corrette):
A sono computer o dispositivi che indirizzano
10. Cosa si intende con capacità massima
(o portata) di un canale?
i terminali verso gli host
B sono computer che contengono informazioni 11. Cosa si intende con l’espressione “larghezza
e restituiscono dati ai terminali di banda”?
C vengono detti dispositivi attivi
D vengono detti dispositivi passivi 12. Prende il nome di topologia di rete:
A la configurazione fisica dei collegamenti
5. La sottorete di comunicazione costituisce: tra le varie stazioni della rete
A il livello fisico della rete B la configurazione elettronica dei collegamenti
B il livello logico della rete tra le varie stazioni della rete
C il livello architetturale della rete C la configurazione logica dei collegamenti
D il livello intermedio della rete tra le varie stazioni della rete
D la configurazione in loco delle varie stazioni
6. La modalità di utilizzo delle varie linee di della rete
comunicazione costituisce (2 risposte corrette):
A il livello fisico della rete
B il livello logico della rete
C il livello architetturale della rete
D il livello intermedio della rete

Protocolli di rete C1 279


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

13. La commutazione di messaggio: C in base a un determinato ordine, viene interrogata


A consente una spedizione del messaggio in blocco la stazione che segnala di voler trasmettere
B rappresenta un’alternativa alla commutazione D la singola stazione che vuole trasmettere cerca
di circuito poiché non prevede l’impiego fisico di di capire se può trasmettere o no
un percorso che porti dal mittente al destinatario
C suddivide il messaggio in parti
19. Ethernet si basa sul protocollo:

D è caratterizzata dal fatto che il percorso A token ring C CSMA/CD


del messaggio non è prefissato B FDDI D IEEE

14. Il comitato ISO ha stabilito un modello 20. La tecnica stop and wait (2 risposte corrette):
di riferimento secondo il quale un sistema aperto
A richiede un collegamento tra gli interlocutori di tipo
è costituito da:
full duplex
A 5 strati funzionali C 7 strati funzionali B consiste nel trasmettere un frame e attendere
B 5 strati funzionali D 8 strati funzionali un segnale di riscontro dal destinatario
C impone un buffer di memoria in ingresso
15. Chiarisci con un esempio la tecnica al destinatario
dell’imbustamento multiplo. D richiede un collegamento tra gli interlocutori di tipo
half duplex
16. Nel modello ISO/OSI, il livello di linea:
A riguarda le reti locali e si occupa di organizzare 21. Nel protocollo TCP/IP:
i dati in strutture di bit (possibilmente esenti A il protocollo IP si colloca al quinto livello ISO/OSI,
da errori) chiamate frame mentre TCP si colloca al quarto e utilizza IP
B è il più basso dell’architettura e, come tale, il più a livello inferiore
vicino al canale fisico di trasmissione dei dati B il protocollo IP si colloca al secondo livello
C è quello che conclude il controllo sul ISO/OSI, mentre TCP si colloca al primo e utilizza
funzionamento della sottorete di comunicazione IP a livello inferiore
D consente il trasferimento dei messaggi lungo C il protocollo IP si colloca al quarto livello ISO/OSI,
la rete stabilendo e sciogliendo le connessioni mentre TCP si colloca al terzo e utilizza IP a livello
che definiscono il percorso nella rete che va superiore
dal mittente al destinatario D il protocollo IP si colloca al terzo livello ISO/OSI,
mentre TCP si colloca al quarto e utilizza IP
17. Nel modello ISO/OSI, il livello di trasporto: a livello inferiore
A riguarda le reti locali e si occupa di organizzare
i dati in strutture di bit (possibilmente esenti 22. Il MAC address:
da errori) chiamate frame A è un documento che riporta i nomi di ogni
B è il più basso dell’architettura e, come tale, il più computer e di tutte le periferiche collegate
vicino al canale fisico di trasmissione dei dati B è un codice univoco inserito nella scheda di rete
C è quello che conclude il controllo sul C è definito da colui che installa la rete
funzionamento della sottorete di comunicazione
D è un’etichetta numerica che identifica
D consente il trasferimento dei messaggi lungo univocamente un dispositivo (host) collegato
la rete stabilendo e sciogliendo le connessioni a una rete informatica
che definiscono il percorso nella rete che va
dal mittente al destinatario
23. Il MAC address (2 risposte corrette):
18. La modalità di accesso al canale si dice A è composto da 48 bit, 24 dei quali sono assegnati
“a scansione” quando: dall’IEEE e 24 dal produttore della scheda
A ogni stazione cerca di capire se può trasmettere B non esistono MAC address uguali
o no C è composto da 24 bit, 12 dei quali sono assegnati
B in base a un determinato ordine, vengono dall’IEEE e 12 dall’installatore della rete
interrogate tutte le stazioni e, nel momento D possono esistere MAC address uguali anche
in cui una di esse segnala di voler trasmettere, all’interno di una stessa rete
le viene assegnato il canale

280 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

24. L’indirizzo IP: C da non più di 254 host


A è un documento che riporta i nomi di ogni D da un numero di host sufficiente per realizzare
computer e di tutte le periferiche collegate il multicasting
B è un codice univoco inserito nella scheda di rete
C è definito da colui che installa la rete
31. Gli indirizzi di classe A hanno il primo bit a:

D è un’etichetta numerica che identifica A 1 B 0 C 10 D 110


univocamente un dispositivo (host) collegato
a una rete informatica 32. Gli indirizzi di classe B hanno il primo bit a:
A 1 B 0 C 10 D 110
25. L’indirizzo IP (2 risposte corrette):
A è composto da una sequenza di 24 bit, suddivisi 33. Gli indirizzi di classe C hanno il primo bit a:
convenzionalmente in quattro gruppi di 6 bit A 1 B 0 C 10 D 110
B è composto da una sequenza di 12 bit, suddivisi
convenzionalmente in quattro gruppi di 3 bit 34. La subnet mask:
C è composto da una sequenza di 32 bit, suddivisi A serve per verificare che due host siano due server
convenzionalmente in quattro gruppi di 8 bit della rete
D si basa sul modello V4 B serve per identificare un host tramite la sua
scheda di rete
26. Completa correttamente la seguente frase.
C serve per identificare un computer in una LAN
All’interno di un indirizzo IP si distinguono D serve per verificare che due host si trovino
due parti: _______________ (che significa nella stessa sottorete
_______________) e _______________ (che
significa _______________). Gli indirizzi disponibili 35. La subnet mask 255.255.255.0 identifica host
sono stati distribuiti in _______________ classi. appartenenti a una rete di classe:
(sette, IP Address, Net ID, network address, Host ID,
A A B B C C D D
host address, cinque)

27. Qual è il range IP della classe A? 36. Come fa il protocollo IP a verificare che due host
appartengono alla stessa sottorete?
A Da 240.0.0.0 a 254.255.255.255
A Pone in AND gli indirizzi del mittente
B Da 224.0.0.0 a 239.255.255.255
e del destinatario con le rispettive subnet mask
C Da 1.0.0.0 a 126.255.255.255 B Pone in OR gli indirizzi del mittente
D Da 128.0.0.0 a 191.255.255.255 e del destinatario
C Pone in AND le subnet mask del mittente
28. Una rete di classe A può essere composta: e del destinatario
A da più di 65.000 host D Pone in OR le subnet mask del mittente
B da più di 16 milioni di host e del destinatario
C da non più di 254 host
37. Si parla di rete peer-to-peer:
D da un numero di host sufficiente per realizzare
il multicasting A quando tutti i computer hanno uguale importanza
e tutti possono accedere alle risorse comuni
29. Una rete di classe B può essere composta: B quando tutti i computer non hanno uguale
importanza e non tutti possono accedere
A da più di 65.000 host
alle risorse comuni
B da più di 16 milioni di host
C quando i computer hanno ruoli distinti
C da non più di 254 host
D quando ogni singolo computer ha ruoli distinti
D da un numero di host sufficiente per realizzare e non tutti possono accedere alle risorse comuni
il multicasting
E quando non vi è struttura gerarchica fra i vari nodi
30. Una rete di classe C può essere composta: F quando le informazioni sono gestite dai vari
server della rete
A da più di 65.000 host G quando client e server si alternano i ruoli
B da più di 16 milioni di host all'interno della comunicazione

Protocolli di rete C1 281


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

38. Si parla di rete client-server: 44. Un router:


A quando è presente un computer che mette A è un dispositivo sul quale viene eseguito
a disposizione le proprie risorse a un solo un programma che esamina i dati e li invia al nodo
computer della rete collegato
B quando è presente un computer che mette a B è un dispositivo che smista i messaggi giunti
disposizione le proprie risorse agli altri computer a tutti gli host della rete
della rete C è un dispositivo sul quale viene eseguito
C quando ogni singolo computer ha ruoli distinti un programma che esamina i pacchetti giunti
e non tutti possono accedere alle risorse comuni per poi inviarli a tutti gli host della LAN collegata
D quando i computer hanno ruoli distinti D è un dispositivo sul quale viene eseguito
un programma che esamina i pacchetti giunti
39. In una rete peer-to-peer (2 risposte corrette): per poi inviarli alla corretta LAN collegata
A non ci sono server dedicati
45. Il comando ping verifica:
B tutti i computer devono essere o client o server
delle risorse A la connessione tra due host in rete
C la sicurezza della rete è centralizzata B la configurazione del protocollo TCP/IP
D la gestione e l’amministrazione della rete C la presenza della rete
diventano impossibili se il numero di computer D la presenza della rete in fibra ottica
è elevato
46. Il comando ipconfig verifica:
40. In una rete client-server (2 risposte corrette):
A la connessione tra due host in rete
A deve esistere un amministratore di rete B la configurazione del protocollo TCP/IP
B non è possibile pianificare le attività C la presenza della rete
C non è possibile controllare gli accessi D la presenza della rete in fibra ottica
D è sempre possibile ottimizzare la gestione
del software 47. Per connettere due reti differenti è necessario
disporre di:
41. Quando il segnale da trasmettere raggiunge l’hub:
A C
un modem un router
A viene riamplificato e ritrasmesso a tutte le altre B D
uno switch un hub
stazioni di lavoro
B viene ritrasmesso a tutte le altre stazioni di lavoro 48. Per avere informazioni più dettagliate dal comando
C viene riamplificato e ritrasmesso alla stazione ipconfig occorre digitarlo e farlo seguire da:
di lavoro destinataria A C
/more \w\k
D viene ritrasmesso alla singola stazione destinataria
B /advance D /all
42. Lo switch:
49. Scomporre una rete in sottoreti permette di
A ritrasmette a tutti i dispositivi e non come (2 risposte corrette):
negli hub al solo indirizzo di destinazione
A renderla più efficiente
B trasmette solo al dispositivo di destinazione
B evitare fastidiosi intasamenti
e ai nodi adiacenti
C bloccare i virus
C ritrasmette solo al dispositivo con il giusto
indirizzo di destinazione e non come negli hub D evitare l'uso del firewall
a tutte le porte
D ritrasmette solo al dispositivo con il giusto indirizzo 50. Un computer che funge da proxy server può
di destinazione esattamente come negli hub anche essere utilizzato come:
A switch
43. Per la diagnosi TCP/IP si usa il comando DOS: B hub
A ping C subnet C mail server
B pong D verify D web server

282 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

C2 La sicurezza delle reti


e la crittografia dei dati
LABORATORIO CASE STUDY
La sicurezza dei dati in rete

IMPARERAI…

Il concetto di sicurezza I principali attacchi La protezione dei dati La firma digitale


dei dati informatici attraverso la crittografia e i certificati elettronici

1 La sicurezza: introduzione
Uno dei primi obiettivi di un gestore di sistemi informatici è certamente la sicurezza del siste-
ma. In attesa di arrivare a una definizione più completa di sicurezza di un sistema informa-
tico, possiamo affermare quanto segue:

Per sicurezza di un sistema informatico intendiamo la salvaguardia dei seguenti aspetti


fondamentali: disponibilità o affidabilità, integrità, confidenzialità o riservatezza, autenti-
cità e non ripudio.

Esaminiamo in dettaglio gli aspetti citati.


■ Disponibilità o affidabilità dei dati. I dati devono essere sempre accessibili o disponibili
agli utenti autorizzati. Esempi di violazione di affidabilità sono:
• mancanza di alimentazione elettrica;
• rottura di un componente hardware.

■ Integrità dei dati. È la protezione dei dati realizzata in modo da evitare la loro corruzione.
In particolare, nella trasmissione i dati devono arrivare così come sono stati inviati, mentre
nella memorizzazione i dati devono coincidere in ogni istante con quelli memorizzati in
origine. L’integrità riguarda la protezione da modifiche non autorizzate. Esempi di viola-
zione di integrità sono:
• cancellazione non autorizzata di un file;
• modifica non autorizzata di un file.

■ Confidenzialità o riservatezza. È la protezione dei dati realizzata in modo che essi siano
accessibili “in lettura” solo dai legittimi destinatari. La riservatezza riguarda la protezione
da letture non autorizzate. Esempi di violazione della riservatezza sono:
• intercettazione dei dati durante la loro trasmissione;
• accesso non autorizzato ai dati memorizzati su un server.

La sicurezza delle reti e la crittografia dei dati C2 283


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Autenticazione o autenticità. È la protezione che offre la certezza della sorgente, della


destinazione e del contenuto del messaggio. Un esempio di violazione è:
• la spedizione di un'email da parte di un pirata informatico che si maschera, facendo
credere che il mittente dell'email sia una persona conosciuta al destinatario.

■ Non ripudio. È la protezione che offre la certezza che chi trasmette (non ripudio del mit-
tente) e chi riceve (non ripudio del destinatario) non possano negare di avere, rispettiva-
mente, inviato e ricevuto i dati. Esempi di non ripudio, presi dalla vita di tutti i giorni in
situazioni analoghe a quelle informatiche, sono:
• in una raccomandata con ricevuta di ritorno, il sistema postale garantisce il non ripu-
dio da parte del destinatario, in quanto quest’ultimo deve firmare di persona la ricevu-
ta di ritorno (è garantita, pertanto, anche la sua autenticità);
• con l’autenticazione della firma da parte di un pubblico ufficiale si garantisce, invece, il
non ripudio del mittente (oltre alla sua autenticità).
Esempi di violazione del non ripudio sono:
• carta intestata falsa
• firma falsa
• e-mail falsa.

Un caso di violazione di più aspetti relativi alla sicurezza può essere il seguente: la rottura di
un disco fisso può violare l’integrità, in quanto le informazioni sulle tracce sono state sicura-
mente modificate o cancellate. Viola anche l’affidabilità, in quanto le informazioni non sono
più accessibili all’utente.
Se, invece, si rompe solo la parte elettronica di un disco fisso, allora si viola solo l’affidabilità
ma non l’integrità, in quanto sostituendo tale parte elettronica si può accedere alle informa-
zioni originarie.

Nella figura seguente rappresentiamo gli aspetti riguardanti la sicurezza di un sistema infor-
matico.
Integrità

Affidabilità Riservatezza

Autenticità Non ripudio

Si definisce sicuro un sistema informatico in cui le informazioni contenute vengono garan-


tite, attraverso sistemi e misure di sicurezza appositamente predisposti, contro il pericolo di
violazioni degli aspetti relativi alla sicurezza citati in precedenza.

284 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Un buon gestore di sistemi informatici deve, quindi, mettere in atto un’adeguata politica della
sicurezza del sistema. Qualora, infatti, l’intrusione nel sistema informatico, o il suo danneg-
giamento, siano riconducibili alla scarsa diligenza del responsabile di sistema, questi potrà es-
sere chiamato a risarcire il danno nei confronti dell’azienda e dell’eventuale terzo danneggiato.

La sicurezza di un sistema informatico è strettamente legata al concetto giuridico di sicurezza


informatica.

Il concetto giuridico di sicurezza informatica è collegato a quel complesso di accorgi-


menti, tecnici e organizzativi, che mirano a tutelare i beni giuridici della confidenzialità o
riservatezza, dell’integrità e della disponibilità delle informazioni registrate.

L’accesso non autorizzato a un sistema informatico, da parte di un pirata informatico, può


essere equiparato alla violazione di domicilio.
Non a caso, l’Art. 615-ter della Legge 547/93 è stato inserito nell’ambito dei delitti contro l’in-
violabilità del domicilio. Infatti, il sistema informatico costituisce, rispetto alla persona, una
sorta di espansione della sua soggettività: chi si introduce clandestinamente all’interno dell’a-
bitazione altrui commette, comunque, il delitto di violazione di domicilio anche se dimostra
che non aveva alcuna intenzione di rubare.
La copiatura di dati e programmi si può configurare, invece, come furto o violazione del di-
ritto d’autore.

2 Sicurezza dei dati in rete


In una qualsiasi rete di comunicazione ha sempre avuto grande importanza la sicurezza dei
dati trasmessi tra una sorgente e una destinazione, particolarmente, poi, quando è coinvolta la
rete Internet. Tecnicamente, chiunque avrebbe la possibilità di interporsi fisicamente tra l’ori-
gine del flusso dei dati e la destinazione per intercettare i singoli pacchetti di dati e ricostruire
l’intera informazione trasmessa, potendo violare così quasi tutti gli aspetti fondamentali della
sicurezza: riservatezza, affidabilità, autenticità, integrità e non ripudio.
Per esempio, è tecnicamente possibile:
• intercettare tutte le e-mail indirizzate a un particolare utente;
• intercettare i numeri di carta di credito.
Occorre a questo punto fare alcune considerazioni.
Le finalità per cui è nata Internet erano quelle di offrire uno strumento per lo scambio di in-
formazioni tra ricercatori universitari sparsi in tutto il mondo. Di conseguenza, Internet (e in
particolare i protocolli TCP/IP, Transmission Control Protocol/Internet Protocol) non si interes-
sava alle problematiche relative alla sicurezza delle informazioni trasmesse. Le informazioni
tra ricercatori venivano, infatti, trasmesse “in chiaro”.
Le finalità di utilizzo della rete sono, però, radicalmente cambiate con l’introduzione di fini
commerciali che implicano transazioni economiche (con scambio di denaro). Uno dei primi
risultati di questo cambiamento è la riprogettazione di alcuni protocolli di base (come l’IP), per
includere a tale livello base i meccanismi legati alla sicurezza.
Internet è nato come sistema aperto, con gli enormi vantaggi che ciò comporta, ma ha, rispet-
to a un sistema chiuso, gli svantaggi sulla sicurezza appena citati. I meccanismi aggiuntivi di
sicurezza possono essere pesanti dal punto di vista del tempo e dello spazio (cioè rallentano la
velocità di scambio delle informazioni e gravano sui web server), e vanno quindi utilizzati solo
nei casi di effettivo bisogno.

La sicurezza delle reti e la crittografia dei dati C2 285


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Violazioni della sicurezza: attacchi ai sistemi informatici


La normativa in materia di sicurezza dei sistemi informatici prevede vari tipi di sanzioni, an-
che penali. Tali norme prevedono una casistica di disastri informatici che costituisce una
sorta di elenco, non esaustivo, degli attacchi che possono minacciare l’integrità dei sistemi
informativi.

Con il termine attacco, nell’ambito informatico, si intende qualsiasi atto accidentale o in-
tenzionale finalizzato a sovvertire le misure di sicurezza di un sistema informatico.

La prevedibilità di questi attacchi è di importanza decisiva per delimitare i profili della respon-
sabilità del personale addetto alla sicurezza.
Un attacco è un “agente” qualsiasi; non è detto che sia sempre legato a un essere umano. Pos-
siamo classificare gli agenti responsabili di attacchi in agenti attivi e agenti passivi, e anche
in agenti umani e agenti non umani.

Un agente attivo è qualsiasi agente (umano o non umano) che può violare tutti gli aspetti
relativi alla sicurezza.

Un agente passivo è qualsiasi agente (umano o non umano) che può violare solo la riserva-
tezza di un sistema informatico.

Un fulmine è un agente attivo che viola l’integrità e l’affidabilità dei dati; un pirata che “ascol-
ta” in rete messaggi riservati è un agente passivo, in quanto viola solo la riservatezza.

Agente

passivo attivo

umano non umano umano non umano

286 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Un agente non umano può essere classificato come segue:

Agente non umano

Eventi catastrofici eccezionali Eventi non catastrofici frequenti,


(non frequenti), per esempio un per esempio interruzione di energia
terremoto, un incendio, un’alluvione, elettrica, sbalzi di tensione,
un atto terroristico, il crollo di un edificio. malfunzionamenti hardware, un fulmine.

Un agente umano, a sua volta, può essere classificato come segue:

Agente umano

Agente intenzionale, o criminale Agente non intenzionale se non vi è la


informatico, se vi è la volontà di volontà dell’atto. Per esempio, lo stesso
realizzare un danneggiamento o una personale del sistema che sovrascrive
frode (in generale, un atto di pirateria una nuova versione con una vecchia,
o criminoso). Per esempio, creazione e perdendo così le modifiche effettuate
inserimento di virus in un sistema. (violazione dell’integrità dei dati).

Alcuni esempi di attacchi da parte di agenti attivi e umani sono:


• attentato a impianti informatici di pubblica utilità;
• falsificazione di documenti informatici (alterazione o manipolazione dell’integrità del dato
originario);
• accesso abusivo a un sistema informatico o telematico;
• detenzione e diffusione abusiva di codici di accesso a sistemi informatici o telematici;
• diffusione di programmi idonei a danneggiare o interrompere il funzionamento di un si-
stema informatico;
• violazione di corrispondenza telematica, intercettazione di messaggi di posta elettronica;
• danneggiamento di sistemi informatici e telematici;
• frode informatica, cioè alterazione dell’integrità dei dati, allo scopo di procurarsi un ingiu-
sto profitto.
Diamo ora una definizione più completa di sicurezza di un sistema informatico.

La sicurezza di un sistema informatico coincide con l’insieme di accorgimenti, organiz-


zativi e tecnici, che devono essere adottati per ridurre al minimo tutti i possibili attacchi da
parte di un agente qualsiasi.

La sicurezza delle reti e la crittografia dei dati C2 287


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

HACKER e strumenti
per VIOLARE la SICUREZZA
AMICI E NEMICI
DELLA SICUREZZA L’HACKER
INFORMATICA L’hacker è una persona
che sfrutta le proprie
I termini hacker, cracker, pirati informatici
conoscenze per testare le
o criminali informatici sono spesso usati
misure di sicurezza adottate
dai media come sinonimi, ma hanno in
dagli amministratori di
realtà un significato molto diverso.
sistema, al fine di verificarne
la stabilità: nel caso trovi
una falla, informa i diretti
responsabili sul tipo di
attacco possibile e su come
prendere provvedimenti.
IL CRACKER
Il cracker, invece, si serve di tali
falle per commettere crimini o
danneggiare il sistema di cui
ottiene il controllo: è un vero L’hacker agisce a fin di bene, ma non
e proprio criminale moderno. è escluso che penetri nei sistemi altrui:
Tipicamente, infetta sistemi se ciò rientra nel suo specifico codice
(intere reti o singoli dispositivi) etico, l'hacker può anche commettere
chiedendo un riscatto al reati informatici nel perseguimento
proprietario per il loro ripristino. del suo obiettivo.
In generale, è sempre più importante
conoscere i principali sistemi di attacco,
per potersene difendere efficacemente.

288 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sniffing
È una delle tecniche più comuni: permette di intercettare, o meglio “annusare”
(to sniff, in inglese), il passaggio dei dati lungo la rete, per catturare quelli sensibili.
Quando un dispositivo deve inviare un’informazione a un altro dispositivo, costruisce
un “pacchetto” con l’indirizzo di quest’ultimo e lo spedisce in rete: tutte le macchine
che sono attraversate dal pacchetto lo ignorano, tranne il destinatario. Uno sniffer è un
programma che permette a un computer di leggere automaticamente tutti i pacchetti
che transitano sulla porzione di rete alla quale è connesso, estraendone le informazioni
più interessanti (come, per esempio, nome utente e password).

DOS
Spoofing (Denial Of Service)
Con questa tecnica il Traducibili come
criminale informatico "negazione di
invia pacchetti
modificando l’indirizzo SISTEMI servizio", questi
attacchi non sono
DI
IP dell’origine: così finalizzati a violare
facendo, l’host di la sicurezza dei dati
destinazione e i vari
nodi che il pacchetto ATTACCO di un sistema, bensì
a impedire che
attraversa (firewall, quest’ultimo possa
router e così via) erogare dei servizi. Un
penseranno che la attacco di questo tipo
richiesta provenga da è il network flooding,
un’altra origine. il quale agisce
saturando la capacità
di gestire il traffico in
Backdoor entrata.
Spamming La gravità di un incidente
Consiste nell’invio informatico non si limita
di posta elettronica ai danni arrecati a dati
a chi non vuole e programmi presenti
riceverla: tipicamente, sul sistema attaccato,
ma comprende anche le
Malware
viene usato a scopo
operazioni eseguite dal Questo termine
pubblicitario. Qualsiasi
cracker per garantirsi un racchiude vari tipi
interazione con la mail
eventuale accesso futuro. di programmi: per
spam (anche solo la
L’operazione più comune esempio virus, worm,
sua ricezione e lettura)
per raggiungere tale trojan horse. Questi
certifica al cracker che
scopo è la creazione di piccoli software
l’indirizzo di posta
una backdoor, una sorta possono entrare in
elettronica è attivo.
di entrata di servizio un sistema attraverso
nascosta agli occhi di varie vie (file infetti,
tutti tranne che a quelli e-mail e via dicendo)
del cracker, il quale potrà per danneggiare il
così ripetere l’attacco a sistema in vari modi,
suo piacimento. più o meno evidenti.

La sicurezza delle reti e la crittografia dei dati C2 289


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

3 Protezione dagli attacchi


Protezione dal codice malefico
Il codice malefico (malware, malicious software) è un programma (o una parte di program-
ma) che riesce in vario modo a introdursi in un sistema informatico all’insaputa degli utenti,
e, quindi, a compiere un certo numero di operazioni più o meno dannose (si va dalla sempli-
ce visualizzazione di messaggi alla cancellazione del contenuto del disco fisso).

Il codice malefico è un programma progettato per le seguenti finalità:


• permettere la propria riproduzione;
• nascondersi nel sistema per modificare dati e/o programmi, distruggere dati e/o program-
mi, interrompere momentaneamente o definitivamente il sistema, sostituire l’identità di
utenti.
Abbraccia le categorie di codice riportate nella figura seguente:

Malware

Virus propriamente detti Worm Trojan Backdoor

Virus di file Virus di boot Virus polimorfici Virus stealth Virus TSR

Come si evince dallo schema, worm, trojan e backdoor non sono considerati veri e propri virus,
in quanto agiscono in maniera diversa.

Worm
I worm o vermi sono programmi che si inseriscono nella memoria (sia quella centrale sia
quella di massa), cercando aree libere per replicarsi fino a saturare il sistema.

Sono in genere veicolati attraverso le reti e sono molto diffusi nei sistemi Windows. I worm
assumono il controllo delle funzioni del computer destinate al trasporto dei file o delle infor-
mazioni. Molti, infatti, agiscono sulle trasmissioni di rete, saturando la banda disponibile con
propri messaggi e rendendo difficile la comunicazione; altri agiscono sulla posta elettronica,
generando migliaia di e-mail fasulle e saturando i server di posta.
Il pericolo maggiore dei worm è proprio questa loro capacità di riprodursi in numero sempre
maggiore ed estremamente rapido. Intasano la rete e sono la causa di lunghe attese per l’aper-
tura delle pagine web in Internet.

290 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Cavalli di Troia

Un cavallo di Troia o trojan è un codice che si nasconde all’interno di un programma, o di


un documento, e si attiva al verificarsi di alcuni eventi (per esempio il giorno 13 di ogni mese,
oppure ogni volta che si apre un particolare documento, e così via).

Alle funzioni legittime del programma che lo ospita, questo tipo di virus aggiunge altre fun-
zioni indesiderate.
Il nome è, ovviamente, riferito al leggendario cavallo di legno usato come espediente dai Greci
per consentire alle proprie truppe, nascoste nel suo ventre, di entrare nella città di Troia ed
espugnarla.
Per analogia, il cavallo di Troia è un programma apparentemente innocuo, ma in realtà è in
grado di sferrare un attacco distruttivo, trasportando i virus all’interno dell’elaboratore da
infettare.

Virus propriamente detti


Il termine virus deriva dalla microbiologia, e viene utilizzato per indicare un agente patogeno
capace di riprodursi solamente nelle cellule viventi, di cui può divenire un pericolosissimo ne-
mico. Il medesimo concetto è stato trasferito nel linguaggio dell’informatica.

Un virus è un programma autonomo che, a differenza degli altri malware, non ha bisogno di
un altro programma che lo ospiti. Ha, inoltre, un meccanismo di replica.

I virus possono avere caratteristiche diverse in base al punto di attacco o a proprietà intrinse-
che. Si hanno tra l’altro:
■ Virus di file: sono quei programmi maligni che, per nascondersi o per fare in modo di
essere eseguiti più facilmente, si sostituiscono completamente a un programma (file con
estensione .exe, .com, .scr, .bat, e così via) e, nel momento in cui il sistema operativo o l’u-
tente richiederà di eseguire quel programma, in realtà verrà eseguito il virus. In altri casi, i
virus di file si copiano all’interno di un altro programma, di solito alla fine, senza sostituir-
lo completamente, ma “infettandolo”. Quindi, nello stesso programma saranno presenti sia
il codice originale, sia il codice virale. Al momento dell’esecuzione dell’applicazione infetta
verrà eseguito il virus che, a sua volta, provvederà a eseguire anche il programma legittimo,
simulando così un corretto funzionamento. In conseguenza dell’infezione, il programma
originale aumenta solitamente di dimensione.
■ Virus di boot: infettano il settore di boot e l'MBR (Master Boot Record) dei dischi, due zone
speciali che contengono le informazioni necessarie al caricamento e all’avvio del sistema
operativo. I virus di boot erano molto diffusi in passato; oggi, grazie a una maggior atten-
zione e a un maggior controllo dedicati a queste zone del disco, i programmatori di virus
stanno tralasciando questa tecnica, considerata ormai inefficace.
■ Virus polimorfici: si moltiplicano producendo cloni sempre diversi tra loro e, nasconden-
dosi dietro queste nuove forme, tentano di sfuggire alla cattura.
■ Virus stealth (“nascosti”): sono progettati in modo da non essere riconosciuti neppure
dagli antivirus. Per questa micidiale caratteristica, provocano danni quasi sempre senza
possibilità di difesa.

La sicurezza delle reti e la crittografia dei dati C2 291


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Virus TSR (Terminate and Stay Resident): si attivano quando viene eseguito il programma
infetto. Installandosi nella memoria RAM, infettano tutti gli altri programmi in esecuzio-
ne, propagando il contagio. Sono programmi che, una volta terminata la loro esecuzione,
restituiscono il controllo al sistema operativo restando però residenti in memoria.

Cookie
I cookie (termine inglese che significa “biscotto”) sono piccoli file di testo che i web server
creano, e memorizzano, sui computer dei visitatori, per poterli identificare nelle visite suc-
cessive o, più in generale, per archiviare sul client informazioni utili al server.

Quando navighiamo nel Web, dobbiamo essere consapevoli che i siti che frequentiamo regi-
strano alcune informazioni su di noi. Per farlo, installano sui singoli dispositivi i cosiddetti co-
okie. Oggi, la Legge europea sulla Privacy (Regolamento UE 2016/679) consente di accettare o
meno l'installazione dei cookie sul proprio dispositivo di navigazione. Tutti i i siti hanno infatti
l'obbligo di richiedere il consenso agli utenti per poterli installare. Se un utente non concede il
consenso, potrà accedere al sito solo in forma parziale.
I cookie sono necessari a semplificare una serie di procedure, come la memorizzazione delle
credenziali di accesso al proprio account (nome utente e password) e la memorizzazione delle
pagine visitate, in modo che l'utente possa tornare indietro a una pagina già visitata in pre-
cedenza senza cercarla di nuovo. I cookie servono anche a conoscere quali pagine un utente
ha visitato, quali sono le sue abitudini di navigazione e i suoi interessi. Questo serve sia agli
sviluppatori dei siti per migliorarli in base al tempo impiegato dagli utenti sulle varie pagine
(se, per esempio, un utente visita un sito o una pagina solo per pochi secondi, vuol dire che il
contenuto non rispondeva ai suoi interessi), sia per proporre ai navigatori una comunicazione
pubblicitaria personalizzata (se, per esempio, un utente cerca un prodotto da acquistare, si
vedrà riproporre quel prodotto come forma di pubblicità, ogni volta che naviga).

4 La crittografia
La crittografia è quella branca della matematica che studia i metodi per trasformare un
messaggio, in modo da renderlo visibile solo a un ristretto gruppo di persone. In particolare,
possiamo dire che il messaggio dev’essere visibile solo al suo mittente e al suo destinatario.

Un buon sistema di crittografia risolve molti dei problemi finora visti e cioè garantisce:
• autenticazione e non ripudio del mittente e del destinatario;
• confidenzialità o riservatezza e integrità dei dati.
Mittente Destinatario

292 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Un sistema di crittografia consiste nel codificare, cifrare o criptare i messaggi da trasmette-


re in una rete prima che essi siano spediti e decodificare, decifrare o decriptare tali messag-
gi una volta arrivati a destinazione.
I componenti di base per un buon sistema di crittografia sono:
• gli algoritmi
• le chiavi di crittografia.
La sicurezza del sistema si ottiene con una buona combinazione dei due componenti. Infatti
non dobbiamo accoppiare ad algoritmi di crittografia sofisticati (e quindi ritenuti sicuri) chiavi
troppo semplici, altrimenti l’intero sistema di crittografia diventa facilmente violabile.
Esempi di crittografia esistono sin dall’antichità (un esempio è dato dal codice di Cesare, del I
secolo a.C., che descriveremo nel seguito) e sono stati da sempre utilizzati in ambito militare
(pensate alla famosa macchina Enigma costruita dai tedeschi nella Seconda Guerra Mondiale).

Un semplice sistema di crittografia: il codice di Cesare


Vediamo le due componenti di base del sistema di crittografia chiamato codice di Cesare:
• la chiave, che è un numero N compreso tra 1 e 25;
• l’algoritmo, che consiste nella sostituzione di ciascuna lettera con l’N-esima successiva (in
modo ciclico).
Consideriamo N = 3. Avremo quindi che:
• alla lettera a corrisponde la lettera d
• alla lettera b corrisponde la lettera e
e così via fino alla lettera z, alla quale corrisponde ciclicamente la lettera c.
Si è considerata a come lettera successiva alla z (codice ciclico).
Il codice di Cesare può venire facilmente forzato dopo pochi tentativi.

Attualmente, esistono due tecniche di crittografia che garantiscono una notevole efficacia e
sicurezza, e che sono largamente utilizzate in ambiente Internet:
• la crittografia a chiave privata o crittografia simmetrica;
• la crittografia a chiave pubblica o crittografia asimmetrica.

La sicurezza delle reti e la crittografia dei dati C2 293


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La crittografia simmetrica
Nella crittografia simmetrica (detta anche “a chiave segreta” o “a chiave privata”) si utilizza
una sola chiave, detta cifrario, sia per cifrare sia per decifrare i messaggi. La chiave è conosciu-
ta sia al mittente sia al destinatario, pertanto dev’essere mantenuta segreta e condivisa. La
situazione è rappresentata nella seguente figura.

Messaggio M Messaggio M
“in chiaro” “in chiaro”
Cifratura Decifratura
con chiave C con chiave C

Sistema Sistema
mittente destinatario

Canale insicuro

Intruso informatico Messaggio M criptato

Usando una notazione matematica (dove Ec sta per Encryption, ovvero crittografia), possiamo
dire:

Sia M il messaggio da trasmettere e C la chiave di cifratura; l’algoritmo di cifratura sulla


chiave C è rappresentato dalla funzione Ec(). Allora applicando Ec() a M otteniamo Ec(M),
che rappresenta il messaggio cifrato.

Solo chi conosce C può decifrare (cioè applicare) la funzione inversa, che chiamiamo Ec–1() al
messaggio cifrato. Riassumendo:
M → (cifratura) → Ec(M) → (spedizione su canale insicuro)
→ (decifratura) Ec–1(Ec(M)) = M
Esempi di algoritmi di cifratura a chiave simmetrica sono DES, RCn e IDEA (con chiave a
128 bit).
La cifratura a chiave simmetrica è nata in ambienti militari, con organizzazioni ordinate ge-
rarchicamente in modo piramidale (ambienti che vedono le informazioni fluire dal vertice ver-
so la base): infatti, vi è un solo mittente del messaggio (il comando) e molti destinatari
che ricevono ordini e li eseguono.
I limiti di questa tecnica di crittografia sono riassunti nella segretezza della chia-
ve. Infatti, chi possiede la chiave di cifratura può sostituirsi facilmente al mit-
tente del messaggio, e chi possiede il cifrario può sostituirsi altrettanto facil-
mente al destinatario (per intercettare il messaggio).
Pensa a un ambiente come Internet. Per decifrare il messaggio, il destinata-
rio deve conoscere la chiave, e tale chiave dev’essere comunicata attraverso
un canale sicuro. Ma lo scopo della crittografia è proprio quello di creare un
canale sicuro; non possiamo quindi permetterci di inviare la chiave attra-
verso un canale insicuro. Si ricorre dunque ai sistemi di crittografia a chiave
asimmetrica.

294 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La crittografia asimmetrica
La crittografia asimmetrica è stata formulata per la prima volta da Diffie ed Hellman, due crit-
tografi statunitensi, nel 1976.

Nella crittografia asimmetrica esiste una coppia di chiavi asimmetriche: una chiave di-
retta e una inversa, legate da una relazione matematica.

In questo sistema di crittografia:


• è possibile utilizzare ciascuna chiave indifferentemente per cifrare o decifrare;
• la chiave utilizzata per cifrare un testo non può essere utilizzata per decifrarlo;
• la complessità computazionale per ottenere la chiave pubblica dalla privata è polinomiale;
• la complessità computazionale per ottenere la chiave privata dalla pubblica è esponenziale.
Chiunque voglia trasmettere un messaggio deve munirsi della coppia di chiavi asimmetriche,
utilizzando un programma per la loro generazione.
Una delle chiavi dev’essere resa pubblica depositandola, per esempio, su un registro di chiavi
pubbliche in un server Internet. Tale registro contiene una sola chiave (detta appunto chiave
pubblica) della coppia di chiavi asimmetriche, e non offre nessuna informazione che consenta
di ricostruire l’altra chiave della coppia (detta quindi chiave privata), che resta all’utente mit-
tente del messaggio.
Per comprendere meglio il processo di trasmissione, scomponiamolo in due schemi, in cui sia-
no presenti un mittente S (sorgente) e un destinatario D.
■ Schema 1: autenticazione del destinatario e riservatezza del messaggio. Con questo
primo schema, il mittente S vuole essere certo che il messaggio rimanga riservato, e venga
letto solo dal destinatario D. In questa fase, S preleva dal registro delle chiavi pubbliche la
chiave pubblica di D (public key D). Possiamo immaginare tale registro come una sorta
di elenco telefonico, in cui a ogni nome corrisponde una chiave pubblica. Quindi, D avrà
precedentemente generato la coppia di chiavi e avrà pubblicato la sua chiave pubblica.
Tale chiave pubblica verrà utilizzata da S per cifrare il messaggio M. Rappresentiamo tale
processo di cifratura con Epublic key D (M), ottenendo il messaggio criptato MC . Ora il messag-
gio cifrato può essere trasmesso da S, poiché solo la chiave privata di D può ricostruire il
messaggio originale. La riservatezza del messaggio e l’autenticazione del destinatario sono
garantite dal fatto che il solo D possiede l’altra chiave della coppia, ed è l’unico che può de-
cifrare il messaggio. La situazione è rappresentata nella seguente figura.

Messaggio M Chiave Messaggio M


“in chiaro” pubblica “in chiaro”
di D
Decifratura
Cifratura da parte di S da parte di D

Epublic key D(M) Eprivate key D(MC)


Sistema Sistema
mittente S destinatario D

Canale insicuro

Messaggio criptato MC

La sicurezza delle reti e la crittografia dei dati C2 295


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Schema 2: autenticazione della sorgente. Nella fase precedente, il mittente S è certo che
solo il destinatario D potrà leggere il messaggio. Ma D non è ancora certo che il messaggio
sia stato spedito proprio da S, poiché la chiave di quest’ultimo è pubblica, e chiunque può
cifrare un messaggio e spedirglielo. Supponiamo ora, per semplicità, che S debba inviare a
D un messaggio che non debba rimanere riservato, ma che dev’essere attribuito con sicu-
rezza alla sorgente S. Per fornire a D la certezza che il messaggio inviato provenga proprio
da S, la sorgente deve cifrare il messaggio con la propria chiave privata prima di trasmet-
terlo. In questo modo, infatti, la destinazione D potrà leggere il messaggio solo attraverso la
chiave pubblica di S (e, quindi, essere certo che provenga da S). Ovviamente, chiunque sarà
in grado di decifrare il messaggio utilizzando la chiave pubblica di S, ma abbiamo imma-
ginato per semplicità che il messaggio non fosse riservato. La situazione è rappresentata
nella seguente figura.

Messaggio M Chiave Messaggio M


non riservato “in chiaro” pubblica non riservato“ in chiaro”
di D
Cifratura da parte di S Decifratura da parte di D

Eprivate key S(M) Epublic key S(MC)


Sistema Sistema
mittente S destinatario D

Canale insicuro

Messaggio criptato MC

A questo punto, abbiamo visto i due schemi che consentono di:


• assicurare l’autenticazione della sorgente (cioè la certezza sulla provenienza del messag-
gio);
• assicurare l’autenticazione del destinatario (certezza sulla destinazione del messaggio);
• assicurare la riservatezza delle informazioni contenute.

■ Schema 3: Segretezza e autenticazione. Un terzo schema è necessario per ottenere con-


temporaneamente i fini citati. Per fornire a D la riservatezza delle informazioni, S utilizza
la chiave pubblica di D per cifrare il messaggio (come abbiamo visto nel primo schema), ga-
rantendo inoltre l’autenticazione del destinatario D. Successivamente, S utilizza la propria
chiave privata per cifrare il messaggio così ottenuto (quindi il messaggio viene cifrato una
seconda volta). In questo modo D potrà leggere dal registro delle chiavi la chiave pubblica
di S, e decifrare una prima volta il messaggio, in modo da attribuirlo con certezza a S (come
abbiamo visto nel secondo schema). Infatti, D avrà la certezza che solo S avrà cifrato quel
messaggio, in quanto è l’unico che possiede la chiave privata associata alla chiave pubbli-
cata nel registro. Decifrandolo un’altra volta con la sua chiave privata, D otterrà infine il
messaggio “in chiaro”. Il tutto è illustrato nella seguente figura.

296 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Messaggio M “in chiaro” Messaggio M “in chiaro”

D
ra da ecifr
a tu
cif
r E pa atu
Sistema r te ra Sistema
da di S )=M C C
pr
iva
mittente S n te di destinatario D
co r te M C ke
yD (
M D
Se pa y D(
da blic ke C =M
C )
Prima cifratura Seconda
da parte di S E pu C decifratura
Eprivate key S(M)=MC da parte di D
Messaggio Epublic key S(MC)=M
criptato MC
Chiave pubblica di D
Chiave pubblica di S

Ricordiamo che, per come è stato concepito il metodo di crittografia a chiave asimmetrica, il
messaggio non è ripudiabile da parte del mittente (firmatario). Quindi il sistema garantisce:
• l’inviolabilità del messaggio (riservatezza);
• l’effettiva provenienza del messaggio da chi appare come mittente (autenticazione del
mittente);
• la garanzia che il messaggio sia ricevuto solo dal destinatario (autenticazione del desti-
natario).
Esempi di algoritmi di cifratura a chiave asimmetrica sono RSA, Diffie-Hellman, ElGamal, cur-
ve ellittiche e altri ancora.

5 La firma digitale
I principi di crittografia, precedentemente illustrati, vengono applicati alla generazione e alla
gestione della firma elettronica (detta anche firma digitale).
Vediamo in che cosa consiste la generazione della firma digitale di un qualsiasi documento
che, per esempio, si deve trasferire su Internet.
■ Il primo passo consiste nel generare, con una funzione detta one-way hash, un riassunto
del contenuto del messaggio in una stringa di lunghezza relativamente limitata, detta an-
che impronta digitale (o fingerprint). Queste funzioni sono state pensate in modo che
ogni cambiamento nel messaggio si rifletta sul valore di tale stringa. In genere, sono utiliz-
zate stringhe di 128 bit o multipli.
■ Il secondo passo è quello di crittografare l’impronta digitale, utilizzando un algoritmo
a chiave asimmetrica e la chiave privata del mittente (in modo che possa essere decritto-
grafata con la chiave pubblica del mittente). Si ottiene così la firma digitale del mittente
(relativamente al messaggio inviato).
■ La firma elettronica viene allegata in calce al messaggio (che non è stato crittografato) e il
messaggio viene spedito.
■ Il destinatario, ricevuto il messaggio e la firma elettronica, decrittografa quest’ultima con
la chiave pubblica del mittente, riottenendo l’impronta digitale originale.

La sicurezza delle reti e la crittografia dei dati C2 297


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ A questo punto il destinatario confronta tale impronta digitale con quella che calcolerà in
modo autonomo, sempre con una funzione one-way hash.
■ Se le due impronte digitali corrispondono, il destinatario sarà sicuro che:
• il messaggio non è stato manomesso (integrità);
• chi ha spedito il messaggio è veramente chi dice di essere, perché è la sola persona che
conosce la chiave privata corrispondente alla chiave pubblica con cui il destinatario ha
decrittografato il messaggio (autenticazione del mittente);
• se, come abbiamo visto, il mittente è la sola persona che ha potuto “firmare” il messag-
gio, egli non potrà ripudiare quanto firmato (non ripudio del mittente).

La situazione è rappresentata nella seguente figura.


6.
1. Se ID(M) = IS(M),
S genera messaggio integro
M → IS(M) e non ripudio del mittente
Messaggio M “in chiaro” Messaggio M “in chiaro”
5.
D genera
M → ID(M)

Sistema mittente S 4 Sistema destinatario D


I( .
))
S (M

S M
)=
(I

E
S
y
ke

pu
te

bli
iva

ck
pr
E

ey
(I
M .

S
3
+

2. S (M
Eprivate key S(IS(M)) ))

Messaggio Chiave pubblica di D


criptato MC Chiave pubblica di S

In questo modo il messaggio è comunque spedito “in chiaro”. Infatti, ciò che interessa alla
firma elettronica è l’autenticazione, il non ripudio del mittente e l’integrità del messaggio. Per
garantire anche la riservatezza, dobbiamo ricorrere a un’altra crittografia del messaggio più la
firma effettuata dal mittente con la chiave pubblica del destinatario.

Validità della firma digitale


L’ordinamento giuridico italiano, è stato uno dei primi al mondo a dare rilevanza giuridica al
documento informatico.
L’Art. 15 della Legge n. 59 del 15 marzo 1997 (nota come Legge Bassanini 1) ha introdotto
nell’ordinamento giuridico italiano principi e criteri di eccezionale importanza riguardo al
trattamento di atti e documenti in formato digitale.
Il passaggio più importante di questa Legge è il seguente:
«Gli atti, dati e documenti formati dalla pubblica amministrazione e dai privati con strumenti
informatici o telematici, i contratti stipulati nelle medesime forme, nonché la loro archiviazione e
trasmissione con strumenti informatici, sono validi e rilevanti a tutti gli effetti di legge».

298 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il metodo di cifratura a chiave asimmetrica, con autenticazione del mittente e del destinatario,
aiuta a comprendere il significato dell’Art. 8 del regolamento attuativo della Legge Bassanini 1,
che recita:
«Chiunque intenda utilizzare un sistema di chiavi asimmetriche di cifratura con gli effetti di cui
all’Articolo 2 deve munirsi di una idonea coppia di chiavi e rendere pubblica una di esse mediante
la procedura di certificazione».
Ciò significa che, una volta risolto il problema dell’identificazione dell’autore, con l’adozione
della firma digitale, un atto o documento, realizzato su supporti informatici, ha il valore di
atto originale, al quale la Legge attribuisce piena efficacia giuridica. Risulta evidente che, ai
fini del funzionamento dell’intero sistema della firma digitale, è di fondamentale importanza
l’identificazione di chi effettua il deposito delle chiavi nel loro registro; tale processo prende il
nome di certificazione.
Nella tabella che segue vengono confrontati i due tipi di firma: autografa e digitale (come pos-
siamo vedere, la firma digitale per molti aspetti risulta addirittura più attendibile).

Firma autografa Firma digitale


Autentica il supporto Autentica il testo
Consente la verifica a vista Consente la verifica con hardware e software del grafologo
adeguati
Dura nel tempo Dura se hardware e software sono stati organizzati
Il notaio rende le copie autentiche Tutte le copie sono identiche, e quindi autentiche
Il notaio autentica le firme remote multiple Le firme remote multiple dipendono da hardware e software
È falsificabile Non è falsificabile
La firma è ripudiabile La firma non è ripudiabile

La normativa in materia di firma digitale è stata ulteriormente aggiornata con il DPR n. 445 del
28 dicembre 2000, meglio noto come TUDA (Testo Unico sulla Documentazione Amministrativa).
Il TUDA, tra l’altro:
• dà una nuova definizione di documento informatico;
• stabilisce che le regole tecniche per la formazione, trasmissione, conservazione, duplicazio-
ne, riproduzione, validazione (anche temporale) dei documenti informatici siano aggior-
nate almeno ogni due anni, con Decreto del Presidente del Consiglio dei Ministri (DPCM);
• attribuisce al documento informatico (redatto in conformità con le regole tecniche stabili-
te dal DPCM del punto precedente) la stessa validità di riproduzione meccanica (fotocopia
o fotografia) o di scritture private.

6 Firma digitale, certificatori e certificati


Un altro aggiornamento si è avuto con il D.lgs. n. 82 del 7 marzo 2005, meglio noto come codice
dell’amministrazione digitale, che ha come principale obiettivo quello di realizzare una to-
tale riorganizzazione della pubblica amministrazione nell’utilizzazione degli strumenti infor-
matici e telematici, in particolare, nello svolgimento dell’attività amministrativa nei rapporti
con i cittadini, con le imprese e con le altre amministrazioni pubbliche.
Tale codice, tra l’altro, detta nuove regole in materia di documentazione informatica e firma
digitale.

La sicurezza delle reti e la crittografia dei dati C2 299


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

In particolare, distingue la firma digitale in:


• firma elettronica
• firma elettronica avanzata
• firma elettronica qualificata
• firma digitale.
■ La firma elettronica, nel codice dell’amministrazione digitale, è definita come: “l’insieme
dei dati in forma elettronica, allegati oppure connessi tramite associazione logica ad altri
documenti elettronici, utilizzati come metodo di autenticazione informatica”.
■ La firma elettronica avanzata, nel codice dell’amministrazione digitale, è definita come:
“insieme di dati in forma elettronica allegati oppure connessi a un documento informatico
che consentono l’identificazione del firmatario del documento e garantiscono la connessione
univoca al firmatario, creati con mezzi sui quali il firmatario può conservare un controllo
esclusivo, collegati ai dati ai quali detta firma si riferisce in modo da consentire di rilevare se
i dati stessi siano stati successivamente modificati”.
■ La firma elettronica qualificata, nel codice dell’amministrazione digitale, è definita come:
«la firma elettronica ottenuta attraverso una procedura informatica che garantisce la connes-
sione univoca al firmatario e la sua univoca autenticazione informatica, creata con mezzi sui
quali il firmatario può conservare un controllo esclusivo e collegarla ai dati ai quali si riferisce
in modo da consentire di rilevare se i dati stessi siano stati successivamente modificati, che sia
basata su un certificato qualificato e realizzata mediante un dispositivo sicuro per la creazione
della firma, quale l’apparato strumentale usato per la creazione della firma elettronica».
■ La firma digitale, infine, è definita come: «un particolare tipo di firma elettronica quali-
ficata basata su un sistema di chiavi crittografiche, una pubblica e l’altra privata, correlate
tra loro, che consente al titolare tramite la chiave privata e al destinatario tramite la chiave
pubblica, rispettivamente, di rendere manifesta e di verificare la provenienza e l’integrità di
un documento informatico o di un insieme di documenti informatici».
Il valore legale (probatorio) di un documento informatico, sottoscritto con firma elettronica
non qualificata, è rimesso alla valutazione del giudice.
Il valore legale (probatorio) di un documento informatico, con firma elettronica qualificata o
firma digitale, è quello della normale scrittura privata (Art. 1702 del Codice Civile).

Il codice, tra l’altro:


• stabilisce le regole tecniche per la firma digitale;
• introduce nell’ordinamento giuridico il diritto del cittadino di utilizzare tecnologie telema-
tiche per comunicare con la pubblica amministrazione;
• garantisce l’interoperabilità tra i sistemi informatici delle pubbliche amministrazioni;
• attribuisce al Presidente del Consiglio dei Ministri (o a un ministro da lui delegato, il Mi-
nistro per la pubblica amministrazione e l’innovazione) compiti in materia di innovazione
e tecnologia, per la promozione e lo sviluppo della società dell’informazione (che si occu-
pa dello sviluppo e dell’impiego delle tecnologie informatiche e telematiche nell’economia,
nella pubblica amministrazione e nelle famiglie);
• istituisce la conferenza permanente dell’innovazione tecnologica, che ha il compito di
fornire consulenza al Presidente del Consiglio (o al ministro delegato per l’innovazione e
le tecnologie) in materia di sviluppo e attuazione di innovazione tecnologica. Ha, anche, il
compito di verificare lo stato di attuazione dei programmi in materia di innovazione tecno-
logica e del piano triennale, predisposto dal CNIPA (vedi il paragrafo successivo).

300 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Certificatori e certificati
Il sistema di cifratura a chiave asimmetrica funziona, a patto che la chiave pubblica sia certi-
ficata quale originale e che la coppia di chiavi (pubblica e privata) sia di lunghezza adeguata,
in modo che, data una chiave della coppia, sia pressoché impossibile risalire all’altra chiave.
Oggi, le lunghezze delle chiavi vanno da 128 a 512 bit, garantendo una buona robustezza com-
putazionale sulla base delle potenze di calcolo attualmente disponibili.
Il deposito della chiave pubblica dev’essere effettuato presso un soggetto in grado di assicurare
la corretta manutenzione del registro di chiavi pubbliche, e di garantire l’accesso telematico a
tale registro. Tale ente prende il nome di ente certificatore o Certification Authority.
L’Art. 8 della Legge 59/97 stabilisce che le attività di certificazione devono essere effettuate da
certificatori inclusi in un apposito elenco pubblico, consultabile online, predisposto a cura
dell’Autorità per l’Informatica nella Pubblica Amministrazione (AIPA).
La richiesta di certificazione deve contenere, oltre ai dati personali dell’utente, anche la chiave
pubblica da lui generata.
L’AIPA con il D.lgs. 196/2003 (nuovo codice in materia di protezione dei dati personali) è stata
trasformata in CNIPA (Centro Nazionale per l'Informatica nella Pubblica Amministrazione). Il
CNIPA è una struttura di supporto per l’utilizzo dell’informatica nell’attività della pubblica
amministrazione, con la finalità di migliorare la qualità dei servizi e di ridurne i costi di gestio-
ne. Dal 2012, il CNIPA è stato sostituito dall'Agenzia per l'Italia Digitale (AgID). I compiti più
importanti dell’(AgID) sono:
• fornire consulenza sull’adozione di normative nel settore informatico;
• emanare norme e criteri per la realizzazione e la gestione dei sistemi informatici nelle pub-
bliche amministrazioni (attraverso un piano triennale che detta le linee strategiche per il
miglioramento dei servizi: maggiore trasparenza, riduzione dei costi ecc.);
• definire criteri e regole per la sicurezza e l’interoperabilità dei sistemi informatici;
• curare la formazione e l’aggiornamento dei dipendenti pubblici nel settore informatico.

Con opportuni
programmi produce Chiave privata
una coppia di chiavi
Custodia
Utente chiave privata
Chiave pubblica
Consulta elenco
AgID certificatori presso AgID
e sceglie un certificatore Certification
Authority
Richiesta di
certificazione
Effettua richiesta Inserisce la chiave
di certificazione pubblica dell’utente
Elenco all’ente scelto
dei certificatori nel registro e invia
all’utente il certificato

Utilizza i certificati
per crittografare Certificato
Posta
elettronica Collegamenti Elenco delle
sicuri attraverso chiavi pubbliche
il browser

La sicurezza delle reti e la crittografia dei dati C2 301


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

7 Sistemi di sicurezza nelle reti


Una rete necessita di particolare attenzione riguardo a tre aspetti fondamentali:
• conservazione e integrità dei propri dati interni;
• difesa da attacchi e intrusioni esterne;
• ottimizzazione e controllo delle connessioni effettuate.

Backup
Per ogni azienda dotata di un sistema informatico, anche di piccole dimensioni, la perdita di
dati (per qualunque causa) si trasforma in un danno economico. La protezione dei dati e il
tempo di ripristino degli stessi, diventano addirittura vitali nelle aziende che dipendono di-
rettamente dalla struttura informatica. L’operazione da effettuare è il backup, un processo
che prevede la realizzazione di una copia di sicurezza dei dati. Il backup dev’essere una prassi
per l’azienda, svolta in maniera periodica o addirittura giornalmente. Fortunatamente, questo
avviene in maniera del tutto automatica, previa configurazione di semplici regole.
Le filosofie del backup all’interno della rete aziendale sono due:
• backup in locale
• backup in remoto.

■ La prima prevede che la copia dei dati, di ogni singolo computer della rete, venga eseguita
sul computer stesso, dotato di hardware adeguato, che consenta la scrittura simultanea su
due differenti hard disk. Il mirroring (copia a specchio) ha lo svantaggio di richiedere una
soluzione più costosa, in quanto ogni macchina dev’essere dotata dell’hardware necessa-
rio e inoltre, in presenza di virus, il sistema riporterebbe gli stessi dati corrotti anche sul
secondo hard disk, non garantendone il recupero.
■ Nella seconda filosofia, le procedure di backup sono gestite da un dispositivo dedicato e
autonomo collocato all’interno della rete aziendale, che coordina le operazioni di archivia-
zione dati dei terminali attraverso la connessione di rete. Un NAS (Network Attached Sto-
rage) è un dispositivo che ha il compito di immagazzinare i dati dei computer della rete. Il
vantaggio è che si tratta di un servizio centralizzato, non richiede hardware aggiuntivo sui
singoli computer, e prevede un unico dispositivo da gestire e controllare. Di contro, però, il
guasto o il malfunzionamento di un NAS provocherebbe la perdita di tutti i dati della rete.

Firewall
Il termine firewall (letteralmente “parete tagliafuoco”) è l’incarnazione moderna del fossato
pieno d’acqua e del ponte levatoio che proteggevano gli antichi castelli. Il principio è lo stesso:
costringere il passaggio di tutto ciò che transita (esseri umani nell’antichità, traffico di rete
oggi) attraverso un unico punto di ingresso e uscita, dove si provvede a effettuare gli opportuni
controlli.
La sicurezza perimetrale provvede alla protezione della rete nei punti in cui essa è a contatto
con il mondo esterno. In base al tipo di traffico e alla funzione, si identificano diverse zone. Nei
casi più semplici le uniche due zone, LAN e WAN, sono attestate sui due lati del firewall.
Il lato LAN è il segmento privato e protetto a cui appartengono tutti gli host e i server, i cui
servizi sono riservati all’uso interno. La zona WAN è la parte esterna, a cui appartengono uno
o più apparati di routing che sostengono il traffico da e per la rete locale sia verso Internet, sia
verso eventuali sedi remote dell’azienda.

302 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Internet Firewall Rete interna

Sui firewall vengono eseguiti particolari programmi che esaminano tutti i messaggi in transito
e decidono se lasciarli passare o fermarli. Tipicamente, vengono lasciati entrare nella zona pro-
tetta soltanto i messaggi provenienti da persone o computer autorizzati. Non appena l’archi-
tettura della rete comincia a evolversi, tuttavia, ci si trova nella necessità di esporre all’esterno
della rete alcuni servizi. Il caso più comune è quello di un server web dove l’azienda pubblica il
suo sito, o quello di un server di posta per la gestione delle e-mail dei dipendenti.
I server appena citati fanno parte della rete interna aziendale, ma entrambi hanno bisogno di
interfacciarsi con la rete WAN. In questi casi, è fortemente consigliata la creazione di una terza
zona detta DMZ (De-Militarized Zone). Tale configurazione viene normalmente utilizzata per
permettere, ai server posizionati nella DMZ, di fornire servizi all’esterno, senza compromette-
re la sicurezza della rete aziendale interna, nel caso in cui una di tali macchine sia sottoposta
a un attacco informatico: per chi si connette dall’esterno dell’organizzazione, infatti, la DMZ è
una sorta di strada “senza uscita” o “vicolo cieco”. È un’area in cui sia il traffico WAN sia quello
LAN sono fortemente limitati e controllati.

NAS
DMZ

Router
Rete locale Firewall Internet

Proxy
Quando ogni singolo computer della rete interna accede alla rete WAN, si instaura un dialogo
diretto, fatto di richieste da una parte e risposte dall’altra. Supponiamo che tutti i computer
di una LAN abbiano l’esigenza di collegarsi alla stessa pagina di un sito; ogni computer effet-
tuerà la richiesta per proprio conto, e dalla rete esterna si riceveranno altrettante risposte: in
definitiva, la stessa identica informazione viene ricevuta più volte. La soluzione per ovviare
a questo problema consiste nell’interfacciare la rete interna e quella esterna attraverso un
proxy server, il quale si fa carico di effettuare le richieste per conto di tutti i computer della
rete, ricevere la risposta e indirizzarla al richiedente. Nel momento in cui un altro computer
effettua la stessa richiesta, il proxy non ha più la necessità di andarla a reperire all’esterno:

La sicurezza delle reti e la crittografia dei dati C2 303


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

poiché è ancora disponibile nella sua cache (memoria interna del


Quando si naviga su Internet
proxy), la invia immediatamente al richiedente. attraverso un browser, le
I passi necessari per instaurare una comunicazione sono i seguenti. pagine web, ma anche i
file e le immagini visitate
• Il client effettua una richiesta verso una risorsa esterna. dagli utenti, sono registrati
• Il proxy intercetta la richiesta ed, eventualmente, richiede l’au- in una zona dell’hard disk
tenticazione dell’utente. detta memoria cache, che
consente di velocizzare la
• Se l’utente viene autenticato come fidato, il server proxy richiede visualizzazione delle pagine
la risorsa verso l’esterno. visitate più frequentemente
• Il server proxy crea, quindi, una seconda connessione TCP/IP tra o appena visitate, poiché
sé e la macchina esterna. tali pagine potranno essere
aperte da questa memoria e
• Il server proxy riceve le informazioni da una delle due connessio- non dal Web.
ni e le trasferisce all’altra, secondo le politiche di sicurezza adot-
tate.
Un server proxy può essere utilizzato, dall’amministratore della rete, per concedere o negare
delle richieste ai client. Mentre limitare l’accesso a specifici siti diviene un’operazione laboriosa
se effettuata su ogni singolo computer, la regola da applicare al proxy risolve il problema in
modo rapido ed efficace.

Azienda
Application gateway
Server Proxy
1

4 3 Nodo
interno

Nodo esterno Utente


Regole
Internet 5 5 interno

304 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME C2
LA SICUREZZA DELLE RETI
E LA CRITTOGRAFIA DEI DATI AUDIO

Il concetto di sicurezza propriamente detti, worm, trojan o cavalli di


Un sistema informatico si definisce sicuro Troia, backdoor.
se salvaguarda cinque aspetti fondamentali:
La crittografia simmetrica e la crittografia
confidenzialità o riservatezza (rende i dati asimmetrica
accessibili ai soli destinatari), integrità dei La crittografia è una branca della matematica
dati (rende i dati incorruttibili), disponibilità che studia i metodi per trasformare un messaggio
o affidabilità dei dati (rende i dati sempre in modo da renderlo visibile solo a un ristretto
disponibili agli utenti), autenticazione (rende gruppo di persone. Le due tecniche di crittografia
la sorgente, la destinazione e il contenuto certi), oggi più utilizzate in Internet sono la crittografia
non ripudio (rende l’invio e la ricezione dei dati simmetrica o a chiave privata e la crittografia
innegabili). asimmetrica o a chiave pubblica.
La legge tutela la sicurezza informatica.
Se il gestore di un sistema informatico non La firma digitale
garantisce gli aspetti indicati, può essere chiamato La firma digitale (o firma elettronica) si avvale
a risarcire il danno causato. Chi accede in modo della crittografia asimmetrica.
non autorizzato a un sistema informatico compie La normativa relativa alla firma digitale è stata
un atto che la legge equipara alla violazione introdotta con la Legge Bassanini 1 nel 1997,
di domicilio. La copiatura di dati e programmi aggiornata nel 2000 con il DPR TUDA e nel 2005
si può configurare, invece, come furto o con il codice dell’amministrazione digitale.
violazione del diritto d’autore. Quest’ultimo distingue la firma digitale in firma
elettronica, firma elettronica avanzata, firma
La sicurezza dei dati in rete elettronica qualificata e firma digitale.
In informatica, con il termine attacco si intende
qualsiasi atto accidentale o intenzionale Sistemi di sicurezza nelle reti
che sovverta le misure di sicurezza di un sistema Per garantire la conservazione e l’integrità dei dati
informatico. Un attacco può essere portato sia da interni, le reti ricorrono al processo di backup.
un agente umano, sia da un agente non umano: Per garantire la difesa da attacchi e intrusioni
se l’agente può violare tutti gli aspetti relativi alla esterne, ricorrono a un firewall, cioè a un
sistema di protezione (hardware o software) che,
sicurezza è considerato attivo; se può violare solo
utilizzando un certo insieme di regole, permette
la riservatezza è considerato passivo.
di filtrare ed eventualmente bloccare tutto il
Protezione dagli attacchi traffico da e verso una qualsiasi rete di computer.
I programmi (o parti di programmi) che riescono Per ottimizzare e controllare le connessioni
a introdursi in un sistema informatico all’insaputa effettuate, le reti ricorrono a un proxy server, il
degli utenti, compiendo operazioni dannose, quale si fa carico di effettuare le richieste per conto
si chiamano codici malefici o malware (malicious di tutti i computer della rete, ricevere la risposta e
software). I codici malefici sono di vari tipi: virus indirizzarla al richiedente.

La sicurezza delle reti e la crittografia dei dati C2 305


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME C2
MAPPA
MODIFICABILE

SICUREZZA
DELLE RETI

SISTEMI ATTACCO ALLA CRITTOGRAFIA


se subiscono
INFORMATICI SICUREZZA DEI DATI

sono sicuri accesso non


se garantiscono autorizzato

allora
• riservatezza
• integrità
• affidabilità
violazione
• autenticazione
di domicilio
• non ripudio

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime due domande (quelle in nero) sono già inserite nella mappa.
1) A quali condizioni un sistema informatico è definito sicuro?
2) Com’è considerato sul piano giuridico un accesso non autorizzato a un sistema informatico?
3) Gli attacchi alla sicurezza dei sistemi informatici possono essere compiuti solo da agenti umani
o anche da agenti non umani?
4) Gli agenti non umani e quelli umani di attacchi informatici possono essere solo attivi o anche passivi?
5) Come si chiamano i programmi (o le parti di programmi) capaci di introdursi in un sistema informatico
compiendo operazioni dannose?
6) Quali sono i principali tipi di malware?
7) Che cos’è la crittografia?
8) Quali sono le due principali tecniche di crittografia?
9) Su che tecnica crittografica si basa la firma digitale?
10) Quali sono i tre principali sistemi di protezione di cui dispongono i sistemi informatici?

306 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo C2
1. Che cosa si intende con sicurezza di un sistema 14. Quali tipi di virus influenzano l’azione del master
informatico? boot record?

2. In che cosa consiste il concetto giuridico 15. Quali operazioni svolgono i virus polimorfici?
di sicurezza informatica?
16. Quali sono le finalità per cui sono stati progettati
3. A quale aspetto attiene l’impossibilità di i codici malefici?
accedere a dei dati pur avendone il permesso?
A Affidabilità
17. Qual è la differenza tra worm e trojan?

B Integrità 18. Qual è la caratteristica dei virus polimorfici?


C Riservatezza
D Autenticazione 19. Che cosa si intende con la sigla TSR riferita
E Non ripudio ai virus?

4. Quali tra i seguenti sono esempi di violazione


20. In che cosa consiste la crittografia?
del non ripudio?
21. Qual è la differenza tra la crittografia simmetrica
A Carta intestata falsa e quella asimmetrica?
B Firma falsa
C Falsa e-mail 22. Descrivi il codice di Cesare.
D Falsa password 23. Nella crittografia simmetrica:

5. Parlando di attacco informatico, chi sono A si utilizzano più chiavi


gli agenti passivi e quelli attivi? B si utilizza una sola chiave, detta cifrario
C con un’unica chiave si possono cifrare e decifrare
6. La protezione dei dati, realizzata in modo i messaggi
da evitare la loro corruzione, riguarda l’aspetto
D la chiave è conosciuta sia al mittente sia al
della:
destinatario, pertanto dev’essere mantenuta
A affidabilità segreta e condivisa
B integrità
C riservatezza
24. Nel metodo di crittografia a chiave asimmetrica,
il messaggio non è ripudiabile da parte
D autenticazione del mittente. Che cosa consente ciò?
E non ripudio
25. In che cosa consiste la firma digitale?
7. Quando un sistema informatico si definisce
sicuro? 26. Qual è la funzione del TUDA?

8. Qual è la differenza tra hacker e cracker? 27. Quali nuove regole detta il codice
dell’amministrazione digitale?
9. In che cosa consiste lo sniffing?
28. Quando si desidera evitare che ogni singolo
10. Che cos’è lo sniffer? computer della LAN acceda a Internet si utilizza:
A Un router
11. In che cosa consiste lo spoofing?
B Un proxy
12. Che cosa sono le backdoor? C Un computer dedicato
D Un web server
13. Descrivi il concetto di sicurezza relativo
a un sistema informatico

La sicurezza delle reti e la crittografia dei dati C2 307


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

29. Il firewall: 36. Un proxy server:


A costringe il passaggio di tutto ciò che transita a riduce il traffico di rete V F
attraverso un unico punto di ingresso, dove b aumenta i tempi di attesa delle richieste V F
si provvede a effettuare gli opportuni controlli
B costringe il passaggio di tutto ciò che transita 37. Completa le seguenti frasi (scegli fra i termini
attraverso un unico punto di uscita, dove elencati di seguito):
si provvede a effettuare gli opportuni controlli
Un ______________ può immagazzinare
C costringe il passaggio di tutto ciò che transita per un certo tempo i risultati delle ______________
attraverso un unico punto di ingresso e uscita, di un utente, e se un altro utente effettua
dove si provvede a effettuare gli opportuni controlli le stesse richieste può rispondere senza
D costringe il passaggio di tutto ciò che transita dover consultare il ______________ originale.
attraverso un punto di ingresso e uno di uscita, Collocando il proxy in una ______________ “vicina”
dove si provvede a effettuare gli opportuni controlli agli utenti, si permette un miglioramento delle
prestazioni e una riduzione del consumo
30. Descrivi le principali funzionalità del firewall. di ______________ di banda.
(richieste, ampiezza, proxy, posizione, server)
31. Evidenzia le differenze tra un firewall e un proxy.
38. Completa le affermazioni seguenti inserendo
32. Il backup si occupa di: il termine appropriato:
a aumentare la velocità di connessione V F • I certificati vengono realizzati con chiave
b effettuare le copie dei dati V F (simmetrica/asimmetrica).
c migliorare le prestazioni dei sistemi aziendali V F • La firma digitale utilizza la chiave
(simmetrica/asimmetrica).
d bloccare eventuali intrusioni V F
• La crittografia a chiave privata è
(simmetrica/asimmetrica).
33. Il mirroring prevede:
• La crittografia asimmetrica è
a una gestione centralizzata V F (a chiave pubblica/privata).
b un potenziamento dei computer V F
c un rallentamento della velocità della V F 39. Un utente A invia un documento alla propria
connessione banca B, ma vuole farlo in modo sicuro:
d una doppia scrittura su volumi differenti V F A A cifra il documento con la chiave pubblica di B
B A cifra il documento con la chiave privata di B
34. Il NAS è un dispositivo per:
C A cifra il documento con la propria chiave pubblica
A elaborare applicazioni in remoto D B decifra il documento con la chiave privata di A
B conservare dati
C collegarsi con la rete WAN 40. Un utente A intende ricevere un documento
D una gestione centralizzata del backup riservato dalla banca B:
A B cifra il documento con la propria chiave pubblica
35. Una DMZ viene creata per: B B cifra il documento con la propria chiave privata
A contenere i server aziendali C B cifra il documento con la chiave pubblica di A
B limitare il traffico di rete D B cifra il documento con la chiave privata di A
C filtrare gli accessi
D conservare dati condivisi

308 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE C2
41. • Utilizzando il cifrario di Cesare, cripta 53. •• Installa sul tuo pc un software per la
il seguente testo utilizzando la chiave k = 3 generazione delle chiavi (pubblica e privata),
UTILIZZIAMO IL CODICE DI CESARE comunica la tua chiave pubblica ai tuoi compagni
e invia un messaggio cifrato con la tua chiave
42. • Utilizzando il cifrario di Cesare, cripta privata. Avrai così ottenuto una comunicazione
il seguente testo utilizzando la chiave k = 6 sicura basata su chiave asimmetrica.
SIAMO PRONTI PER PARTIRE 54. •• Verifica la presenza di un firewall all’interno
del tuo sistema operativo. Imposta, quindi,
43. • Utilizzando il cifrario di Cesare, cripta le seguenti regole:
il seguente testo utilizzando la chiave k = 12
• consenti tutte le connessioni in uscita
MAYDAY RELAY per il browser
• consenti tutte le connessioni in ingresso
44. • Utilizzando il cifrario di Cesare, cripta per il programma di antivirus
il seguente testo utilizzando la chiave k = 9
• blocca tutte le connessioni in ingresso
ZDNBCXRUARBDUCJCX per la porta 8000
• blocca tutte le connessioni in uscita
45. • Decritta il seguente testo, cifrato con il cifrario per il protocollo PGM per tutti gli indirizzi IP
di Cesare con chiave k = 5:
RFHMJGJQQFLNTWSFYFINXTQJ
55. •• All’interno di un foglio di calcolo simula
la trasmissione (cifratura e decifratura) della
46. • Decritta il seguente testo, cifrato con il cifrario parola “segreto” utilizzando un tuo algoritmo
di Cesare con chiave k = 6: di cifratura a chiave simmetrica.

GTJOGSUGRIOTKSG Suggerimento: utilizza la conversione ASCII


del carattere.
47. • Decritta il seguente testo, cifrato con il cifrario
di Cesare con chiave k = 12: 56. •• Realizza attraverso un foglio di calcolo
il cifrario di Cesare.
BDAZFUBQDXQEMYQ
Suggerimento: utilizza la conversione ASCII
48. • Decritta il seguente testo, cifrato con il cifrario e imposta una carattere in ogni singola cella
di Cesare con chiave k = 7:
57. ••• Attività da svolgere insieme alla classe
PHTHUPAHSPHUZABKLUA in laboratorio. Installate un proxy server su
una macchina connessa a Internet. Realizzate
49. • Verifica il livello di risorse assorbite dal una rete interna del laboratorio evitando la
tuo antivirus in termini di memoria occupata connessione diretta a Internet da parte dei pc.
e utilizzo della CPU. Garantite la connessione dei pc al server proxy
in modo che tutte le connessioni attraversino il
50. • Imposta il tuo antivirus in modo da effettuare server proxy. Attivate e disattivate il server proxy
una scansione completa del tuo pc il 15 di ogni in modo da vericare la presenza o meno della
mese alle ore 20:00. connessione a Internet.

51. • Verifica la presenza di certificati digitali 58. ••• All’interno di un foglio di calcolo simula
all’interno del tuo browser, individua la data la trasmissione (cifratura e decifratura) della
di emissione e quella di scadenza. parola “riservatezza” utilizzando un tuo algoritmo
di cifratura a chiave asimmetrica.
52. • Verifica la presenza di un firewall all’interno del
tuo sistema operativo; in caso positivo, riscontra Suggerimento: utilizza la conversione ASCII
eventuali azioni intraprese per difendere il tuo pc. del carattere.

La sicurezza delle reti e la crittografia dei dati C2 309


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

CLIL ASCOLTA
LA PRONUNCIA
GLOSSARIO
CLIL

Creating a thinking computer AUDIO

The activities and capabilities of Artificial Intelligence


include: Focus
• machine learning: useful in contexts such as the game
of chess; Chomsky's grammars and
• knowledge representation and automated reasoning automatic analysis of natural
in a manner similar to that done by the human mind; language
• planning; Automatic processing of natural
• cooperation between intelligent agents, both software language is inspired by the
and hardware (robots); linguistic theory of Noam
• natural language processing; Chomsky.
• the simulation of vision and interpretation of images, According to Chomsky, the
as in the case of OCR or facial recognition. capacity of every human being
to understand and produce sentences and speeches
The question central to the debate about artificial in his language is due to a body of knowledge in his
intelligence is basically: “Can computers think?” The answers mind: we call this set of implicit knowledge linguistic
are varied and discordant, but in order for them to make competence.
sense we must first determine what it means to think. This competence is at least partly unconscious: in
Ironically, despite the fact that everyone agrees that humans fact most people are able to produce and understand
are intelligent, no one has yet succeeded in producing correct sentences, as well as immediately identify
a satisfactory definition for intelligence; precisely for this incorrect use of their language, even without knowing
reason, the study of AI is divided into two categories: the way in which this occurs. Furthermore, it must be
innate: there is no other way to explain the speed with
• the first, called “strong AI”, supported by the
which a child can speak a language in a substantially
functionalists, holds that a properly programmed
correct manner in just a few years simply by imitating
computer can really be endowed with pure intelligence,
those around him.
that would not be distinguishable in any major way
from human intelligence. The idea behind this theory Language
is the concept that dates back to the English empiricist
philosopher Thomas Hobbes, who argued that thinking Manners of Communication
is nothing more than computing: the human mind interacting
is therefore the product of a complex set of CULTURE
Courtesies
calculations performed by the brain; Thought
• the second, called “weak AI”,
claims that a computer will Rituals
Values
never be able to match
the human mind, but Expected Roles
will only be able to behaviors
simulate some Customs
human cognitive Practices
Relationships
processes without
being able
to reproduce
them in their full
complexity.
… and now answer!
1 When did the first languages appear?
2 What did Noam Chomsky advocate?
3 What are the three components of linguistic
competence according to Noam Chomsky?
4 What is the difference between strong
and weak AI?

310 Sezione C Infrastrutture di rete e aspetti di sicurezza


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Sezione D
INTERNET: SERVIZI,
PRIVACY E SICUREZZA
NELLA SOCIETÀ DIGITALE

D1 D2 D3
Il livello applicativo Il Web e i suoi sviluppi L’informatica giuridica
Il livello applicativo rappresenta futuri nella società digitale
l'interfaccia di Internet all’utente Il Web ha subito, negli anni, notevoli Tutti usano Internet, ma non tutti
finale e racchiude i servizi che sviluppi, portando i suoi servizi sanno che dietro i suoi servizi
operano sui principali protocolli a essere sempre più vicini alle esiste una specifica normativa che
di questo livello come HTTP e FTP. esigenze della vita moderna e della dev’essere rigorosamente rispettata
professione. Questa rivoluzione ha per tutelare la Privacy e navigare in
coinvolto qualunque settore della modo sicuro. Anche l’accesso ai servizi
vita lavorativa: dalla progettazione, della Pubblica Amministrazione sono,
alla previsione, alla diagnosi. ormai, totalmente digitalizzati e la
loro fruizione richiede l’utilizzo e la
conoscenza di specifici strumenti
software da cui non si può più
prescindere.

PREREQUISITI OBIETTIVI
Conoscenze Conoscenze
• La pila protocollare TCP/IP • Principali protocolli e servizi del livello applicativo
• Concetti di sicurezza • L'evoluzione del Web
Abilità • La realtà virtuale e la realtà aumentata
• Internet of Things e Big Data
• Riconoscere le varie tipologie • Normativa sulla Privacy e trattamento dei dati
e topologie di reti • Il GDPR e il Codice dell'Amministrazione Digitale (CAD)
• Riconoscere le caratteristiche
e le potenzialità di una rete Abilità
• Saper individuare i principali servizi e protocolli del livello applicativo
• Riuscire a inquadrare le potenzialità offerte dall'uso della realtà virtuale
e aumentata nei contesti ludici e professionali
• Saper riconoscere le tipologie di software
• Saper inquadrare i problemi legati alla sicurezza e alla Privacy
quando si naviga in Internet
Competenze
• Acquisire la padronanza degli strumenti dell’informatica e utilizzare tali
strumenti per la soluzione di problemi significativi in generale

311
Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

D1 Il livello applicativo

ESERCIZI COMMENTATI
Web design
I Tag HTML
La programmazione Internet
I fogli di stile CSS
IMPARERAI…

Che cosa sono e a cosa servono Che cosa sono i servizi di hosting Che cosa sono i CMS
i sistemi client/server e di housing

1 Architettura per il Web


Il Web è un’architettura software di tipo client-server, nella quale sono previste due tipolo­
gie di componenti software: il client e il server, ciascuno con compiti ben definiti.

■ Il client (o user agent) è rappresentato dal browser, un software


che permette all’utente la navigazione nell’ipertesto del Web, e svol­
ge vari compiti (esempi di browser sono: Google Chrome, Internet
La tecnologia PageRank
Explorer/EDGE, Mozilla Firefox, Safari, Opera ecc.): non solo controlla il
contenuto della pagina
• trasmettere al server, attraverso l’azione dell’utente, le richieste web, ma controlla
delle pagine web o delle risorse disponibili su Internet; anche quanti siti hanno
• ottenere dal server le informazioni richieste; un link che li indirizza
• rendere visibile il contenuto della pagina web richiesta dall’uten­ verso quella pagina
(backlink): in base alla
te, gestendo in modo appropriato tutte le tipologie di informa­ quantità e al tipo di link,
zioni in essa contenute; la pagina riceve una
• consentire operazioni locali sulle informazioni ricevute (per valutazione più o meno
esempio, salvarle su disco o stamparle). alta e viene indicizzata
di conseguenza
dall'algoritmo del motore
■ Il server è tipicamente un processo in esecuzione su un computer di ricerca.
remoto. Solitamente è sempre in esecuzione e svolge compiti appa­
rentemente semplici, almeno in linea di principio. Deve:
• attendere le richieste da parte dei client;
• rispondere al meglio per soddisfare ogni richiesta che arriva;
• preparare le informazioni richieste, confezionarle e spedirle al client;
• nel caso sia impossibilitato a soddisfare la richiesta, deve spedire un messaggio di no­
tifica di errore, solitamente dovuto alla mancanza della risorsa richiesta o a problemi
legati alla connessione;
• gestire molte richieste contemporaneamente e rimanere in attesa di nuove richieste.

312 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Siti statici HTML è uno standard.


Dal 1991, quando Tim
Per sito statico si intende un sito web formato da un numero stabilito di Berners Lee ha definito
pagine HTML (HyperText Markup Language, il linguaggio con cui vengo­ la prima versione del
no create le pagine per essere visualizzate sul browser, spesso integra­ linguaggio, fino ai
to con altri linguaggi come javascript, css ecc.), realizzate in base alle giorni nostri, HTML ha
continuato a evolversi fino
esigenze del cliente. Le pagine sono già pronte e predisposte sul server. a maturare nello standard
Quando il client effettua la richiesta di una pagina, il server non deve HTML 5, la versione che
far altro che verificarne l’esistenza e inviarla al client. Il sito statico è, nasce appositamente
generalmente, contraddistinto da una grafica accattivante e i suoi ele­ per uscire dall’ambito
del Web e diventare
menti di forza consistono in facilità di consultazione, impatto diretto e piattaforma per la
semplicità. creazione di applicazioni,
I siti statici sono adatti a rappresentare i siti “vetrina” per pubblicizzare anche desktop e mobile.
la propria azienda e i prodotti o i servizi offerti, per i quali non è richie­
sto un aggiornamento dei contenuti in tempi brevi. Hanno solitamente
costi di realizzazione e di gestione contenuti.

Server

Client
Richiesta

Pagina web
prelevata dal server
e inviata al client

Pagine web
Due studenti
dell’Università di
Stanford, David Filo e
Jerry Yang, ebbero l’idea
di costruire una sorta
Siti dinamici di indice generale del
Web e cominciarono a
Un sito dinamico utilizza una strategia modulare costruendo le pagine lavorarci nell’aprile 1994,
direttamente sul server. definendo uno dei più
Il client effettua la richiesta di una pagina web, eventualmente anche famosi strumenti per
fornendo al server alcune indicazioni; il server non dispone direttamen­ l’indicizzazione: Yahoo!
Esso divenne un punto
te della pagina nelle condizioni richieste dal client, pertanto si mette di riferimento per tutto
al lavoro producendola e confezionandola in tempo reale, per inviarla il popolo di Internet
quindi al client che ne ha fatto richiesta. A tutti gli effetti, le pagine che e diede lo spunto per
risiedono sul server contengono un codice che viene eseguito al momen­ la costruzione di altri
sistemi, detti motori
to della richiesta. Le informazioni non sono quindi contenute diretta­ di ricerca.
mente nelle pagine, ma vengono prelevate da archivi (database) con cui
il server interagisce.

Contrariamente ai siti statici, quelli dinamici consentono elevatissime performance: poche


pagine di codice possono consentire la visualizzazione di cataloghi costituiti da centinaia
di articoli.

Il livello applicativo D1 313


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Questa soluzione è l’unica che consente di gestire con efficienza e a basso costo gli aggiorna­
menti di un sito.

Server

Web server

Client
Richiesta
Linguaggio
di programmazione

Pagina web
generata dal server
al momento della
richiesta e inviata
al client

Database

2 Struttura e rappresentazione
Contenuto e presentazione
Il requisito di partenza per lo sviluppo di un sito ben progettato è la separazione del contenu-
to del documento dalla sua presentazione.
■ Il contenuto di un documento è ciò che questo comunica all’utente attraverso il linguag­
gio naturale: immagini, suoni, filmati, animazioni e così via.
■ La presentazione di un documento è il modo in cui questo viene riprodotto attraverso i
differenti dispositivi (computer, palmari, tablet, smartphone, smart­
TV, browser vocali e così via).
Il punto fondamentale è che tutti i possibili tipi di presentazione di un
documento riescano a mostrare all’utente, se non proprio lo stesso con­ L’alt text è una breve
tenuto, almeno un suo valido equivalente. Perché ciò avvenga, sono ne­ descrizione che viene
cessarie due condizioni: aggiunta alle immagini
affinché i motori di ricerca
■ che siano stati preparati degli equivalenti per quei contenuti che, per possano indicizzarle.
L’alt text, inoltre, ha
loro natura, si rivolgono a un solo canale sensoriale: per esempio, dei
lo scopo di sostituire
testi alternativi che sostituiscano le immagini (alt text); l'immagine quando il
programma non riesce
■ che non vi siano vincoli tali che il documento possa essere letto solo a caricarla. Funziona,
con certi programmi utente (per esempio, browser di un certo pro­ pertanto, come ausilio
duttore o piattaforme particolari), e con determinate condizioni d’u­ per i non vedenti, che
so (per esempio, una data risoluzione e una certa dimensione dei ca­ possono accedere solo al
testo che viene letto dal
ratteri), con esclusione, parziale o totale, di tutti gli altri programmi loro programma.
utente e di tutte le altre possibili condizioni.

314 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La separazione di questi due elementi prevede pertanto l’uso di linguaggi differenti, che trat­
tino e gestiscano i diversi aspetti, ma nello stesso tempo concorrano alla realizzazione finale
delle pagine.
La gestione del contenuto è demandata al linguaggio HTML (con tutte le sue varianti disponi­
bili nel tempo), il quale deve unicamente stabilire quali sono gli elementi che compongono un
documento, senza preoccuparsi di come tali elementi debbano essere visualizzati.
L’aspetto della visualizzazione, quindi, viene delegato a un altro linguaggio, il CSS (Cascading
Style Sheet, “fogli di stile a cascata”), che, attraverso i suoi fogli di stile, imprime ai contenuti
una specifica forma di presentazione.
Alla luce di ciò, è necessario “ripulire” il codice HTML dagli elementi e dagli attributi di pre­
sentazione, quelli che chiaramente si riferiscono a come un contenuto debba essere presentato.
Tutti questi criteri di formattazione possono oggi, tranquillamen­
te, essere applicati per mezzo dei fogli di stile CSS.
Le specifiche che regolamentano i linguaggi per il Web sono gestite Il World Wide Web
dal W3C (WWW Consortium). A dire il vero, il W3C ha sempre predi­ Consortium, anche
conosciuto come W3C,
cato fin dall’inizio la necessità di questa separazione, ma le speci­
è un'organizzazione non
fiche delle prime versioni di HTML sono venute meno a questa esi­ governativa internazionale
genza, fornendo al linguaggio HTML la possibilità di gestire anche che ha come scopo quello di
aspetti di presentazione (per esempio, gli attributi di colore, dimen­ sviluppare tutte le potenzialità
del World Wide Web. Al fine
sione e stile di alcuni elementi non avrebbero dovuto essere presenti). di riuscire nel proprio intento,
A partire dalla versione 4 delle specifiche HTML, l’uso di elementi e la principale attività svolta dal
attributi di presentazione è stato deprecato dal W3C a favore dell’uso W3C consiste nello stabilire
dei fogli di stile. standard tecnici per il World
Wide Web, inerenti sia ai
Al linguaggio HTML è stato dato inoltre il compito di realizzare la linguaggi di markup che ai
struttura del documento, all’interno della quale disporre i vari con­ protocolli di comunicazione.
tenuti.

Architettura a tre livelli


La necessità di strutturare una pagina web su differenti livelli, diventa prerogativa necessaria
e indispensabile per un buon risultato. Il vantaggio di amministrare in modo separato i singoli
aspetti, permette di circoscrivere i problemi dei livelli in modo separato.
Ciascuno dei tre livelli ha un proprio ruolo e assolve a uno specifico compito all’interno del
sistema complessivo, senza interferire con gli altri livelli, ma scambiando con essi le informa­
zioni necessarie di elaborazione, anche molto complesse.

Comportamento

Presentazione

Struttura e contenuto

■ Il livello di base definisce la struttura del documento e predispone i contenuti; in questo


livello viene utilizzato un linguaggio di tipo dichiarativo, in quanto appunto, dichiara la
natura degli oggetti contenuti nella pagina. Al momento, esistono due tipi di linguaggi:
HTML e XML.

Il livello applicativo D1 315


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

• Il linguaggio HTML, più rigido, ha avuto negli anni diverse evoluzioni, passando per
varie sfumature quali XHTML (eXtensible HyperText Markup Language) e DHTML (Dy-
namic HTML).
• Il linguaggio XML (eXtensible Markup Language), più flessibile, nasce dalla necessità
di superare la semplice descrizione interna al documento HTML (metatag), definendo
con appositi marcatori i linguaggi con cui il documento potrà successivamente essere
letto.

■ Il livello di presentazione stabilisce come i contenuti definiti nel livello sottostante devo­
no essere visualizzati all’esterno. Pertanto i fogli di stile (CSS) rappresentano la soluzione,
al momento, più diffusa e consolidata.
■ Un ulteriore livello è dato dal comportamento; tale livello, eventualmente assente in pagi­
ne semplici, conferisce aspetti di dinamicità e di cambiamento delle pagine, grazie all’uti­
lizzo di linguaggi di scripting come JavaScript, VBscript e così via.

3 Hosting e housing
Hosting
Il nostro sito, una volta creato, sarà disponibile e visibile solo dal nostro computer. Per poterlo
rendere visibile a tutti vi è la necessità di pubblicarlo.
Occorre, pertanto, uno spazio su Internet dove depositare i nostri file. Questo servizio esterno
prende il nome di hosting (termine inglese che significa “ospitare”), ed è offerto da aziende
dette hosting provider o anche hoster.
Tali spazi sono accessibili da Internet in qualsiasi istante e vengono gestiti da server con hard­
ware potenziati e connessioni velocissime per soddisfare rapidamente le richieste dei client.
Acquisire uno spazio significa avere ben chiara la tipologia di hosting di cui abbiamo bisogno
per poter valutare le offerte disponibili. Il mercato offre numerose proposte, gratuite o a paga­
mento: la scelta primaria, quindi, non può prescindere da questo aspetto.
■ Se siamo alle prese con un sito personale, o con un sito che non richiede un grosso impegno
in termini di funzionalità richieste, molto probabilmente ci orienteremo verso uno spa-
zio gratuito offerto da un provider di hosting, il quale pretenderà uno scambio di servizi
inserendo, per esempio, della pubblicità all’interno delle nostre pagine. Oggi, sono molti i
provider che offrono questo tipo di servizio; rintracciarli non è per niente difficile: basta di­
gitare le parole “hosting gratuito” o “spazio web gratuito” su un qualsiasi motore di ricerca
per trovare centinaia di risultati.
■ La scelta di un hosting a pagamento è più laboriosa. Il tutto è legato ai servizi richiesti
e indispensabili per il funzionamento del sito. Visto l’elevato numero di aziende che for­
niscono tale servizio, scegliere la soluzione migliore per il proprio sito non è cosa facile,
soprattutto se si vuole essere certi di avere i servizi adeguati alle proprie necessità al prezzo
più conveniente. In questo caso, sono importanti le scelte progettuali, che influenzeranno
a loro volte la scelta delle tecnologie e dei servizi necessari alla realizzazione finale del sito.
Per prendere una decisione, occorre sicuramente tener presente, in primo luogo, la dimensione
del sito e il traffico dei visitatori e, subito dopo, la scelta del sistema operativo del server su cui
verrà ospitato il sito. Il mercato è diviso sostanzialmente tra due tipologie, o forse sarebbe più
opportuno parlare di filosofie, di sistemi operativi: Windows e Linux. Chi acquista uno spazio

316 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

e lo gestisce, raramente entrerà nel merito della scelta del sistema operativo, anche perché gli
stessi provider mettono a disposizione, attraverso interfacce web, degli strumenti per gestire lo
spazio in modo semplice e indolore.
La scelta del sistema operativo dipende, quindi, dalle strategie progettuali previste durante la
fase di sviluppo del sito.
Sistema operativo Server web DBMS Linguaggio di programmazione
Linux Apache Mysql PHP
Windows IIS Sql server ASP

L’insieme delle tecnologie proposte nella tabella spesso viene indicato con le sigle LAMP e
WISA, dalle iniziali delle singole tecnologie utilizzate, nell’ordine in cui sono state riportate.

Che cosa fa la differenza?


La differenza tra un hoster e un altro dipende dalle garanzie di affidabilità dello stesso.

I fattori che concorrono alla scelta sono: velocità di connessione, dislocazione fisica del
server, strumenti forniti, supporto, assistenza, velocità di soluzione dei problemi.

La velocità di connessione e la dislocazione fisica del server sono due aspetti strettamente col­
legati.
Il server su cui risiede il nostro spazio è posto all’interno della fitta maglia della rete Internet,
pertanto raggiungere lo spazio potrebbe significare attraversare più di una rete fisica, e i salti
(hop) da una rete all’altra allungano inevitabilmente i tempi di risposta.
Il comando ping effettua il test sulla velocità di reazione del server dove un sito è ospitato. In
pratica, viene spedito un piccolo pacchetto di dati all’indirizzo specificato e viene restituito un
valore in millisecondi, che indica il tempo che il pacchetto impiega ad andare e tornare.

Questo test è influenzato da vari parametri tra cui: la lontananza, la configurazione del server
e la larghezza di banda concessa al server e ai vari nodi di passaggio tra noi e il provider.
Per server italiani, la media è di 100 millisecondi a pacchetto inviato e ricevuto. Il risultato è
ottimo per valori più bassi, pessimo se si superano i 200 millesecondi. Per server esteri, i valori
tipici si aggirano intorno ai 250 millisecondi.

Il livello applicativo D1 317


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

INFOGR AFICA

Eseguire RICERCHE
nel WWW
CHI CERCA, TROVA
Nel World Wide Web – quello che nel linguaggio comune
viene chiamato “Internet” – vengono attivati ogni giorno
migliaia di siti, che nel giro di poco tempo vengono indicizzati
dai motori di ricerca. In quest’abbondanza di materiale, la
questione non è trovare ciò che stiamo cercando, ma mostrarcelo
tra i primi risultati in un ordine che rifletta le nostre necessità specifiche:
sono infatti pochissime le persone che vanno oltre le prime voci prodotte dalla ricerca.
Quando il motore di ricerca ci informa di aver trovato decine di migliaia di risultati
per le parole chiave che abbiamo inserito nella barra della ricerca, la lista che ci
viene fornita – di cui consulteremo solo una minima parte – dev’essere orientata
il più possibile verso le nostre necessità. Per farlo, vengono usate una quantità di
informazioni che solitamente non siamo neanche consapevoli di fornire (i cosiddetti
“Big Data”): la nostra posizione, la nostra lingua, la nostra età, i nostri interessi, la
cronologia delle ricerche effettuate precedentemente e via dicendo.
Tuttavia, questo può non essere ancora sufficiente: è quindi importante conoscere
gli strumenti che ci vengono messi a disposizione per affinare le nostre ricerche.

La ricerca scientifica
Nell’ambito della ricerca scientifica, la bibliografia si fonda sugli
articoli pubblicati da riviste del settore. Tali articoli vengono indicizzati
in appositi motori, che spesso si appoggiano a un organo istituzionale
o a un potente editore che ne garantisce l’autorevolezza.

Google Scholar Scopus


Un comodo strumento rivolto agli Un motore di ricerca che raccoglie gli articoli scientifici
studenti di tutte le scuole di tutte le principali discipline
Questa particolare versione di Gli articoli scientifici vengono pubblicati su riviste
Google è pensata appositamente specializzate: tutti questi lavori vengono poi indicizzati
per studenti di ogni grado su vari motori di ricerca specifici. Ogni disciplina ha uno
scolastico. Rappresenta quindi un o più motori di riferimento: per esempio, le ricerche di
utile compromesso tra i motori interesse medico-biologico vengono raccolte su PubMed,
specializzati per gli articoli scientifici autorevole motore che fa capo al Ministero della Salute
(più autorevoli, ma anche più difficili statunitense. Scopus, invece, essendo di proprietà di
da usare e rigidi nella selezione) e i Elsevier, il più grande editore di riviste scientifiche al
motori di ricerca generici. mondo, raccoglie articoli riguardanti tutte le discipline.

318 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

GOOGLE
Fin dalla sua creazione, Google è nettamente
il motore di ricerca più versatile e potente: è in
grado di valutare l’importanza di ogni pagina web
con metodi matematici, in base a un controllo di
oltre 500 milioni di variabili e di più di 2 miliardi
di termini. Sfruttando i Big Data è in grado di
orientare i risultati presentandoci quelli per noi
più interessanti. Fornisce, inoltre, filtri di ricerca
oltremodo precisi.
Di seguito, verranno mostrati vari modi di cercare contenuti che riguardano
I promessi sposi di Alessandro Manzoni: dopo essere andato su www.
google.it, in basso a destra clicca su “Impostazioni” e “Ricerca avanzata”,
poi segui le istruzioni che leggi negli esempi.

Ricerca per frase esatta


Immaginiamo di cercare i siti che parlano dei Promessi sposi di Manzoni:
la ricerca tramite la parola chiave "sposi" produce 16 milioni di risultati,
perché vengono conteggiati tutti i siti in cui compare il termine, anche
se non hanno nulla a che fare con il romanzo. Se aggiungiamo alla
ricerca il termine “promessi”, riduciamo i siti trovati (oltre tre milioni),
in quanto vengono elencate anche pagine web in cui i due termini non
sono consecutivi e che quindi non si riferiscono al nostro obiettivo
(per esempio, siti dove compare una frase del tipo "agli sposi erano
stati promessi..."). Se vogliamo che vengano cercate solo le pagine che
contengono il nome del romanzo, possiamo inserirlo nella casella “questa esatta parola o frase”,
il che equivale a racchiudere i termini fra virgolette all’interno della ricerca normale (“I promessi
sposi”). In questo modo verranno elencate solo le pagine che contengono il titolo esatto e i
risultati saranno molti di meno (circa 1 milione e 400 mila).

Ricerca per “nessuna di queste parole”


Questo sistema antepone il segno meno (–) davanti ai singoli termini
per escluderli dalla ricerca effettuata: è molto utile quando si
vuole rendere meno ambigua una ricerca. Per esempio, nel cercare
informazioni su Karl Marx potresti voler escludere le pagine che parlano dell'attore comico
Groucho Marx: la stringa di ricerca sarebbe quindi Karl Marx – Groucho.

Ricerca per “una qualunque di queste parole”


Questo sistema inserisce fra i termini l’operatore OR, il quale indica di effettuare una ricerca
sui siti che contengono almeno uno dei termini specificati. Nel nostro caso la ricerca di promessi
OR sposi produrrà oltre 18 milioni di risultati.

Altre opzioni di ricerca


Google mette a disposizione ulteriori strumenti che consentono di limitare la ricerca in base
alla lingua, all’area geografica, alla tipologia del file (pdf, doc, ppt, ...), alla posizione in cui i termini
compaiono nel sito e via dicendo.

Il livello applicativo D1 319


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Housing
Mentre l’hosting prevede uno spazio fisico sull’hard disk di un server del quale è proprieta­
rio il provider, l’housing è un servizio che collega un computer di proprietà del cliente alla
rete Internet, direttamente nei locali del provider.

L’azienda fornisce gli aspetti logistici: la connessione, l’alimentazione supportata da gruppi di


continuità e la gestione delle porte di collegamento con l’esterno.
Il server, in questo caso, è di nostra proprietà, perciò abbiamo il totale controllo hardware e
software, possiamo intervenire fisicamente sul PC negli orari di ufficio, e con appositi pro­
grammi gestirlo in remoto per le configurazioni, le manutenzioni e le installazioni.
Naturalmente, tutto ciò ha dei costi superiori rispetto a un servizio di hosting. Nel preventivo
dobbiamo inserire anche l’acquisto di un server, del sistema operativo e di un database, nonché
di eventuali software applicativi.
Date queste premesse, l’housing è sconsigliato a chi ha un budget di spesa ridotto e non preve­
de un grande traffico di visitatori nell’immediato futuro.

Server dedicato
In molti casi, l’housing viene confuso con il servizio di fornitura di un server dedicato. Pur
utilizzando nei due casi una macchina a uso esclusivo, la differenza consiste proprio nel fatto
che nell’housing il server è di proprietà del cliente, mentre il server dedicato è di proprietà
dell’hosting provider che lo concede in uso al cliente in una forma che ricorda essenzialmente
il noleggio.

4 Pubblicare un sito
Per poter pubblicare un sito su Internet e renderlo visibile a chiunque, come dicevamo, è ne­
cessario trasferire le cartelle che lo compongono su uno spazio web registrato in precedenza.

Il nome del sito


La scelta del nome con cui chiameremo il sito è uno dei fattori che ne influenzerà il succes­
so. Per facilitare il contatto con gli utenti, il nome da assegnare al sito deve avvicinarsi il più
possibile all’argomento trattato o all’attività svolta e, cosa importantissima, deve poter essere
facile da leggere, da scrivere e da ricordare. Per esempio, www.quirinale.it è un nome facile da
ricordare ed è inerente agli argomenti che tratta.
Il nome del sito rappresenta anche il suo indirizzo web, o dominio, e lo identifica in modo uni­
voco in tutta la rete. Essendo univoci, i nomi disponibili cominciano a scarseggiare, e trovare
libero quello scelto, senza dover ripiegare su un dominio di riserva, è una fortuna non da poco.
Per verificare la disponibilità del dominio scelto potete digitarlo negli appositi siti che forni­
scono il servizio whois.

Il dominio
La struttura del dominio è ad albero gerarchico. Ogni nodo dell’albero ha un etichetta
(label), tranne il nodo radice (root) che non ha nome (ha cioè una null label).

320 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’albero viene rappresentato con la radice in alto e le foglie in basso.


Un dominio è costituito da quella parte relativa allo spazio dei nomi che corrisponde a un nodo
e a tutto ciò che sta sotto di esso.

Un nodo che dipende immediatamente da un altro nodo è un suo sottodominio.

Per esempio, il dominio .it (Italia) ha come sottodomini unimi (Università di Milano), cnr
(CNR, Centro Nazionale delle Ricerche), unisalento (Università del Salento) e altri ancora.
Un nome di dominio è formato da una concatenazione di
label. I nomi sono letti da sinistra a destra, dal meno signi­
ficativo al più significativo, e le label vengono rappresentate
separate dal carattere “.” (punto). Così ingegneria.unisalen- • Protocollo: specifica il protocollo
to.it è un nome di dominio, dove ingegneria (facoltà di inge­ da utilizzare per accedere a quella
risorsa, solitamente http (usato
gneria) è un sottodominio di unisalento. Un nome che arriva per il trasporto delle pagine web in
fino alla radice è anche detto nome assoluto, o FQDN (Fully chiaro) o https (usato per quelle
Qualified Domain Name). Un dominio come .it non è sotto­ crittografate).
dominio di alcuno, ma dipende direttamente dalla radice; si • NomeLogico: è il nome logico
assegnato al computer server su cui
dice che è un dominio di primo livello, o di livello massimo risiede la risorsa interessata.
(TLD, Top Level Domain). • Dominio: è la sigla che
La registrazione del dominio esula dallo spazio web, ma le contraddistingue la nazione (.it, .de,
.uk, .us, ...) o la tipologia del sito
cose vanno talmente a braccetto che, molto spesso, il provi­
(.com, .info, .gov, .net, ...).
der si occupa anche di effettuare la registrazione presso l’au­ • Percorso: specifica la cartella sul
torità competente. computer server per raggiungere la
Detto ciò, ogni risorsa all’interno di un sito viene rappresen­ risorsa.
• NomeFile: è il nome del file (risorsa)
tata dalla sua URL (Uniform Resource Locator), il percorso completo di estensione. Può
che individua in modo univoco una risorsa sul Web, compo­ essere omesso se si è interessati
sto come di seguito: a visualizzare il contenuto di una
directory.
Protocollo://NomeLogico.Dominio/Percorso/NomeFile

FTP
Ora non ci resta altro da fare che trasferire il sito, confezionato e funzionante all’interno del
nostro computer, nello spazio web, gratuito o a pagamento, che abbiamo scelto. A questo scopo
si utilizza il protocollo di trasferimento dei file FTP (File Transfer Protocol).
Poiché il sito non è altro che un insieme di file e cartelle all’interno del nostro file system, per
mezzo di questo protocollo abbiamo la possibilità di inviarlo sul file system del provider. Per
effettuare tale trasferimento si rende necessario, da parte del provider, attivare il servizio FTP,
che attraverso opportune credenziali, ci permette di accedere alla porzione del file system re­
lativa al nostro spazio.
La specifica originale di FTP non prevede alcuna cifratura per i dati scambiati tra client e ser­
ver. Questo comprende nomi utenti, password, comandi, codici di risposta e file trasferiti, i
quali viaggiavano in Internet in chiaro e pertanto sono facilmente identificabili.
Il problema è comune a diversi altri protocolli (HTTP, Hypertext Transfer Protocol, TELNET e
SMTP, Simple Mail Transfer Protocol) utilizzati prima della diffusione di SSL (Secure Sockets
Layer) uno dei protocolli crittografici che permette la comunicazione sicura dalla sorgente al
destinatario. Per ovviare al problema, è stata definita una nuova specifica che aggiunge al pro­
tocollo FTP originale un layer di cifratura SSL/TLS (Transport Layer Security), e una nuova serie
di comandi e codici di risposta. Il protocollo prende il nome di FTPS (dove la S sta per Secure).

Il livello applicativo D1 321


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Esistono differenti software (client FTP) che permettono di effettuare il trasferimento in modo
intuitivo e immediato; solitamente, si presentano con una schermata divisa in due aree: da una
parte il nostro file system e dall’altra il file system remoto (quello relativo al nostro spazio): non
resta che trasferire da una zona all’altra i file: il trasferimento può avvenire in entrambi i sensi.

5 CMS
Negli ultimi anni, in Internet si è molto parlato dei software CMS, che sono diventati la base
di funzionamento per la maggior parte dei siti web. La sigla CMS sta per Content Management
System, ossia sistema di gestione di contenuti. È quindi essenziale chiarire che cosa si intende
per contenuto.

Il contenuto è qualsiasi unità di informazione, quindi testo, grafica, immagini, suoni, mu­
sica, documenti, registrazioni e, in generale, qualsiasi informazione in formato digitale o
adatta a essere trasferita su supporto informatico.

Contenuto e dato sono due concetti completamente diversi: un contenuto, infatti, può essere
un insieme di dati, costituendo un’informazione completa e utile per l’utente. Per esempio,
il titolo di un articolo viene considerato un singolo dato nella struttura tecnica della maggior
parte dei database; mentre il contenuto è costituito, oltre che dal titolo, dal testo dell’articolo,
dalla data di pubblicazione, dall’autore e così via. La nozione di contenuto non può quindi
trascurare l’interpretazione che l’uomo le dà, ovvero la considerazione delle necessità proprie
dell’utenza che farà uso delle informazioni.

322 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’idea alla base di ogni CMS comprende, in particolare, procedure per la gestione, l’inserimen­
to, la modifica, l’eliminazione e la catalogazione di tali informazioni, in base a regole e processi
prestabiliti. Un CMS, quindi, è uno strumento atto a facilitare e controllare la gestione e la
pubblicazione dei contenuti in modo semplice, pratico ed efficiente.

Personale addetto all’inserimento


e all’aggiornamento dei
contenuti (redazione)

Testo Immagini Multimedia

I dati vengono memorizzati


su server, nel database centrale,
e sono subito disponibili nel CMS

Verifica

Pubblica

Amministratore

Gestione template
Gestione utenti
Gestione moduli

Sito Internet – visitatori

Database e template
Anche nei CMS è importante il concetto di separazione dei dati dalle loro modalità di presen­
tazione.
■ I dati sono registrati in un database, e questo comporta notevoli vantaggi rispetto alla
memorizzazione di pagine web statiche.
■ I contenuti vengono presentati attraverso delle “pagine modello”, chiamate template, dove
i dati vengono elaborati e visualizzati nello schema richiesto; è quindi sufficiente variare
template per ottenere, a partire dagli stessi dati, diverse modalità di presentazione.
Nei siti web statici, composti da pagine HTML e stili CSS, i dati sono fortemente legati alla loro
presentazione grafica.
In passato, per realizzare un sito bisognava conoscere linguaggi per svilupparlo. Dando vita a
un software che consente a chiunque di gestire documenti, notizie, immagini, forum e quanto
può essere utilizzato in un sito web, si è aggirato il requisito di conoscere il linguaggio HTML.

Il livello applicativo D1 323


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Da un sistema statico (basato sul concetto di pagina per pagina) i CMS hanno permesso di
passare a un sistema dinamico (basato sul concetto di struttura personalizzabile). Scindere
il codice dal contenuto, significa velocizzare la pubblicazione dei contenuti. Il codice fornisce
la struttura, ma la gestione si libera di quelle complessità che in passato ne limitavano l’uso e
l’usabilità. Un esempio è la diffusione dei blog, fenomeno comparso nel Web 2.0, che si deve alla
loro facilità d’uso. Ma dietro a un blog si nasconde sempre un CMS.

Modularità
Una caratteristica importante dei CMS è la modularità.

Il CMS è un contenitore con la possibilità di aggiungere non solo contenuti, ma anche ulte­
riori funzionalità e servizi, in base alle esigenze del sito e dell’amministratore.

A partire dallo stesso CMS, si possono sviluppare siti completamente diversi e con funzioni
totalmente differenti. Un sito di commercio elettronico, per esempio, avrà bisogno del compo­
nente software relativo all’acquisto e al pagamento. Il sito di un ristorante necessiterà, invece,
di un modulo per la presentazione del menu e per la prenotazione dei tavoli.
Le prospettive di un CMS diventano quindi illimitate. L’aggiunta di nuovi moduli diventa indi­
pendente dalla struttura del sito che non ha bisogno quindi di essere rielaborato, reingegneriz­
zato o, addirittura, ricostruito.

Utenti e privilegi
Il CMS prevede la possibilità di diversificare i livelli di accesso alla piattaforma. Generalmente,
il riconoscimento dell’utente avviene tramite l’immissione di credenziali (nome utente e pas-
sword), scelte dall’utente stesso nella fase in cui esegue la registrazione.
Gli utenti del sistema sono suddivisi in gruppi, ognuno dei quali ha specifiche autorizzazioni
di accesso.
■ Pubblico: un gruppo al quale non viene concesso l’accesso come utente; l’utente di questo
gruppo è da considerarsi “ospite”, e come semplice visitatore gli è consentita la sola visua­
lizzazione dei contenuti, senza alcuna possibilità di interazione.
■ Utenti registrati: gruppo che caratterizza ogni utente che abbia ricevuto delle credenzia­
li per l’accesso al sito senza, tuttavia, particolari autorizzazioni; questo livello può essere
adottato per limitare l’accesso ad aree riservate, oppure per consentire un primo livello di
interazione (inserimento di commenti, messaggi e così via).
■ Autori: gli utenti di questo gruppo, hanno la possibilità di inserire, modificare, eliminare
autonomamente i contenuti nel CMS.
■ Amministratori: gli utenti di tipo amministratore sono autorizzati, oltre che alla gestione
dei contenuti, anche alla configurazione e alla gestione dell’intera piattaforma in tutte le
sue funzioni, come aggiunta di nuovi moduli, cambio del template, configurazione dei pa­
rametri, gestione delle autorizzazioni e così via.
Solitamente, per gli amministratori il CMS offre un’interfaccia di gestione differente (Back-
End) rispetto agli altri utenti (Front-End) per il controllo completo della piattaforma.

324 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME D1
IL LIVELLO APPLICATIVO
AUDIO

Architettura per il Web considerare che i server degli hosting provider


Il Web è un’architettura software di tipo possono funzionare sostanzialmente in base a
client-server, cioè basata su due tipologie due sistemi operativi: Windows e Linux. Invece
di componenti: il client, il browser che permette che a un servizio di hosting, si può ricorrere a un
di navigare, e il server, cioè un processo in servizio di housing, collegandosi direttamente
esecuzione su un computer remoto che confeziona con un computer proprio, ospitato nei locali di un
ciò che richiede il client. I siti formati da un numero provider. In tal caso, si ha la gestione completa –
stabilito di pagine HTML (il linguaggio con cui sia hardware che software – del server.
si costruiscono le pagine web) si chiamano statici,
Pubblicare un sito
quelli capaci di costruire per il client le pagine
Per pubblicare un sito, bisogna, appunto,
richieste si chiamano dinamici.
trasferirne le cartelle sullo spazio web registrato
Struttura e rappresentazione in precedenza. Il sito va fornito di un nome, che
Per progettare un documento da collocare su un ne rappresenta anche l’indirizzo web, o dominio.
sito bisogna separarne il contenuto (ciò che il Per trasferire nello spazio web i contenuti del
documento comunica con il linguaggio naturale: sito, occorre trasferirli sul file system del provider.
immagini, suoni, filmati e animazioni) dalla Allo scopo, si utilizza il protocollo FTP, o protocollo
presentazione (il diverso modo di riprodurre di trasferimento dei file, mentre FTPS (Secure)
il contenuto secondo lo strumento utilizzato: rappresenta il protocollo per il trasferimento
computer, palmari, tablet, smartphone, browser dei file in modo cifrato.
vocali ecc.). Allo scopo, il contenuto va gestito
CMS
con il linguaggio HTML e la presentazione con
Per gestire e pubblicare in modo semplice
il linguaggio CSS (il linguaggio che con i fogli
ed efficiente i contenuti dei siti web si usano
di stile permette di fare una forma al contenuto).
i software CMS. I CMS si basano sulla separazione
Le pagine web hanno quindi una struttura a livelli.
dei dati dalle loro modalità di presentazione:
Hosting e housing i dati sono collocati in database e presentati
Lo spazio su Internet, gratuito o a pagamento, in template, o pagine modello. Variando
che permette di pubblicare un sito, è gestito da il template, gli stessi dati ricevono presentazioni
aziende chiamate hosting provider. È importante diverse.

Il livello applicativo D1 325


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME D1
MAPPA
MODIFICABILE
INTERNET

architettura pubblicazione pubblicazione


CMS
software di documenti di siti

è di tipo richiede grazie a consente di


di separare

client-server

il client
si occupa di

effettuare
la richiesta

che avviene
tramite

URL

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Di che tipo è l’architettura software utilizzata in Internet?
2) Da che cosa è resa possibile l’individuazione univoca di una risorsa trasmessa in Internet?
3) Che compito principale svolge un client?
4) Che compito principale svolge un server?
5) Che due aspetti di un documento bisogna tenere separati quando si progetta la pubblicazione
di un documento in Internet?
6) Con che linguaggio si realizza il contenuto di un documento da pubblicare in Internet?
7) Con che linguaggio si realizza la presentazione di un documento da pubblicare in Internet?
8) A quali due servizi si può ricorrere per pubblicare un sito web?
9) Di quale protocollo si fa uso per pubblicare un sito web?
10) Con quali software si realizza un sito web?
11) Qual è il vantaggio di utilizzare un CMS?
12) Dove salva i dati un CMS?

326 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo D1
1. Vero o falso? 9. Vero o falso?
a HTML è un protocollo. V F a HTTP è un linguaggio di markup V F
b Il client ha bisogno del server per funzionare V F b XTML è un linguaggio di markup V F
c Il server richiede il servizio V F c Web è sinonimo di Internet V F
d FTP è un formato di file V F
e XML è più flessibile di HTML V F 10. Completa le seguenti frasi.
f Hosting e housing sono sinonimi V F Per sito dinamico si intende una soluzione web in
g Il servizio in housing prevede la presenza V F cui le ___________ (testi, immagini e quant’altro)
di un server dedicato non sono contenute nelle ___________ ma in un
h Il CMS gestisce i contenuti sul server V F database. Contrariamente ai siti ____________,
quelli dinamici si basano sulle tecnologie web
i Il CMS prevede differenti tipologie di utenti V F
di gestione dei database, che consentono
l Il CMS si poggia sul protocollo HTTP V F elevatissime _____________. In questo modo
poche pagine di codice possono consentire la
visualizzazione di cataloghi costituiti da centinaia
Risposta singola di __________. Questa soluzione è l’unica che
consente di gestire con efficienza e basso costo
2. Indica quale dei seguenti non è un protocollo. gli ______________ di un sito.
A FTP B CMS C HTTP D HTTPS (aggiornamenti, informazioni, articoli, pagine,
performance, statici)
3. Il termine LAMP è un acronimo che indica:
A le caratteristiche messe a disposizione dal server
11. Descrivi il concetto di separazione fra la struttura
di un documento e la sua rappresentazione.
B le caratteristiche messe a disposizione del client
C la struttura della rete 12. Associa alle seguenti frasi una priorità (da 1 a 4)
D la natura del CMS utilizzato in base all’importanza nella scelta di uno spazio
web (hosting):
4. Un server dedicato è di proprietà: ____ Dimensione del sito da pubblicare
A del cliente ____ Servizi richiesti per il funzionamento
B di una terza azienda ____ Costo dello spazio
C dell’hosting ____ Velocità di connessione
D di nessuno dei precedenti
13. Qual è la differenza tra hosting e housing?

Risposta multipla 14. Stabilisci il livello dei seguenti domini:


____ istruzione.it
5. Identifica i linguaggi per il Web:
____ .org
A CSS B HTTP C XML D FTPS
____ mondadorieducation.it/minervascuola
6. Indica quali dei seguenti sono esempi di URL: ____ cosp.unimi.it/

A https://www.mondadori.it 15. Completa le seguenti frasi:


B https://www.mondadori.it/esempi/prova.html • FTP è il protocollo per il trasferimento di
C https://www.mondadori.it/prova.html __________
D https://213.234.122.80/prova.html • FTP si basa su un’architettura ________________
• Attraverso FTP è possibile gestire il file
7. Qual è la differenza tra Internet e WWW? _________ in remoto
• L’accesso allo spazio via FTP è spesso protetto
8. Definisci il significato di linguaggio di markup. da __________

Il livello applicativo D1 327


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Allena le tue ABILITÀ


e le tue COMPETENZE D1
16. • Descrivi brevemente la differenza tra blog, 25. • I moderni browser offrono la possibilità di
forum e social network. Possono coesistere navigare in incognito. Sapresti spiegarne il
all’interno dello stesso sito? significato? Come si fa per attivarla?

17. • Ricerca in Google informazioni su un fatto di 26. • Effettua una ricerca su Internet per stabilire
cronaca appena accaduto. Successivamente, quali sono stati i CMS più utilizzati nello scorso
affina la ricerca. L’obiettivo è quello di sapere anno nel mondo e in Italia.
quali sono i fatti di cronaca più rilevanti del
giorno accaduti a Venezia o nella tua città. 27. •• Utilizza Google per effettuare una ricerca
sul servizio di podcasting, trova quali sono i
18. • Fai una ricerca su Internet utilizzando le podcatcher gratuiti ed effettua il download di uno
stesse parole chiave su motori differenti (Google, compatibile con il tuo sistema operativo.
AltaVista, Lycos, Excite) e confronta il risultato.
28. •• Utilizza il motore di ricerca Google per
19. • Verifica se sono presenti, ed eventualmente effettuare una ricerca sul CERN, concentrando
scarica, i podcast di un cantante di tuo la tua attenzione sulla sua storia, il suo ruolo, la
gradimento. sua ubicazione, le attività svolte e su ciò che,
leggendo di volta in volta, incuriosisce la tua
20. • Esegui i seguenti passi: mente. Dopo aver raccolto tutto il materiale,
• effettua una registrazione su Gmail per creare predisponi una presentazione in PowerPoint in cui
un nuovo account di posta (se possiedi già un strutturi la tua ricerca, corredata di immagini ed
account Gmail salta al passaggio successivo); eventuali video.
• crea una mailing list in cui includere tutti i tuoi
compagni di classe; 29. •• Effettua una ricerca sul termine cookie legato
• invia una mail di benvenuto a tutti. al browser. Comprendi il significato del termine e
verifica la presenza di cookie all’interno del tuo
21. • Collegati al motore di ricerca di Google. computer.
Inserisci il motore di ricerca nell’elenco dei
siti preferiti. Devi cercare informazioni relative 30. ••• Scarica un programma aggregatore gratuito
all’Amazzonia e affinare la ricerca. L’obiettivo per il tuo sistema operativo. Iscriviti al servizio
è quello di trovare un elenco di siti che parlino RSS di un quotidiano a tua scelta. Utilizza
della deforestazione dell’Amazzonia (più di 800 l’aggregatore per ricevere gli aggiornamenti su
risultati). Salva l’articolo che ti interessa in un un determinato argomento tra quelli disponibili.
documento di Word.
31. ••• Scarica un podcatcher per il tuo sistema
22. • Effettua una ricerca sui piatti tipici della zona operativo. Iscriviti al servizio podcasting di un
in cui vivi al fine di salvare in un documento di distributore di contenuti a tua scelta. Utilizza
Word una ricetta di cucina che desideri stampare il podcatcher per scaricare periodicamente i
e successivamente realizzare. Sarebbe utile podcast di tuo interesse.
realizzare la ricetta corredandola di immagini
specifiche in modo che si evidenzino i processi 32. ••• Effettua una ricerca di un provider hosting
intermedi di realizzazione e il risultato finale del gratuito, effettua la registrazione e attiva il tuo
prodotto. spazio. Successivamente crea (o scarica da
Internet) un semplice file html e utilizzando un
23. • ll browser salva nella cronologia i siti visitati. client FTP trasferiscilo sul tuo spazio. Attraverso
Sapresti eliminare la cronologia dell’ultima l'URL del tuo spazio verifica la visualizzazione nel
settimana? E quella complessiva? browser del file HTML appena caricato.

24. • Imposta il motore di ricerca Google come


prima pagina all’apertura del browser.

328 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

D2 Il Web e i suoi sviluppi futuri

IMPARERAI…

Come si è evoluto il Web Cosa sono la realtà virtuale Cosa sono Internet of Things Cos’è l’Industria 4.0
e la realtà aumentata e Big Data

1 Dal Web 1.0 al Web 4.0


Web 1.0, Web 2.0, Web 3.0 e Web 4.0 non differenziano un’evoluzione temporale del Web, ma
una sovrapposizione di differenti filosofie e tecnologie che tuttora coesistono.

Web 1.0
La prima fase di Internet è nota come Web 1.0, caratterizzata dal fatto che le informazioni
venivano pubblicate online in maniera statica e l’utente era un semplice fruitore di conte-
nuti.

Possiamo immaginare le informazioni come se fossero state presentate su un foglio di Word


contenente testo e immagini, pubblicato sul Web. L’utente arrivava sulla pagina, leggeva e se ne
andava, senza alcuna possibilità di interazione. In seguito, una volta avvenuta l’integrazione
con i database e una volta reso possibile l’utilizzo di sistemi di gestione dei contenuti (CMS),
alcuni hanno indicato il nuovo Web così ottenuto come Web 1.5.

Web 1.0
Web 2.0
Il Web 2.0 non è un software specifico, né un marchio registrato dalle software house, ma un
insieme di approcci per usare la rete in modo nuovo e innovativo. Il Web 2.0 ha determinato
una nuova visione di Internet, che ha influenzato il modo di lavorare e di interagire con le in-
formazioni in rete. In termini più generali:

Il Web 2.0 indica un insieme di tecnologie che permette ai dati di diventare indipendenti
dalla persona che li produce o dal sito in cui vengono creati.

Il Web e i suoi sviluppi futuri D2 329


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Web 2.0

L’informazione può essere suddivisa in unità che viaggiano liberamente


da un sito all’altro, spesso in modi che il produttore non aveva previsto Il termine Web 2.0 fu
o inteso. Questo paradigma del Web 2.0 permette agli utenti di prendere coniato da Tim O’Reilly, un
grande editore americano,
informazioni da diversi siti simultaneamente e di distribuirle sui propri durante una conferenza
siti per nuovi scopi. organizzata da O’Reilly
Da un punto di vista rigorosamente basato sulla tecnologia di rete, il Media (la casa editrice
Web 2.0 è del tutto equivalente al Web 1.0, in quanto l’infrastruttura a di O’Reilly) alla fine del
2004. Inizialmente, fu
livello di rete continua a essere costituita dagli stessi protocolli. La dif- usato come titolo per
ferenza risiede nell’approccio con il quale gli utenti si rivolgono al Web, una serie di conferenze
che passa fondamentalmente dalla semplice consultazione (seppure dedicate a una nuova
generazione di servizi
supportata da efficienti strumenti di ricerca, selezione e aggregazione) Internet, che enfatizzava
alla possibilità di contribuire popolando e alimentando il Web con pro- la collaborazione online e
pri contenuti. L’utente passa da spettatore a “spettautore”. la condivisione tra utenti.
Fra i principali ambienti interattivi che hanno modificato tale approc-
cio annoveriamo forum, blog, wiki e social network.

Web 3.0
Il potere del Web e le sue possibilità concrete di agire direttamente sulla realtà sono molto
aumentati e continuano ad aumentare. I fattori alla base di tale aumento sono moltissimi: la
diffusione delle reti social, delle tecnologie per tracciare le preferenze degli utenti, la satura-
zione dei mercati tradizionali, l’esigenza per le aziende di una comunicazione sempre più one-
to-one, la geolocalizzazione, la fruizione del Web su dispositivi mobile, la tendenza a cercare
referenze sui contenuti per districarsi nell’enorme mole di materiale presente sul Web, la velo-
cità con cui si dà o si riceve una referenza e tante altre concause ancora di livello tecnologico
e sociologico.
Le parole d’ordine del Web 3.0 sono dati e semantica. La differenza, in
questo caso, non è l’introduzione di nuove tecnologie, ma di differenti
RSS (Really Simple
fattori. Syndication) è uno dei
più popolari formati per la
■ La rete diviene un enorme database: l’introduzione dei formati distribuzione di contenuti
RSS, dei file XML e dei file metadata, offre la possibilità di utiliz- web; è basato su XML,
zare Internet proprio in questo modo. Il Data Web, come viene chia- da cui ha ereditato la
mata la nuova versione del Web, si presta a essere utilizzato dalle più semplicità, l’estensibilità
e la flessibilità.
diverse applicazioni come un deposito dal quale recuperare dati da L’applicazione principale
fornire all’utenza. per cui è noto è la sua
capacità di generare
flussi di informazioni
che permettono di essere
aggiornati, in relazione a
nuovi articoli o commenti
pubblicati nei siti di
interesse, senza dover
rivisitare manualmente
uno a uno i siti.
Web 3.0

330 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

■ Altro fattore fondamentale è dovuto all’introduzione dell’Intelli-


La semantica è quella
genza Artificiale. Grazie al suo utilizzo sono stati progettati softwa- parte della linguistica
re capaci di interagire con gli utenti. Possiamo citare, per esempio, che studia il significato
gli algoritmi di Google che indicizzano i contenuti in base alla loro delle parole, delle
qualità e pertinenza rispetto a determinate parole chiave; oppure locuzioni, delle frasi e
dei testi. La semantica
l’algoritmo di Facebook, che ci mostra prevalentemente le notizie è ciò che mette in
relative ai nostri amici o alle pagine che seguiamo, che sono in linea relazione le espressioni
con i nostri interessi; o ancora, gli algoritmi che regolano i software linguistiche con quello
che il contenuto di tali
anti-spam, allo scopo di distinguere i messaggi realizzati da utenti espressioni “vuole dire”.
reali rispetto a quelli creati artificiosamente da un software.
Per fare in modo che le informazioni possano essere espresse in una forma comprensibile a una
macchina, una risorsa dovrebbe fornire informazioni su se stessa. Per farlo, deve utilizzare i
cosiddetti metadati (cioè, le informazioni che descrivono un insieme di dati: un esempio tipico
è la scheda di un libro all'interno del catalogo di una biblioteca). I metadati dovrebbero essere
“scritti” (codificati) in una forma leggibile universalmente dalle macchine. La loro aggiunta ai
contenuti web fornisce la semantica.

Possiamo definire il Web 3.0 come Web semantico. L’aggiunta della semantica ai conte-
nuti Web richiede tecnologie e linguaggi in grado di ricavare significati da informazioni ed
esprimere dati e regole per ragionamenti. Il Web 3.0 deve connettere i contenuti del Web
attraverso la definizione di opportuni standard.

250.000 siti 80.000.000 di siti 800.000.000 di siti


con
ti
uti pubblica

tenu
ti generati dagli utenti
conten

45 milioni di utenti globali 1 miliardo di utenti globali 8 miliardi di utenti globali


1996 2006 2016

Il Web e i suoi sviluppi futuri D2 331


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Web 4.0
Scopo della fase 4.0 del Web è quella di integrare pienamente le due fasi precedenti. L’o-
biettivo finale è quello di far sì che le applicazioni presenti sul Web mettano in connessione
in modo automatico le persone, così come il Web semantico mette in connessione in modo
automatico i contenuti.
Le applicazioni presenti sul Web, in base alle attività che stanno svolgendo, dovrebbero essere
in grado di aiutare le persone a collaborare, cioè a mettere insieme le loro risorse e le loro com-
petenze, per raggiungere scopi condivisi.

Il Web 4.0 è pienamente integrato con la realtà fisica e al servizio delle relazioni interperso-
nali, per moltiplicarle e potenziarle.

La realtà virtuale e la realtà aumentata ne sono un esempio. Il Web 4.0


Puoi approfondire
non può prescindere, ormai, dal concetto di Big Data e da quello di IoT l’argomento Social
(Internet of Things), dei quali tratteremo tra poco. Network nel menu
Materiali aggiuntivi
del libro digitale.

2 Realtà virtuale e realtà aumentata


La realtà virtuale
La realtà virtuale (VR, Virtual Reality) è una rappresentazione tridimensionale generata
dal computer, con diversi gradi di affinità con l’ambiente reale, da un abbozzo schematico
degli oggetti fino al fotorealismo, che rende possibile agire interattivamente con l’ambien-
te e con gli oggetti.

La realtà virtuale nasce allo scopo di “replicare” la realtà


quanto più precisamente possibile dal punto di vista visi-
vo, uditivo, tattile e olfattivo, al fine di svolgere azioni nello
spazio virtuale, superando limiti fisici e di sicurezza.
L’utilizzo della realtà virtuale è ormai esteso ai più svariati
campi di applicazione, dall’istruzione in campo meccanico
ai simulatori di volo, dalle simulazioni in campo chirurgico
alla riabilitazione di pazienti con deficit cognitivi, dall’ar-
chitettura al turismo.
L’accesso alla realtà virtuale può compiersi per mezzo delle
classiche interfacce di comunicazione del computer (moni-
tor, tastiera, mouse) oppure attraverso specifici dispositivi
che rendano l’esperienza dell’utente più coinvolgente, “immergendolo” completamente nell’am-
biente virtuale. Questi dispositivi includono caschi con visori stereoscopici, speciali guanti
chiamati data glove (che permettono di interagire manualmente con le componenti tridimen-
sionali), rilevatori di movimento (come i dispositivi di motion tracking o head tracking).
Con l’utilizzo di questi dispositivi il corpo diventa la principale interfaccia con cui manipolare
l’informazione disponibile e la realtà virtuale diviene immersiva, in quanto è in grado di creare
un senso di assorbimento e di “immersione” sensoriale nell’ambiente tridimensionale generato
dal computer. In alternativa, l’utente può essere immerso in un cave (caverna), una camera di
proiezione costituita da tre, quattro o sei schermi posti in posizione reciproca, su cui vengono re-
troproiettati gli ambienti generati dal computer. In questo caso, l’impiego di sensori di posizione
ottici consente di rilevare e di trasmettere al computer la posizione e il movimento dell’utente.

332 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

La realtà virtuale non immersiva sostituisce il casco con un normale monitor. In questo caso,
l’impressione dell’utente è quella di vedere il mondo tridimensionale creato dal computer at-
traverso una sorta di finestra. Inoltre, nei sistemi di realtà virtuale non immersiva, il soggetto
interagisce con l’ambiente tridimensionale attraverso un joystick.

La realtà aumentata
Con l’espressione realtà aumentata (AR, Augmented Reality) si intende la sovrapposizione
di elementi virtuali generati dal computer alla percezione, non solo visiva, del mondo reale,
ottenuta attraverso una telecamera o attraverso occhiali speciali.

Il fruitore di applicazioni in realtà aumentata, quindi, vedrà sovrapposti alla realtà oggetti vir-
tuali o filmati, sentirà suoni, percepirà sensazioni tattili o, addirittura, olfattive. Un manuten-
tore, per esempio, tramite la realtà aumentata potrà vedere comparire sull’area di lavoro uten-
sili e componenti animati che mostrino come dev’essere eseguita un’operazione direttamente
sull’apparecchiatura oggetto dell’intervento, guidando passo passo la sua attività. Un turista,
puntando un tablet o uno smartphone verso un’opera d’arte, può veder comparire informazio-
ni utili. Un lettore, posizionando una pagina di un libro davanti alla webcam del suo pc, potrà
veder comparire sul libro stesso, “riflesso” nello schermo del pc, animazioni 3D, filmati o con-
tenuti multimediali.
Attraverso applicazioni web-based di ultima generazione è possibile visualizzare direttamen-
te in streaming una sovrapposizione fra elementi reali e virtuali (animazioni 3D, filmati, ele-
menti audio e multimediali). La realtà aumentata può essere fruita attraverso i monitor del pc
dotati di webcam, grazie all’utilizzo di marker stampati.
I marker sono disegni stampati su carta, che la webcam riconosce e ai quali vengono imme-
diatamente sovrapposti elementi multimediali sullo schermo del computer. Questa sovrap-
posizione avviene direttamente davanti agli occhi dell’osservatore, generando un effetto sor-
prendente, per la particolare sensazione di avvicinarsi concretamente, come mai prima, a una
dimensione virtuale, con la possibilità di interagire attivamente con essa.

Le principali applicazioni della realtà aumentata


La realtà aumentata ha portato una ventata di innovazione e di tecnologia virtuale nel pano-
rama dell’advertising e della comunicazione aziendale. Con essa il marketing non conven-
zionale si avvarrà di uno strumento nuovo e di grande impatto emotivo, che rivoluzionerà la
piatta presentazione dei prodotti sul Web.
La realtà aumentata è applicata anche nella medicina, e in particolare nella chirurgia, dove
ha fornito nuovi e validissimi strumenti per la diagnosi e la definizione della terapia. “Tra-
ducendo” le informazioni contenute nelle
immagini mediche è oggi possibile ottenere
un modello tridimensionale pre-operato-
rio del paziente, una sorta di clone digita-
le della persona reale. La modellazione e la
simulazione del paziente virtuale può esse-
re utilizzata anche in fase intra-operatoria
grazie allo sviluppo della realtà aumentata,
che consiste nel sovrapporre i modelli 3D
pre-operatori alla visione intra-operatoria
di quello reale.

Il Web e i suoi sviluppi futuri D2 333


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Attraverso i Google Glass indossati dal chirurgo Brent Ponce è stato possibile trasmettere in
tempo reale le immagini di un’operazione di protesi alla spalla a un chirurgo non presente in
sala operatoria, permettendogli di vedere sul suo monitor esattamente quello che Ponce vedeva
in sala operatoria, e addirittura di introdurre una mano “virtuale” nel campo visivo di quest’ul-
timo: una mano che Ponce visualizzava come un’immagine fantasma nel proprio display.
I vantaggi sono ovviamente innumerevoli. Un chirurgo “in remoto” può fornire assistenza e
collaborazione a quello che sta operando, nonostante si trovi a centinaia di chilometri di di-
stanza (o dall’altro lato del globo). I due medici possono discutere il caso in tempo reale, e la
mano fantasma può indicare al chirurgo che effettua l’operazione eventuali imprecisioni, illu-
strare procedure nuove, mostrare come utilizzare gli strumenti posizionandoli nella modalità
più corretta, e così via.

3 Differenze fra realtà virtuale


e realtà aumentata
La differenza fondamentale fra realtà virtuale e realtà aumentata consiste nel concetto di
simulazione utilizzato.

■ La realtà virtuale ci induce tramite un siste-


ma più o meno immersivo a pensare di vivere
una certa realtà ingannando i nostri sen-
si; tale realtà è completamente generata dal
computer.
■ La realtà aumentata, diversamente, aggiun-
ge livelli informativi di varia natura a ciò
che i nostri sensi percepiscono. Si tratta
quindi di un potenziamento percettivo, ba-
sato principalmente sulla generazione di
contenuti virtuali da parte di un computer e
dalla loro sovrapposizione con la realtà. È importante puntualizzare che queste integrazio-
ni non sono circoscritte ai dati visivi, ma possono comprendere, se la tecnologia lo consen-
te, dati olfattivi, uditivi e perfino tattili.
Con la realtà aumentata abbiamo assistito a un’anteprima del Web 4.0! Il termine IoT viene
utilizzato la prima
volta da Kevin Ashton,
ricercatore presso il
4 Internet delle Cose MIT, il Massachusetts
Institute of Technology.
Lo IoT Anche se il termine è
nuovo, i concetti che esso
Internet of Things (in sigla: IoT) è un termine di nuovo conio, nato indica sono utilizzati già
dall’esigenza di dare un nome e un ruolo agli oggetti reali connessi a da molto tempo: dalla
nascita di Internet e,
Internet. successivamente, del Web
Lo IoT è, per esempio, un sistema di sensori che avvisa in tempo reale gli semantico. Lo Iot indica
automobilisti circa il traffico presente lungo una strada, un frigorifero un Web fatto di “cose”,
che ordina il latte quando nel contenitore non ce n’è più, un braccialetto non solo di righe di
codice: things, not strings.
che monitora lo stato di salute della persona che lo indossa.

334 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il termine IoT identifica tutti quegli oggetti che, collegati alla rete, permettono di unire
mondo reale e mondo virtuale, essendo capaci di comunicare tra loro e di interagire con gli
esseri umani.

Se fino a poco tempo fa un dispositivo collegato a Internet poteva essere un pc, un tablet, uno
smartphone e poco altro, ora invece qualsiasi tipo di oggetto può diventare smart (intelligen-
te). Si tratta di oggetti tradizionali, che diventano smart grazie alla capacità di acquisire infor-
mazioni e di accedere alla rete.
La novità consiste nel prendere un oggetto tradizionale e installarvi dei rilevatori capaci, da
una parte, di acquisire preziose informazioni sull’ambiente circostante o sul suo utilizzo,
dall’altra, di raccogliere dati, con la possibilità di trasmetterli via Internet a un’applicazione
che possa processarli e restituirli all’utente sotto forma di informazioni importanti.
L’obiettivo finale è quello di ottenere in maniera semplice e immediata il monitoraggio di qual-
siasi attività desiderata, grazie all’oggetto intelligente dedicato allo scopo, ma anche quello di
semplificare il controllo a distanza e di incentivare l’automazione, come avviene già da tempo
in ambito domestico con la domotica.
In realtà, i sensori per misurare ogni aspetto della realtà sono disponibili già da tempo. Il valo-
re aggiunto all’oggetto smart è dato proprio dalla connessione a Internet, che consente all’og-
getto di dialogare con banche dati, altri dispositivi e applicazioni specifiche.
Gli ambiti di utilizzo e le applicazioni di questa nuova frontiera sono davvero innumerevoli. Si
stima che da qui a un anno saranno oltre 25 miliardi i dispositivi smart connessi a Internet.

sicurezza
gestione
gestione energia
energia
gestione impianti Wi-Fi gestione impianti logistica
elettrodomestici

smart robotica
sicurezza buildings smart
manufacturing
vendita
gestione impianti on-line

domotica ne t de l l e co remote

t er s e
care
In

sorveglianza pronto
smart health intervento
ecc. ecc.
mobile monitoraggio
wearable pazienti
fissa
ricoveri
smart smart agrifood
mobility
collari smart
previsioni
meteo
posteggi
traffico urbano

programmazione
traffico extraurbano lavorazioni
orologi smart prenotazioni
irrigazione

Il Web e i suoi sviluppi futuri D2 335


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

I contesti nei quali ci sono “cose” che possono comunicare e generare informazioni sono, per
esempio:
• la casa e la domotica;
• gli edifici intelligenti (smart building) e la bulding automation;
• lo smart manufacturing (la fabbricazione intelligente), il monitoraggio in ambito indu-
striale, la robotica;
• l’industria automobilistica, l’automotive, la self driving car (macchina con pilota auto-
matico);
• la smart health (sanità intelligente), il mondo biomedicale;
• tutti gli ambiti della telemetria;
• tutti gli ambiti della sorveglianza e della sicurezza;
• smart city, smart mobility;
• smart agrifood, precision farming, sensori di fields;
• wearable (tecnologie indossabili) per animali;
• wearable per gli esseri umani.

Le fasi dello IoT


Tutto può essere misurato e controllato: le nostre abitudini, i processi aziendali, le fasi mani-
fatturiere, il nostro stato di salute. Dunque, lo scopo ultimo dell’Internet of Things è quello di
migliorare l’ambiente, la vita, perfezionando fasi e processi, aumentando la produttività, l’effi-
cienza e la sicurezza. Tali risultati sono ottenuti attraverso un processo costituito in generale
dalle fasi seguenti:
• rilevazione dell’ambiente attraverso i device;
• invio delle informazioni attraverso la rete per la relativa gestione (immagazzinamento,
selezione, ricerca, filtraggio, ecc.);
• analisi dei dati e rilevazione degli aspetti significativi;
• reazione alle informazioni rilevanti.

Una coltivazione gestita tramite dispositivi smart, per esempio, permetterebbe di razionaliz-
zare tutte le risorse del settore regolando l’irrigazione in base alle reali e istantanee necessità
delle piante. Questo permetterebbe un notevole risparmio all’azienda agricola, che utilizzereb-

Rilevazione Archiviazione Presentazione Reazione


tramite dispositivi
tradizionali

uso industriale
N e t w o r k

Gestione

altri contesti di utilizzo

336 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

be molta meno acqua, avvantaggiando l’ambiente e riducendo lo spreco di una risorsa prezio-
sissima.
Internet delle Cose è una vera e propria “Nuova Internet”, perché apre prospettive un tempo
inimmaginabili, in cui gli oggetti assumono un ruolo attivo grazie al fatto di essere in rete e di
poter inviare e ricevere dati dalla rete.

La sicurezza nello IoT


Tutti i dispositivi collegati alla rete privata o aziendale forniscono, di fatto, degli entry point
per eventuali attacchi informatici. Come tutti i dispositivi gestibili attraverso Internet, è neces-
sario utilizzare delle misure di sicurezza che riescano a impedire le intromissioni.
È recente la notizia di un attacco da parte di un “esercito” di frigoriferi a un server, che ne ha
fatto collassare tutti i servizi, fino a renderlo inutilizzabile.
In questo caso, i cracker hanno sfruttato non un bug di sistema, ma semplicemente un bug
sulla sicurezza. I proprietari dei frigoriferi in questione, non considerando l’elettrodomestico
una minaccia né per se stessi, né per Internet, hanno ritenuto non indispensabile modificare
la password di accesso al sistema, lasciando quella di default, uguale per tutti, impostata dal
costruttore. Pertanto, entrare all’interno del dispositivo è stato un gioco da ragazzi.
È fondamentale, quindi, considerare qualsiasi “cosa” collegata a Internet alla stregua dei nor-
mali pc sui quali, già da tempo, adottiamo tutte le possibili misure per garantire un livello
sufficiente di sicurezza.
Sempre più spesso, purtroppo, vengono effettuati attacchi allo scopo di nuocere a specifiche
aziende o a determinate attività. È pertanto necessario progettare e attuare forme di protezio-
ne ad hoc e specificatamente rivolte a proteggere aziende da insidiose minacce.
Occorre anche un continuo monitoraggio e controllo dei device IoT per evitare tentativi di
sabotaggio.
Il maggiore problema a livello di sicurezza è determinato dal fatto che la protezione dai rischi
per lo IoT non è univoca e assoluta. Una falla nella sicurezza di un device collegato alla rete
può compromettere l’intera rete aziendale. Pertanto, si rende necessaria una suddivisione della
rete in aree, in modo da minimizzare i rischi, riducendo la superficie d’attacco.
La percezione che i device IoT non siano un problema è molto alta, come dimostra il seguente
risultato di un’indagine svolta negli Stati Uniti nel 2017.

Frequenza con cui si testano le applicazioni per i dispositivi IoT


Mensilmente 0%

Annualmente 5%

Sporadicamente 7%

Ogni volta che


14%
cambia il codice

Test non organizzato 26%

Fonte:
Nessun test 48% Ponemon Institute©
Research Report

Il Web e i suoi sviluppi futuri D2 337


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Se a questo aggiungiamo l’elevata crescita, negli ultimi anni, di attacchi malware nel campo
IoT, ci rendiamo conto che bisogna subito correre ai ripari per evitare gravi conseguenze.

World Wide Iot Malware 2019 – 111% in più rispetto allo stesso periodo del 2018

Fonte: SonicWall Security Center© Capture Labs Threat Metrics

5 Big Data
Per poter funzionare, lo IoT ha bisogno di raccogliere e archiviare una grossa mole di dati.
Tutti questi dati raccolti servono a farlo funzionare correttamente. Affinché sia davvero utile,
è infatti importante processare, raccogliere e analizzare grandi volumi di dati in tempo reale,
relativi agli ambiti cui tale tecnologia è applicata. Per questo, i dati dello IoT vanno integrati
con le tecnologie con cui si analizzano i cosiddetti Big Data.
L’espressione Big Data è oggi molto usata in differenti settori. Ma che cosa significa Big Data?
Non deve trarci in inganno la traduzione letterale del temine; Big Data non significa “grandi
dati” o “grandi quantitativi di dati”, come i più intendono; dietro a tale termine c’è ben altro.
Ciò che porta ad assumere tale interpretazione imprecisa, oltre al termine fuorviante, è l’effet-
tiva enorme quantità di dati che vengono prodotti quotidianamente dai sensori digitali, dagli
smartphone, dallo IoT, dal cloud computing, dalle transazioni online ecc. I dati vengono gene-
rati con un flusso così crescente che tutte le informazioni immagazzinate nel corso degli ultimi
due anni ha superato l’ordine degli zettabyte (1021 byte), cioè l’ordine di un triliardo di byte.
Lo zettabyte (termine composto dal prefisso zetta-, che deriva dal greco sept e indica la settima
potenza di 1000, e byte) è un’unità di misura dell’informazione o della quantità di dati.

Quando si parla di Big Data ci si riferisce in realtà all’analisi, tramite strumenti appropriati,
di una quantità immensa di informazioni da cui trarre indicazioni utili al miglioramento
dei servizi e dei prodotti dei diversi settori.

Le 3 V
Alla base della realtà indicata con Big Data, ci sono gli sviluppi tecnologici che hanno reso
possibile tutto questo: le reti telematiche sempre più veloci, i processori sempre più potenti in
grado di svolgere complessi algoritmi di analisi in tempi brevissimi e le memorie sempre più

338 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

veloci e performanti. Ma già dal 2000 era chiaro che il concetto di Big Data ruotava attorno alle
cosiddette 3 V:
■ volume: non si può prescindere dalla risorsa costituita dai dati. Ormai le organizzazioni
raccolgono dati da una grande varietà di sorgenti: transazioni finanziarie, social media,
sensori. In passato lo storage (immagazzinamento) sarebbe stato un problema, ma le nuove
tecnologie hanno ridimensionato, se non addirittura eliminato, tale problema;
■ velocità: i dati viaggiano a una velocità sempre più elevata e questo fatto obbliga a una
gestione tempestiva degli stessi. L’uso sempre più comune di sensori ambientali, sistemi di
telelettura, lettori di informazioni biomediche e altro ancora sta aumentando la necessità
di gestire fiumi di dati in tempo reale o quasi;
■ varietà: i dati, poiché arrivano da di-
Volume Devices
spositivi e protocolli di comunicazione
differenti, hanno formati differenti; si
può trattare infatti di dati strutturati e
numerici provenienti da database tra-
dizionali e di dati non strutturati, quali Velocità Analytics
documenti di testo, e-mail, video, audio,
dati generati da sensori e da transazioni
finanziarie.
La fase analitica è una delle più importanti Varietà Cloud
dell’intero processo di esame dei Big Data;
non tanto perché consente di presentare e
cercare le informazioni volute, ma perché
fornisce le soluzioni strategiche per poter
intervenire nel contesto applicativo e operare le opportune decisioni. Non va dimenticato che
le soluzioni strategiche in questo ambito hanno ricadute nella vita reale, perché da esse un’a-
zienda ricava valore.

6 L’Industria 4.0
L’Industria 4.0 (conosciuta anche come Smart Manufacturing) è stata sicuramente un pre-
cursore del mondo IoT. Le applicazioni a essa relative sono attive da diversi anni, addirittura
da prima che si iniziasse a parlare di Internet delle Cose. Questo ha consentito di considerare
questo settore uno dei più maturi. L’Industria 4.0 coniuga tematiche legate all’automazione
con tematiche legate al settore della robotica.
L’Industria 4.0 è caratterizzata dalla maggiore flessibilità della produzione e dall’unione e con-
certazione delle tecnologie chiave per fornire la flessibilità, la semplicità, la connettività e l’a-
pertura necessarie per una nuova operatività industriale.

La quarta rivoluzione industriale


Il termine 4.0 è stato ideato per alludere alla quarta rivoluzione industriale, il processo
che porterà alla produzione industriale del tutto automatizzata e interconnessa.

Dai robot che autoapprendono, all’utilizzo di una sensoristica avanzata in grado di potenziare
il monitoraggio e il controllo lungo tutta la filiera produttiva, insieme a una potenza elabora-

Il Web e i suoi sviluppi futuri D2 339


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

tiva e a connessioni sempre più affidabili e sicure; dall’uso di stampanti 3D a una programma-
zione orientata a strumenti di simulazione e ad applicazioni di realtà aumentata, il digitale
favorisce l’integrazione e la cooperazione aziendale e interaziendale, migliorando la qualità dei
flussi informativi. Da tutto ciò nasce non solo lo smart manufacturing, ma anche la smart
supply chain (la gestione intelligente della catena di distribuzione), entrambi declinazioni del
paradigma IoT, che sta portando più efficacia e più intelligenza in molteplici settori e ambiti
aziendali.
Un ulteriore termine affine a quello dell’Industria 4.0 è Fabbrica 4.0. Figlia anch’essa della
quarta rivoluzione industriale, la Fabbrica 4.0 contempla però esclusivamente i macchinari,
lasciando fuori altri processi industriali.

Dalle macchine al servizio


Non si può immaginare di portare nel cloud le migliaia di informazioni al Nuovi
millisecondo, prodotte dalle macchine smart, così come sono. Si rende ne- servizi
cessario utilizzare delle architetture a più livelli, che riescano a trasfor- Informazio
ni
mare i dati grezzi in servizi utili al ciclo produttivo.
La figura a destra illustra, per esempio, come si possono trasformare Inte
certificagzrazione e
i dati di campo in servizi innovativi per nuovi modelli di business ione dei d
ati
secondo il paradigma dell’IoT. Dati grezz
i correlati
Legato a questo discorso vi è un ulteriore fattore da evidenzia- in campo
re. All’interno della stessa società spesso la rete di fabbrica Segnali a
nalo
e quella aziendale sono due realtà completamente staccate, prelevati gici e digitali
dal campo
la cui interazione avviene solo in minima parte.

RETE DI FABBRICA RETE AZIENDALE


Cad, Cam ... ERP, CRM, BI ...

Backup

Interconnessione
Industria 4.0

Invece tutti i sistemi interni a un’unità produttiva devono agire in modo integrato. È pertanto
indispensabile che le macchine si interconnettano ai sistemi aziendali (ERP, BI, …) attraverso
un’integrazione degli standard di fabbrica con quelli ICT.

340 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME D2
IL WEB E I SUOI SVILUPPI FUTURI
AUDIO

L'evoluzione del Web a Internet. Non solo i classici dispositivi,


Nel Web 1.0 l’utente era un semplice spettatore come pc e cellulari, ma qualsiasi oggetto che
senza la possibilità di interagire con le varie potenzialmente si possa connettere online,
piattaforme. in grado di fornire e/o ricevere dati attraverso
Nel Web 2.0 l’utente interagisce e contribuisce apparati di sensori e attuatori.
a creare i contenuti del Web (forum, blog, social Scopo principale del dispositivo collegato a
network, …). Internet, quindi, è quello di rilevare e raccogliere
Il Web 3.0 introduce il concetto di semantica informazioni. Tali dati vengono memorizzati e
applicata ai dati, in modo tale che possano essere successivamente filtrati, organizzati, validati,
gestiti e manipolati direttamente dai computer integrati, aggregati ecc. La gestione dei dati
(metadati, algoritmi di intelligenza artificiale, …). diviene indispensabile per rilevare aspetti
Il Web 4.0 si integra nella realtà fisica connettendo importanti in modo da agire ed eventualmente
sistemi e persone (IoT, Big Data, …). modificare la realtà.
La realtà virtuale I Big Data
È una realtà costruita interamente al computer, Il cloud computing e lo IoT hanno contribuito
la cui fruizione può avvenire in maniera non a produrre, trasferire e gestire grandi quantitativi
immersiva e quindi attraverso il monitor, oppure di dati, ma il concetto di Big Data non si limita solo
immersiva, utilizzando dei dispositivi indossabili a questo, quanto alla capacità di utilizzare tutte
(data glove, visori stereoscopici, sensori, …). queste informazioni per elaborare, analizzare
La realtà aumentata e trovare riscontri oggettivi nei diversi contesti
A differenza di quella virtuale, la realtà aumentata di osservazione.
aggiunge degli elementi virtuali a una realtà fisica
Industria 4.0
già esistente.
La nuova rivoluzione industriale ha le sue basi
Lo IoT sul paradigma IoT. La gestione e interconnessione
Con il termina Internet of Things (in sigla: IoT) dei sistemi industriali porta a una gestione smart
si definiscono gli oggetti reali che sono connessi in molti settori industriali e aziendali.

Il Web e i suoi sviluppi futuri D2 341


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME D2
MAPPA
MODIFICABILE

IL WEB

LE FASI
SVILUPPI
DEL WEB
Realtà
Immersiva
Realtà Virtuale
Contenuti solo
Web 1.0
da leggere

Volume
Web 2.0

Big Data

Web 3.0

Web 4.0

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Che tipo di contenuto gestiva il Web 1.0?
2) Come si definisce la realtà virtuale che necessita di dispositivi indossabili?
3) A quale delle 3V si riferisce il concetto di grandi quantitativi di informazioni?
4) In che modo il Web 2.0 ha gestito i contenuti?
5) Qual è il concetto principale introdotto dal Web 3.0?
6) Quali elementi consente di far interagire il Web 4.0?
7) Come si definisce la realtà virtuale fruita esclusivamente attraverso lo schermo del pc?
8) Quando si aggiungono elementi virtuali alla realtà fisica ci troviamo davanti a quale tipo di realtà?
9) Qual è la caratteristica principale dello IoT?
10) A quale delle 3V si riferisce il concetto di trasferimento sempre più performante delle informazioni?
11) Come viene indicata, all’interno dei Big Data, la differente tipologia di informazione?
12) Con quale termine è conosciuto lo sviluppo della quarta rivoluzione industriale?

342 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo D2
1. Vero o falso? 4. Nel Web 1.0 i contenuti erano realizzati da:
a I data glove sono dei caschi per la realtà V F A utenti finali
virtuale. B sviluppatori
b I dispositivi head tracking sono in grado di V F C blogger
rilevare i movimenti della testa.
D revisori
c I marker sono dei disegni su carta. V F
d Il Web 1.0 è ideato per realizzare blog. V F 5. Il Web 2.0 aggiunge al Web 1.0:
e Il Web 3.0 aggiunge significato ai dati V F A dei nuovi linguaggi di programmazione
attraverso i metadati.
B dei nuovi protocolli
f Il Web 4.0 interfaccia Internet alla realtà. V F
C la possibilità di inserire nuovi argomenti
g Nella IoT qualsiasi oggetto può essere V F
D maggiori contenuti da parte di più utenti
interconnesso.
h La possibilità di trattare numeri molti grandi V F 6. Il Web 3.0 è definito anche Web:
viene definita come Big data.
A semantico
i L’Industria 4.0 porterà a una maggiore V F
interconnessione di tutti i settori aziendali. B sintattico
C logico
l La realtà virtuale non è immersiva. V F
D connesso
m Il Web 3.0 ha sostituito in tutto i precedenti. V F
n La realtà aumentata si basa sul mondo V F 7. Il Web 3.0 consente di mettere in relazione:
reale.
A utenti
o Nel Web 2.0 lo spettatore è un lettore V F
passivo. B dati
p IoT prevede che tutti i dispositivi siano V F C risorse
connessi a Internet. D programmi
q L’espressione Big Data si riferisce V F
esclusivamente alla grande quantità di dati 8. Completa la seguente frase.
prodotti. Internet of Things è uno dei termini che sentiamo
spesso quando si parla di ______________.
2. La filosofia IoT rappresenta: L’utilizzo di questi oggetti intelligenti
A la possibilità di avere computer sempre più potenti (______________) sta permettendo una vera e
propria ______________ all’interno delle aziende
B il modo in cui le persone si scambiano che ora sono sempre più connesse sfruttando
informazioni i ______________ per ottimizzare i loro processi
C la possibilità di interconnettere oggetti di natura produttivi.
differente
(Industria 4.0, dati, rivoluzione, smart)
D il modo in cui evolve Internet grazie alle nuove
infrastrutture di rete 9. IoT significa:

3. Quale delle seguenti caratteristiche non è A dispositivi connessi alla rete in grado di produrre
direttamente correlata ai Big Data: informazioni
B oggetti in grado di elaborare una grande mole
A memorie sempre più grandi ed evolute
di informazioni
B velocità delle reti C computer con prestazioni sempre più elevate
C grandi quantitativi di dati prodotti D fasi elaborative sempre più complesse
D Privacy sui dati

Il Web e i suoi sviluppi futuri D2 343


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

10. Completa la seguente frase. 13. Le tecnologie IoT prevedono che i dispositivi
I Big Data caratterizzano una nuova tecnologia abbiano:
di acquisizione, gestione, ______________ A un pc collegato
e trattamento dei ______________ in grandi B dei software potenti
______________ e in diversi ______________.
C una connessione a Internet
(volumi, formati, analisi, dati)
D degli strumenti di analisi
11. La realtà virtuale si differenzia da quella
aumentata per: 14. Si parla di Big Data quando:

A utilizzo di infrastrutture di rete differenti A vengono analizzati grandi quantitativi di dati


B contesti di uso differenti B siamo in presenza di dati numerici elevati
C volume di informazione e dati C un dispositivo genera molti dati
D differente percezione sensoriale D si realizzano grandi data base

12. Indica, nei seguenti esempi, l'utilizzo della


15. Completa le seguenti frasi.
tecnologia VR o AR: a Si parla di semantica nel ___________________ .
a una foto nella quale inserire il nome b La realtà virtuale ___________________ ha bisogno
del soggetto ____ di dispositivi da indossare.
b un video nel quale inserire i nomi delle c Volume, velocità e ___________________
persone inquadrate sulle proprie teste ____ rappresentano il mondo dei Big Data.
c una sessione di un gioco con un visore ____ d Un sistema in grado di effettuare il riconoscimento
facciale all’interno di un tribunale rientra
d una scheda cartacea che se inquadrata
all’interno della realtà ___________________ .
da un tablet anima i personaggi contenuti
e Quando la tecnologia IoT viene introdotta
al suo interno ____
e all’interno di un’azienda siamo davanti
una visita al museo sul proprio pc ____
a una rivoluzione industriale chiamata
___________________ .
(varietà, immersiva, industria 4.0, aumentata,
Web 3.0)

344 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

D3 L’informatica giuridica
nella società digitale

IMPARERAI…

A conoscere il Diritto A conoscere il Codice A comprendere il Codice A utilizzare il Sistema


d’Autore e le varie tipologie sulla Privacy dell’Amministrazione Digitale Pubblico di Identità Digitale
di software

1 La tutela giuridica del software


I software sono tutelati civilmente e penalmente dalla normativa sul Diritto d’Autore in
quanto opere dell’ingegno che appartengono alle scienze e si esprimono in linguaggio tecni-
co-convenzionale, concettualmente parificabile all’alfabeto o alle sette note. Il requisito della
creatività è dato dalla novità e dall’originalità dello sforzo intellettuale, sia pur di modesto merito.

Il Diritto d’Autore o Copyright può essere definito come il diritto riconosciuto all’autore
di un’opera dell’ingegno di carattere creativo, a discapito della libera utilizzazione da parte
della collettività.

Nell’ordinamento italiano, la normativa a tutela del software è stata codificata dal D.lgs. n. 518
del 1992, che ha esteso al software la tutela già prevista per le altre opere dell’ingegno con la
Legge 633 del 1941 sul Diritto d’Autore: legge già dichiarata applicabile al software da nume-
rose sentenze.
L’approvazione della Direttiva 2009/24/CE del Parlamento e del Consiglio europeo, del 23 aprile
2009, relativa alla tutela giuridica dei programmi per elaboratore, che codifica e sostituisce la
direttiva 91/250/CEE del Consiglio europeo del 14 maggio 1991, offre l’occasione di ripercorrere
brevemente l’evoluzione della tutela del software in Europa alla luce della rilevante normativa
internazionale e comunitaria.
È infatti opportuno sottolineare come la direttiva in esame, nonostante apporti solo modifiche
di carattere formale, senza incidere sul contenuto sostanziale delle norme della direttiva del
1991, sia nondimeno indice della volontà delle istituzioni comunitarie di mantenere l’originaria
impostazione, con riferimento soprattutto alla forma di tutela adottata per questa particolare
categoria di beni immateriali. La direttiva 2009/24/CE, come si dirà, conferma infatti la scelta
per una tutela del software basata sul paradigma del Diritto d’Autore e non invece, come pure
è stato proposto nel recente passato, secondo il sistema brevettuale.

Per software si intende “un programma per elaboratore in qualsiasi forma espresso purché
originale, quale risultato di creazione intellettuale dell’autore” (Art. 2, comma 8, Legge sul
Diritto d'Autore modificata dal D.lgs. n. 518 del 1992).

L’informatica giuridica nella società digitale D3 345


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Nella seguente Tabella sono stati riportati, cronologicamente, i passaggi legislativi.

Delibera del 14 maggio 1991 Il Consiglio della Comunità Europea approva la Direttiva 91/250 relativa
alla tutela giuridica dei programmi per elaboratore

Art. 7 della Legge n. 489 Viene posta in attuazione la precedente direttiva comunitaria
del 19 dicembre 1992

D.lgs. n. 518 del 29 Viene recepita la direttiva comunitaria e viene modificata la Legge del
dicembre 1992 22 marzo 1941 sul Diritto d’Autore, inserendo anche la tutela giuridica
dei programmi per elaboratore

D.lgs. n. 169 del 1999 La Legge sul Diritto d’Autore è estesa anche alle banche dati

Legge n. 248 del 2000 Viene inasprito il regime sanzionatorio per la duplicazione e diffusione
di software pirata

Direttiva 2009/24/CE Viene confermata la scelta di basare la tutela del software sul paradigma
del Diritto d’Autore

È stata prevista per la prima volta nell’ordinamento italiano la possibilità di perseguire pe-
nalmente chiunque acquisti o detenga software pirata, anche per uso strettamente personale
(“costituirebbe” reato anche la duplicazione di un videogioco originale di un amico).
L’Art. 103 comma 4 della Legge sul Diritto d’Autore ha istituito il pubblico registro speciale
presso la SIAE (Società Italiana Autori ed Editori), nel quale è possibile registrare software a
pagamento. Tale registrazione non è obbligatoria, come per le opere letterarie o le altre opere
dell’ingegno, ma offre una maggiore tutela all’autore sia dal punto di vista penale, perché sono
previste sanzioni più severe per la violazione del Diritto d’Autore del software registrato, sia dal
punto di vista civilistico, perché costituisce prova della paternità della creazione del software e
garantisce una data certa della creazione.

La legge tutela la forma espressiva del programma, non le idee o i principi che ne sono
alla base: ciò che non si può imitare o copiare è la forma finale, il “confezionamento” (che va
distinto dalla “confezione”).

Le sanzioni nella legge penale italiana


Abbiamo detto che
L’obiettivo della legge era quello di limitare al massimo un illecito uso la legge tutela la
commerciale dei programmi per computer. forma espressiva
In linea con quanto previsto in materia di violazione del Diritto d’Auto- del programma, il
re per le opere letterarie e/o artistiche nella Legge n. 633/41, sono state confezionamento.
Che cosa significa
previste pene detentive da tre mesi a tre anni e pene pecuniarie anche esattamente?
considerevoli in particolare per i reati di: Comprendiamolo
con un esempio: non
• duplicazione a fini di profitto di software senza averne titolo; è tutelata l’idea di
• importazione, distribuzione, vendita, detenzione di software pirata; realizzare un programma
• concessione in locazione dei programmi; di elaborazione testi;
• manomissione di dispositivi di protezione. chiunque sia in grado
di realizzarlo può farlo.
Appare evidente come l’elemento lucrativo sia caratterizzante di ogni Ciò che invece non può
tipo di reato. Ricordiamo che l’unica copia che può essere realizzata dal essere fatto è creare un
elaboratore testi uguale
detentore del software originale è una copia per fini di sicurezza (per a uno già esistente,
esempio, una copia di backup). quello tutelato.

346 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

È l’autore che decide che cosa permettere a chi acquista o detiene il suo software.

Nell’ambito del Diritto d’Autore, si distinguono due categorie di diritti fondamentali:


• i diritti morali
• i diritti di utilizzazione economica.

■ I diritti morali mirano a tutelare la personalità dell’autore, il suo onore e la sua reputazio-
ne con una corretta comunicazione agli altri delle sue opere.
■ I diritti di utilizzazione economica, detti anche diritti patrimoniali, stabiliscono l’utiliz-
zo economico dell’opera, che può avvenire in ogni forma e modo.

2 Software e licenze
“Acquistare un software” è un’espressione abbastanza comune, ma nel-
la stragrande maggioranza dei casi è sbagliata. Quello che si acquisisce, Il software rientra
nell’ambito del Diritto
a pagamento o a titolo gratuito, è la licenza d’uso di un software e non d’Autore per quel che
il software in sé. In pratica, si acquista il diritto d’uso del software en- riguarda la tutela giuridica,
tro i termini della licenza fornita dall’autore. un po’ come un quadro
Finora abbiamo parlato di “generico” Diritto d’Autore relativo a un “ge- o un libro, anche se
con alcune differenze
nerico” software che è soggetto a tutela, o meglio i cui autori desiderano derivanti dalla natura
che sia tutelato. Ma non tutti gli autori desiderano sempre lo stesso tipo stessa dell’oggetto da
di tutela. Si hanno quindi software soggetti a diversi livelli di tutela. tutelare. Leggere, capire e
osservare la licenza di un
Prima di addentrarci nella classificazione d’uso dei tipi di software, oc- software è fondamentale
corre evidenziare, schematizzandole, le due differenti filosofie estreme per comprendere che
cosa esattamente
presenti attualmente nel mondo dell’informatica. si è acquistato e, di
■ Il software è un prodotto industriale i cui sorgenti sono segreti conseguenza, ciò che si
può o non si può fare con
industriali; chi copia, diffonde, modifica il software è un crimi- quel software.
nale informatico e va perseguito. Esempi di questa filosofia sono
tutte le licenze d’uso di software proprietari.
■ “Il software è un patrimonio inalienabile dell’umanità (di cui cioè non ci si può appro-
priare); chi copia, diffonde, modifica il software accresce tale patrimonio ed è quindi un be-
nefattore”. Esempi di questa seconda filosofia sono le licenze GPL (General Public License)
di alcuni software liberi, come per esempio il sistema operativo LINUX.
Ovviamente, tra queste due filosofie estreme si collocano tutte le differenti sfumature.

Il software libero o open source


Il software libero o open source è un software distribuito assieme al
Molte case costruttrici
suo codice sorgente; chiunque può avere il permesso di uso, copia e di- talvolta usano il termine
stribuzione, in forma modificata o meno. free software per riferirsi
Software libero vuol dire: disponibilità dei sorgenti ed eventuale possi- al prezzo (attenzione: in
inglese free significa sia
bilità di distribuzione anche a fini di lucro del software sul quale sono
“libero” che “gratuito”!).
state apportate eventuali modifiche. Con questo termine, quindi, si fa
riferimento alla libertà e non al prezzo.

L’informatica giuridica nella società digitale D3 347


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Se è modificato, il software libero viene classificato in:


• software libero con permesso d’autore (la modifica deve generare altro codice libero);
• software libero senza permesso d’autore (la modifica può generare sia codice libero, sia
codice non libero).

■ Il software con permesso d’autore è software libero le cui con-


L’espressione copyleft
dizioni di distribuzione non permettono ai redistributori di porre
(talvolta tradotto in italiano
alcuna restrizione aggiuntiva all’atto di ridistribuire o modificare con “permesso d’autore”)
il software. Questo significa che ogni copia del software, anche se è un gioco di parole sul
modificata, dev’essere a sua volta software libero. La licenza che termine inglese copyright,
nel quale la parola “right”,
regola questo utilizzo del software va sotto il nome di copyleft.
che in inglese significa
In sostanza, il software con permesso d’autore è un software che “diritto” (in senso legale),
comprende i sorgenti (è infatti software libero), ma con l’unica re- viene scambiata con “left”,
strizione che obbliga chi lo ridistribuisce a lasciarlo libero. che significa “ceduto”;
giocando sul secondo
La licenza GPL è un caso particolare di software con permesso significato della parola. Si
d’autore. può notare come la parola
“right” (ovvero “destra”)
■ Il software senza permesso d’autore o di pubblico dominio è viene scambiata con “left”
software libero con restrizioni sulla distribuzione del risultato del- (“sinistra”).
la sua modifica. Se un programma è libero, ma è senza permesso
d’autore, alcune copie o versioni modificate potrebbero non essere
affatto libere. Un’azienda di software potrebbe infatti modificare
e ricompilare il programma, distribuendo il file eseguibile come
software proprietario.
Il software di pubblico dominio è software privo di Copyright. Talvolta si usa il termi-
ne “dominio pubblico” in un’accezione vaga per intendere “libero” o “disponibile gratuita-
mente”. Tuttavia, il dominio pubblico è un termine legale che significa precisamente senza
Copyright. Per chiarezza, conviene utilizzare il termine “di dominio pubblico” solo con
questo significato.

Il software semilibero
Il software semilibero è software non libero (quindi non è rilasciato con i sorgenti), ma di-
stribuito col permesso per i privati di usarlo, copiarlo, distribuirlo e modificarlo (incluse le
versioni distribuite con modifiche) senza scopo di lucro.

Il software proprietario
Il software proprietario non è libero né semilibero. Il suo utilizzo, ridistribuzione o modi-
fica sono proibiti oppure richiedono il permesso, o sono sottoposti a vincoli tali che in pratica
non si possono effettuare modifiche liberamente. Questo software non è rilasciato con i sorgen-
ti, la sua copia e distribuzione sono a pagamento.

Il software freeware
Il termine freeware non ha una definizione comunemente accettata, ma è comunemente uti-
lizzato per i pacchetti software che possono essere ridistribuiti, ma non modificati, e il cui
codice sorgente non è disponibile. Questi pacchetti non sono software libero, ma il loro uso e
distribuzione con o senza scopo di lucro è comunque gratuito.

348 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il software shareware
Lo shareware è software che dà la possibilità di ridistribuire copie, ma impone a chiunque
continui a usarne una copia di pagarne la licenza d’uso.
Generalmente, chi ha realizzato un programma ne concede l’utilizzo per un limitato periodo
di tempo, decorso il quale l’utente, se trova il prodotto di proprio gradimento, deve pagare una
somma per ottenere la licenza e continuare a utilizzarlo.
In qualche caso, viene fornita a scopo valutativo una vecchia release del programma o una sua
versione non completamente funzionante; in altri casi, vengono inserite delle limitazioni che
rendono impossibile un uso completo del software.
Lo shareware non è software libero né semilibero né gratuito, perché:
• il codice sorgente non è disponibile per la maggior parte dei software shareware, pertanto
non è possibile modificarli;
• non è distribuito con il permesso di utilizzarlo senza pagare la licenza d’uso, neanche se
l’utilizzo è senza fini di lucro.

Il software commerciale
Il software commerciale è software sviluppato da un’azienda allo scopo di trarne un guada-
gno. Quindi il suo uso o distribuzione sono a scopo di lucro. Può essere libero oppure no.
Il significato del termine “commerciale” è quindi diverso dal significato del termine “proprieta-
rio”. Se è infatti vero che la maggior parte del software commerciale è anche proprietario, esiste
sia software commerciale libero, sia software non commerciale non libero.
Possiamo riepilogare tale classificazione nella seguente tabella, che presenta sinteticamente le
principali licenze del software.

Disponibilità Possibile Possibile Possibile Possibile Possibile Commerciale


sorgenti distribuzione distribuzione uso con uso senza modifica
con lucro senza lucro lucro lucro

Proprietario NO NO NO NO NO NO Sì

Shareware NO Sì Sì NO NO NO Sì

Freeware NO Sì Sì Sì Sì NO NO

Semilibero NO NO Sì NO Sì Sì Sì/NO

Libero con
permesso Sì Sì/NO Sì/NO Sì/NO Sì/NO Sì Sì/NO
d’autore

Libero senza
permesso Sì Sì Sì Sì Sì Sì Sì/NO
d’autore

L’informatica giuridica nella società digitale D3 349


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

3 La Privacy e il trattamento dei dati


Il GDPR
La normativa sulla Privacy era già garantita dal Codice in materia di protezione dei dati per-
sonali (Legge sulla Privacy n. 196 del 30/06/2003) e ha rappresentato una normativa che ha
inciso profondamente sulle responsabilità dei gestori di sistemi informatici. Tale normativa
ha consentito di porre un livello di attenzione ai dati, alla loro conservazione e trasmissione
molto elevata in Italia. Attenzione che è stata riconosciuta anche a livello degli Stati Membri
dell’Unione europea tramite il Regolamento UE-2016/679, meglio conosciuto con l’acronimo
inglese GDPR (General Data Protection Regulation, “Regolamento generale sulla protezione dei
dati”), promulgato nel maggio 2016, operativo dal maggio 2018 e direttamente applicabile in
tutti gli Stati UE.

Puoi approfondire
la trattazione su
La criminalità
informatica
nel menu
Materiali aggiuntivi
del libro digitale.

È facile intuire che la strada sia stata molto più facile per coloro i quali (aziende, enti privati e
pubblici, professionisti) si erano già adoperati per garantire il massimo rispetto della normati-
va esistente in materia di riservatezza e protezione dei dati personali (non solo il D.lgs. 196/03,
ma anche i numerosi provvedimenti del Garante per la Privacy).
Il GDPR si rivolge a tutte quelle imprese che elaborano e raccolgono dati personali di cittadini
europei e offrono servizi o prodotti all’interno del mercato unico. Il GDPR ha effetto anche se
le aziende che possiedono i dati hanno sede al di fuori dei confini della UE, per esempio negli
USA, dove sono situate molte società informatiche.
La nuova normativa, pertanto, prevede che tutte le aziende si adeguino, allo scopo di garantire
una tutela diretta ai cittadini.
Il GDPR prevede che debbano necessariamente essere adottate, da parte delle aziende, le se-
guenti misure minime:
• definizione di una politica di conservazione dei dati;
• verifica delle condizioni di legalità dei trattamenti e delle fattispecie per cui è necessario
richiedere il consenso;
• revisione dei rapporti con tutti i responsabili esterni dei trattamenti; revisione/aggiorna-
mento dell’analisi dei rischi per la definizione di misure di sicurezza adeguate;
• per gli enti pubblici, l’obbligo di individuare e nominare un DPO (Data Protection Officer),
ovvero un Responsabile della protezione dei dati.

350 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Dati personali
La definizione di dato personale e dato sensibile viene ampliata all’interno di questa nuo-
va normativa e, quindi, non solo circoscritta ai classici dati come indirizzo o numero di te-
lefono, ma anche agli identificativi online come cookie, indirizzi IP, geolocalizzazione ed
e-mail.

Il Regolamento, infatti, individua tre categorie di dati, elencati nella tabella che segue.

Dati personali Qualsiasi informazione che possa identificare la persona, incluso nome, cognome,
identificativi indirizzo, caratteristiche fisiche e anche identificativi online

Dati sensibili • Origine razziale ed etnica


• Convinzioni religiose, filosofiche o di altro genere
• Opinioni politiche
• Adesione a partiti, sindacati, associazioni o organizzazioni a carattere religioso,
filosofico, politico o sindacale
• Stato di salute e vita sessuale

Dati • Dati genetici: dati ottenuti tramite analisi di DNA o da un campione biologico
super sensibili • Dati biometrici: qualsiasi caratteristica fisica identificativa della persona, come
l’impronta digitale, l’iride o l’immagine facciale

Le ultime due categorie di dati sono qualificate dal GDPR


Non sempre il diritto di portabilità
come categorie particolari di dati personali rispetto ai quali è potrà essere esercitato: la norma trova
vietato qualsiasi trattamento e il consenso dev’essere rilascia- un’eccezione nei casi in cui si tratta
to per iscritto dall’interessato. di dati contenuti in archivi di interesse
Il Regolamento offre la possibilità, a qualsiasi utente, di trasfe- pubblico, come per esempio le anagrafi.
La norma vieta, in un’ottica garantista,
rire i dati da un titolare del trattamento a un altro, garanten- il trasferimento di dati personali verso
do la portabilità dei propri dati personali. Il cittadino deve, organizzazioni internazionali che non
infatti, poter ottenere facilmente una copia dei propri dati rispondono agli standard di sicurezza in
personali, in un formato leggibile e facilmente trasferibile. materia di tutela della Privacy.

Accountability
Il principio di accountability, tradotto in italiano con il termine “responsabilizzazione”, ri-
chiede al titolare del trattamento non solo il rispetto degli obblighi iniziali previsti nel Rego-
lamento, ma soprattutto una continua attività di controllo e verifica delle fasi di gestione dei
dati.
La norma prevede un ampliamento degli obblighi in materia di tutela dei dati personali da
parte del titolare e del responsabile del trattamento.
Bisogna dimostrare di aver adottato delle misure giuridiche, organizzative, tecniche, per la
protezione dei dati personali, anche attraverso la messa in atto di specifici modelli organizza-
tivi, pertinenti al settore di interesse in cui si svolge la propria attività.
La volontà di raccogliere i dati obbliga le aziende, per adeguarsi al nuovo Regolamento, all’os-
servanza dei seguenti punti specifici:
• consentire all’utente di fornire il proprio consenso in modo esplicito e tracciabile;
• realizzare e pubblicare un’informativa sul trattamento dei dati personali che sia traspa-
rente, chiara e facilmente accessibile;

L’informatica giuridica nella società digitale D3 351


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

• assicurarsi che i dati raccolti siano pertinenti, adeguati e limitati alle finalità per cui
vengono raccolti e gestiti.
Gli utenti, pertanto, devono fornire alle aziende un consenso esplicito per il trattamento dei
dati personali; inoltre, la società deve esprimere con chiarezza quali sono le finalità del tratta-
mento dei dati e se questi vengono utilizzati da società terze (nel caso di fini pubblicitari). La
richiesta, quindi, dev’essere presentata in modo che sia facilmente riconoscibile, chiara, com-
prensibile.
Nonostante abbia dato il consenso, l’utente ha il diritto di revocarlo se lo ritiene opportuno e di
esprimerlo nuovamente nel caso in cui venga effettuata una modifica del trattamento dei dati
o vengano implementati nuovi servizi o funzioni nel programma, nel sito web, nella app e in
qualsiasi altro strumento che prevede l’utilizzo dei dati personali degli utenti.
Non è più permesso alcun utilizzo dei dati per scopi non consentiti o per ogni altra iniziativa;
i dati potranno essere raccolti e utilizzati solo ed esclusivamente per gli scopi indicati esplici-
tamente nel consenso.
Il principio di responsabilizzazione per le aziende, nella fase di adeguamento al GDPR, diviene
un fattore determinante, dovendo garantire la massima sicurezza dal momento della raccolta
sino a quello dell’elaborazione e conservazione dei dati.

Data breach
Con l’espressione data breach viene indicata una violazione dei
dati personali. La tenuta del registro
costituisce uno dei
principali elementi di
Se si verifica la violazione, il titolare del trattamento è obbligato a noti- accountability del titolare,
ficarla tempestivamente all’Autorità Garante e all’interessato. Se non lo in quanto è utile per una
completa ricognizione e
fa, si espone alla possibilità di sanzioni amministrative.
valutazione dei trattamenti
Uno strumento fondamentale, di cui le aziende si devono dotare, al fine svolti e quindi è finalizzato
di garantire il corretto funzionamento di questo meccanismo normati- anche all’analisi del
vo è senz’altro il registro del trattamento dei dati personali. rischio e a una corretta
pianificazione dei
In caso di violazioni, il titolare dovrà informare anche tutti gli interes- trattamenti.
sati e offrire loro indicazioni su come intende limitare i danni.

352 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

DPO
Per alcune società (in particolar modo quelle della Pubblica Amministrazione) è previsto l’ob-
bligo di integrare all’interno del proprio organigramma per la Privacy la figura del DPO, il
responsabile della protezione dati.
Il DPO dev’essere in grado di controllare, gestire e valutare il processo di trattamento dei dati,
allo scopo di far rispettare la normativa. Per farlo, deve avere delle buone competenze trasver-
sali, che abbraccino l’informatica, il diritto, la gestione dei processi, e naturalmente le cono-
scenze tecniche, legislative e amministrative che caratterizzano il settore.
Il DPO, anche se non è il titolare del trattamento dei dati, proprio per il suo ruolo di garante e
responsabile della gestione relativa al trattamento dei dati, deve godere di un’autonomia de-
cisionale nello svolgimento delle sue funzioni, affinché queste ultime non vadano in conflitto
con quelle degli altri operatori coinvolti nella catena di gestione dei dati.

Misure tecniche
La normativa prevede che, per il trattamento dei dati personali, dovranno essere predisposte
e attuate delle misure tecniche e organizzative idonee a garantire un livello di sicurezza ade-
guato al rischio.
Alcune delle misure che il titolare o il responsabile del trattamento dei dati potranno concre-
tamente adottare sono:
• la pseudonimizzazione e la cifratura dei dati personali;
• la capacità di assicurare la continua riservatezza, integrità, disponibilità e resilienza
dei sistemi e dei servizi che trattano i dati personali;
• la capacità di ripristinare tempestivamente la disponibilità e l’accesso dei dati in caso di
incidente fisico o tecnico (disaster recovery);
• una procedura per provare, verificare e valutare regolarmente l’efficacia delle misure tecni-
che e organizzative al fine di garantire la sicurezza del trattamento.

■ Pseudonimizzazione e cifratura Per quanto concerne, la pseudonimizzazione, questa


dev’essere intesa come “il trattamento dei dati personali in modo tale che questi non pos-
sano più essere attribuiti a un interessato specifico senza l’utilizzo di informazioni aggiun-
tive, a condizione che tali informazioni aggiuntive siano conservate separatamente e sog-
gette a misure tecniche e organizzative intese a garantire che tali dati personali non siano
attribuiti a una persona fisica identificata o identificabile” (Art. 4 GDPR dell’UE/2016/679).
Un’altra misura che potrà essere adottata è quella della cifratura dei dati, da realizzare
attraverso l’utilizzo di meccanismi che normalmente prevedono l’impiego di algoritmi di
crittografia.
■ Resilienza Il concetto di resilienza dei sistemi e dei servizi informatici che trattano i
dati personali si riferisce, in termini molto generali, alla capacità intrinseca di un sistema
di adattarsi alle condizioni d’uso e di resistere all’usura, al fine di assicurare sempre la
disponibilità dei servizi che vengono forniti e l’adeguata protezione dei dati che vengono
trattati con tali sistemi.
■ Disaster recovery La norma attribuisce rilievo anche al concetto di disaster recovery,
che consiste nella capacità di reagire in modo efficace e tempestivo a eventuali criticità
dovute a incidenti fisici o tecnici, allo scopo di ripristinare la disponibilità e l’accesso dei
dati personali oggetto di trattamento.

L’informatica giuridica nella società digitale D3 353


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

LE PRINCIPALI CAUSE DI INCIDENTI FISICI O TECNICI – 2019

44% 32% 14% 7% 3%


Malfunzionamento Errori umani Malfunzionamen- Malware Disastri naturali
hardware to software

Fonte: www.cloudwords.com

■ Sicurezza del trattamento Alla luce di tutto questo, sarà importante quanto indispen-
sabile per i titolari predisporre un programma specifico attraverso il quale analizzare in-
nanzitutto i rischi che potrebbero andare a colpire il sistema informatico e, di conseguen-
za, prevedere le adeguate misure da adottare per minimizzare i rischi e predisporre un
piano di emergenza che consenta di utilizzare un sistema alternativo in attesa della com-
pleta riattivazione di quello in uso.

Il comportamento di chi opera con i dati


Tra i rischi legati al comportamento degli operatori, il più elevato è sicu-
ramente quello dell’insufficiente custodia della password di accesso al Il termine insider
indica personale
sistema informativo; nella maggior parte dei casi, si pone pochissima con- interno all’azienda,
siderazione all’utilizzo della password e la stessa spesso viene condivisa tra dipendenti o ex
più utenti (per esempio, gestendo in comune uno stesso computer); inoltre, dipendenti che
ricordare diverse password può risultare dispendioso per alcuni utenti poco sottraggono,
danneggiano
avvezzi a tali procedure (d’altra parte, l’acquisto di sistemi tecnologici alter- o distruggono
nativi di accesso al sistema, quali token, sistemi biometrici e così via, non intenzionalmente
sarebbe conveniente per i costi elevati). Pertanto, confidando nella buona importanti dati
fede dei colleghi e ignorando i rischi di perdita/furto dei dati legati all’uso aziendali.
delle credenziali di autenticazione, spesso gli utenti finiscono per garantire
un facilissimo accesso al sistema informativo ai cracker o agli stessi insider
che, sfruttando le tecniche di social engineering (ingegneria sociale), pos-
sono avere accesso o recare danno al patrimonio informativo dell’azienda.
Il termine phishing
D’altra parte, la ridotta esperienza acquisita da parte dell’utente e la sua for- è una variante del
mazione (spesso percepita semplicemente come obbligatoria) non consen- termine inglese
tono una garanzia contro la fuga o il furto di dati. Inoltre, nelle procedure fishing, che
di trattamento dei dati (salvataggio, memorizzazione su diverso supporto, e significa “pescare”.
Allude all’uso di
così via) può capitare spesso un errore umano: distrazione, scarsa memoria, tecniche sempre
poca disponibilità all’apprendimento possono causare arresti degli stru- più sofisticate per
menti informatici con una conseguente indisponibilità del dato. “pescare” dati
In costante aumento è inoltre il fenomeno del phishing, ovvero il furto di in- sensibili, codici
e password di un
formazioni sensibili, codici e password, rilevato soprattutto in ambito ban- utente.
cario, ma tendente anche a carpire informazioni sulla gestione del sistema
informativo all’interno delle aziende.

354 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Le responsabilità del dipendente


L’uso delle apparecchiature informatiche da parte del dipendente dev’essere regolato da nor-
me certe, in quanto da comportamenti non leciti, anche inconsapevoli, possono derivare gravi
conseguenze sia sul piano tecnico, come la perdita di dati, sia su quello penale, nonché proble-
mi di immagine per l’azienda stessa.

4 Il Codice dell’Amministrazione Digitale


Grazie ai molteplici scenari che condizionano la nostra vita, il rapporto tra Amministrazio-
ne e cittadino si è modificato; la società non è più chiusa in se stessa, ma appare aperta ad
affrontare qualsiasi questione in maniera attiva; di conseguenza, anche
l’Amministrazione ha dovuto adeguarsi a questo cambiamento.
Da soggetto passivo, rispetto all’azione amministrativa, qual era, oggi
Il CAD (Codice
il cittadino diviene elemento attivo, capace e competente. Di questo dell’Amministrazione
nuovo soggetto l’Amministrazione non può negare l’esistenza; al con- Digitale) ha subito diversi
trario deve considerarlo e fare tesoro della sua presenza per migliorare innesti e aggiornamenti
il processo comunicativo che intrattiene con lui. in questi anni. Rilevanti
sono anche i Decreti
Risale al 2005 l’emanazione del Codice dell’Amministrazione Digita- del Presidente del
le (CAD, D.Lgs. 7 marzo 2005, n. 82). Con tale normativa, si è stabilito Consiglio dei Ministri
il preciso obbligo per le Pubbliche Amministrazioni (PA) di produrre i (DPCM) in materia di
documenti esclusivamente in modalità informatica. Amministrazione Digitale.

Il processo di dematerializzazione dei flussi documentali all’interno delle Pubbliche Am-


ministrazioni non rappresenta solo un obbligo normativo, ma soprattutto un’opportunità
per raggiungere livelli di maggior efficienza, efficacia, trasparenza, semplificazione e parte-
cipazione.

Codice
dell’Amministrazione
Digitale
D.Lgs. 82/2005

Regole tecniche Regole tecniche Regole tecniche


Protocollo Sistemi Documento
informatico di conservazione informatico
DPCM del DPCM del DPCM del
03/12/2013 03/12/2013 13/11/2014

Pubblicato in G.U. Pubblicato in G.U. Pubblicato in G.U.


il 12/03/2014 il 12/03/2014 il 11/02/2015

L’informatica giuridica nella società digitale D3 355


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Il documento informatico
Al centro dello scenario aperto dal rapporto tra Amministrazione e cittadino c’è il documento
informatico.

Il documento informatico è definito all’Art. 1 del CAD come “la rappresentazione informa-
tica di atti, fatti o dati giuridicamente rilevanti”.

La caratteristica principale di un documento informatico è la sua forma elettronica (rappre-


sentazione informatica). Solo in questa forma, quindi, il documento informatico può essere
gestito (formato, acquisito, sottoscritto, trasmesso e conservato).
■ Il valore giuridico e legale del documento informatico A differenza dei documenti
tradizionali cartacei, le cui regole di archiviazione sono relativamente semplici, per i do-
cumenti informatici sono necessarie particolari accortezze in grado di garantire il man-
tenimento del loro valore giuridico e legale durante tutto l’arco della loro vita. Allo scopo
è necessario dotarsi di regole, di procedure giuridiche, legali, archivistiche, tecnologiche e
funzionali e di strumenti in grado di assicurare, già dalle prime fasi, una corretta forma-
zione del documento informatico e una conseguente conservazione conforme alla norma.
Al centro del processo qualificante di efficienza, efficacia e trasparenza dell’azione am-
ministrativa nelle Pubbliche Amministrazioni vi è una corretta gestione, con strumenti
informatici, dei flussi documentali. Diviene quindi un momento fondamentale il processo
di dematerializzazione dei documenti.
■ Le caratteristiche di qualità e sicurezza del documento informatico Un sistema di
gestione documentale informatico deve garantire che un documento integri le caratteristi-
che di qualità e sicurezza ed essere in grado di:
• garantire la sicurezza e l’integrità del sistema;
• garantire la corretta e puntuale registrazione di protocollo dei documenti in entrata
e in uscita;
• fornire informazioni sul collegamento esistente tra un documento ed eventuali docu-
menti realizzati a completamento dello stesso;
• consentire il reperimento delle informazioni riguardanti i documenti registrati;
• consentire, in condizioni di sicurezza, l’accesso alle informazioni del sistema da par-
te dei soggetti interessati, nel rispetto delle disposizioni in materia di trattamento dei
dati personali;
• garantire la corretta organizzazione dei documenti nell’ambito del sistema di classi-
ficazione d’archivio adottato.
Per qualità di un documento viene intesa la capacità dello stesso
di rendere fruibili le informazioni in esso contenute.
■ La leggibilità del documento informatico e la scelta dei for-
Il formato dipende
mati Il documento informatico dev’essere in grado di garantire dall’applicazione utilizzata
la “leggibilità” del suo contenuto, e questo dipende dal formato nella fase di formazione del
con cui viene rappresentato. La scelta dei formati risulta estre- documento. Di conseguenza,
mamente importante e, dal punto di vista della leggibilità dei do- una determinata
applicazione può interpretare
cumenti informatici, decisiva. correttamente e operare solo
su file il cui formato è noto
all’applicazione stessa.

356 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

L’associazione tra il documento e il soggetto:


la sottoscrizione elettronica
Nella maggior parte dei documenti, l’associazione tra il documento e il soggetto è garantita
dalla sottoscrizione; pertanto si è reso necessario utilizzare un sistema di sottoscrizione, in
questo caso elettronica, anche per il documento informatico, in grado di garantire il legame
tra il firmatario e il documento. A differenza di quella cartacea, la sottoscrizione elettronica si
traduce in un processo informatico basato spesso su sistemi di crittografia che devono garan-
tire la paternità del documento.
La normativa disciplina quattro diverse tipologie di sottoscrizione elettronica, già trattate
più estesamente nell’Unità C2.
• La firma elettronica
• La firma elettronica avanzata
• La firma elettronica qualificata
• La firma digitale

CON LA FIRMA DIGITALE


È POSSIBILE

Firmare Consultare e
e autenticare depositare atti,
atti, documenti documenti
e contratti e contratti

Interrogare Partecipare
online i servizi a bandi
della Pubblica e concorsi
Amministrazione

Il valore legale (probatorio) di un documento informatico sottoscritto con firma elettroni-


ca non qualificata è rimesso alla valutazione del giudice per ogni singolo caso, in relazione
ai requisiti di qualità e di sicurezza del sistema utilizzato.

Il valore legale (probatorio) di un documento informatico sottoscritto con firma elettro-


nica qualificata o firma digitale è quello della normale scrittura privata (Art. 2702 del
Codice civile).

Il sistema di firma qualificata o digitale garantisce:


• all’autore del documento informatico di renderne manifesta l’autenticità, analogamente
a quanto avviene apponendo la firma autografa su un documento cartaceo;
• al destinatario del documento informatico di verificarne la provenienza e l’integrità.
Applicare una firma digitale si traduce sostanzialmente nel collegare il documento a un cer-
tificato che identifichi univocamente il soggetto. Tale certificato viene consegnato al titolare
all’interno di una smart card o di un token USB; pertanto l’applicazione della firma richiede
di utilizzare il certificato insieme a un apposito software di firma e verifica.

L’informatica giuridica nella società digitale D3 357


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Esiste anche la possibilità di depositare il proprio certificato su un


Il certificato del sottoscrittore
server sicuro (su di un HSM, Hardware Security Module), che si trova deve essere garantito da una
nella generalità dei casi presso il Certificatore Accreditato che ha Certification Authority (CA)
rilasciato il certificato di firma. Tale meccanismo, noto come firma inclusa nell’Elenco Pubblico dei
remota, è una particolare procedura di firma elettronica qualifi- Certificatori pubblicato dall’AgID
(Agenzia per l’Italia Digitale).
cata o di firma digitale, utilizzabile via web in modo facile e sicuro.

La conservazione dei documenti


La conservazione dei documenti rappresenta per le Pubbliche Am- La conservazione in ambiente
ministrazioni una funzione di carattere istituzionale. Esse sono digitale è dunque una funzione
infatti tenute per legge a conservare i propri documenti e archivi attiva e continua nel tempo, che
sia come testimonianza diretta delle loro azioni al servizio della deve iniziare fin dalla nascita
stessa dei documenti.
collettività, che come memoria storica (in quanto gli archivi e i do-
cumenti degli enti pubblici sono beni culturali).
L’Art. 43 del CAD stabilisce che i documenti informatici di cui è prescritta la conservazione per
legge o regolamento siano conservati “in modo permanente con modalità digitali” nel rispetto
delle regole tecniche. Pertanto, la produzione di documenti informatici implica anche la loro
conservazione in modalità informatica.
Nel mondo digitale, l’attenzione della conservazione deve spostarsi dal supporto al contenuto
e devono essere richieste politiche e pratiche efficienti per conservare e tramandare documenti
informatici, garantendo il mantenimento del loro valore giuridico nel tempo.
La conservazione si articola su due aspetti:
• la conservazione dei bit (bit preservation), intesa come la capacità di preservare i bit come
erano stati originariamente registrati, anche in caso di degrado del supporto, di obsole-
scenza dell’hardware e/o di disastri di sistema;
• la conservazione logica (logical preservation), intesa come la capacità di comprendere e
utilizzare l’informazione in futuro, conservando il contenuto intellettuale anche in presen-
za di futuri cambiamenti tecnologici e di conoscenza.
Un documento correttamente conservato deve avere le seguenti caratteristiche.
Autenticità È la caratteristica di un documento informatico che fornisce la garanzia che il documento
sia ciò che dichiara di essere, senza avere subito alterazioni o modifiche.
Integrità È la qualità di un documento di non avere subito modifiche non autorizzate.
Affidabilità Esprime il livello di fiducia che l’utente, cioè colui che legge il documento, ripone o può
riporre nel documento informatico.
Leggibilità È la caratteristica che definisce il mantenimento della fruibilità delle informazioni contenute
nel documento durante l’intero ciclo di gestione, dalla sua nascita, alla sua conservazione.
Reperibilità Esprime la capacità di reperire ed esibire il documento con le caratteristiche sopra riportate.

La conservazione di un contenuto informativo presuppone la for-


mazione e il mantenimento di un pacchetto informativo che si por-
ta dietro, oltre al contenuto stesso, le informazioni sulla conser-
vazione, le informazioni sull’impacchettamento e le informazioni Il sistema di conservazione
descrittive sul pacchetto utilizzate per ricercarlo. utilizza, per lo più, lo standard
OAIS (Open Archival Information
Giocano un ruolo fondamentale, quindi, anche i metadati, che System), che è fra i più diffusi.
identificano e qualificano il documento per renderne evidenti le
caratteristiche e le fasi documentali.

358 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

PROTOCOLLO
INFORMATICO

Gestione

FIRMA DOCUMENTO POSTA ELETTRONICA


DIGITALE Formazione Trasmissione CERTIFICATA
INFORMATICO

Conservazione

ARCHIVIAZIONE
DIGITALE

5 Lo SPID
Il Codice dell’Amministrazione Digitale prevede che il Sistema Pubblico di Identità Digi-
tale, conosciuto meglio con l’acronimo di SPID, diventi l’unico modo per fornire accesso ai
servizi online delle Pubbliche Amministrazioni da parte di cittadini e imprese.

AgID, d’intesa con il Garante per la Privacy, ha definito le regole


tecniche per l’adozione del sistema SPID e ciascun utente può ri- È attivo un portale www.spid.gov
chiedere il sistema a uno degli enti accreditati. Scopo dello SPID che fornisce tutte le informazioni
è quello di consentire, attraverso un PIN digitale unico (un’unica necessarie circa lo SPID e nella
identità), di accedere a tutti i servizi online dei siti della Pubbli- pagina servizi elenca tutte le
amministrazioni pubbliche con
ca Amministrazione. Naturalmente non tutte le Amministrazioni i relativi servizi erogati.
sono in linea con tale tecnologia, ma i servizi a cui accedere diven-
tano sempre più numerosi.

Livelli di accesso dello SPID


Attualmente è disponibile lo SPID di secondo livello. L’accesso al sistema è garantito dalle
credenziali e da un codice momentaneo (OTP), comunicato via sms o via app, da utilizzare
per l’accesso. Per il terzo livello, ancora non implementato, l’utente avrà bisogno anche di un
dispositivo fisico di accesso (come una smart card o una carta d’identità elettronica).

1 2 3

Identità SPID Identità SPID Identità SPID


di primo livello di secondo livello di terzo livello
Per esempio permette Per esempio permette Per esempio permette
l’autenticazione tramite l’autenticazione tramite password l’autenticazione tramite
ID e password stabilita e generazione di una One Time password e smart card
dall’utente Pasword inviata all’utente

L’informatica giuridica nella società digitale D3 359


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Gli attori coinvolti nel servizio SPID


Il ruolo di AgID è limitato alla supervisione del sistema e all’accreditamento
di enti che rilasciano le credenziali di accesso. Scendendo nel dettaglio, sono
previsti tre ruoli:
■ l’Identity Provider (IP) o gestore dell’identità digitale, che fornisce le
credenziali di accesso al sistema (identità digitali) e gestisce i processi
di autenticazione degli utenti. A lato è riportato un elenco degli IP ac-
creditati;
■ il Service Provider (SP) o fornitore di servizi, che mette a disposizione
servizi digitali accessibili tramite il login con credenziali SPID, solita-
mente le Pubbliche Amministrazioni;
■ l’Attribute Provider (AP): gli IP, di solito, conservano anche una serie
di informazioni collegate all’identità, che vengono chiamate Attributi
elementari (o non qualificati). E qui entrano in gioco gli AP, tutti quei
soggetti autorizzati dalla legge a certificare una qualifica (per esempio,
gli ordini professionali). Al momento gli AP accreditati sono:
• il Ministero dello Sviluppo Economico, che qualifica gli indirizzi Pec delle imprese e dei
professionisti;
• i Consigli, gli Ordini e i Collegi delle professioni regolamentate, per attestare l’iscrizio-
ne agli albi professionali;
• le Camere di Commercio, Industria, Artigianato e Agricoltura, per attestare cariche e
incarichi societari;
• l’AgID in relazione ai dati contenuti nell’indice degli indirizzi della Pubblica Ammini-
strazione e dei gestori di pubblici servizi.

Il funzionamento dello SPID


Lo schema a pagina seguente illustra come i vari ruoli del sistema SPID interagiscano fra loro
per concedere all’utente l’accesso a uno specifico servizio:
1. l’utente richiede un servizio al sito del SP (Pubblica Amministrazione);
2. il SP rimanda l’utente alla pagina di login dell’IP che ha rilasciato le credenziali;
3. l’IP richiede l’autenticazione attraverso un accesso a 2 livelli;
4. l’utente fornisce le credenziali;
5. l’IP reindirizza l’utente verso il SP con asserzione di autenticazione;
6. il SP ha bisogno di alcuni attributi particolari, che richiede all’AP;
7. una volta concessi gli attributi, l’utente può usufruire del servizio richiesto.

Benefici dello SPID


Un unico sistema centralizzato sicuramente porta a un evidente e concreto beneficio per le
PA. Infatti, le PA non dovranno più sostenere gli impegnativi oneri dovuti alle procedure di
autenticazione degli utenti, gestione degli accessi e conservazione in sicurezza dei dati e delle
informazioni sensibili. Di tutto questo si occupano gli Identity Provider, che se ne assumono
anche le relative responsabilità. In questo modo, viene meno per le PA un impegno gravoso, in
termini di costi e risorse, nel momento in cui si vogliono erogare dei servizi online.
Un secondo stimolo di espansione è dato dalla possibilità di affiancare lo SPID ad altri servizi,
per esempio quelli di firma digitale. Così facendo, l’autenticazione sicura con SPID verrebbe a

360 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

rappresentare la fase iniziale di una procedura unica attraverso la quale i Service Provider e
gli utenti potrebbero formalizzare la sottoscrizione di un servizio o l’apertura di un rapporto
contrattuale in modo totalmente digitalizzato.

2
SERVICE
PROVIDER (SP)

7
4

3 6

ATTRIBUTE
IDENTITY PROVIDER (AP)
PROVIDER (IP)
5

L’informatica giuridica nella società digitale D3 361


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

RIPASSIAMO INSIEME
L’INFORMATICA GIURIDICA NELLA SOCIETÀ DIGITALE
AUDIO

La tutela giuridica del software Accountability


Ai sensi dell’Art 6 del D.Lgs. n. 518/1992, SIAE cura Il termine accountability, ovvero
la tenuta del Pubblico Registro per il Software “responsabilizzazione”, si riferisce al fatto che
presso il quale possono essere registrati tutti i il titolare di un trattamento dati non è solamente
programmi per computer pubblicati che rispettino un mero esecutore delle misure imposte da una
requisiti di originalità e creatività tali da poter norma, ma diventa il “responsabile” delle misure
essere identificati come opere dell’ingegno. operative e tecniche che riterrà opportune,
efficaci e dunque adeguate alla salvaguardia
Software e licenze
dei dati che tratta.
Una licenza informatica (o licenza d'uso), in
informatica, è il contratto con il quale il titolare Il DPO
dei diritti di sfruttamento economico sul software È la persona che dev’essere in grado di controllare,
(programma informatico) definisce il regime gestire e valutare il processo di trattamento
giuridico di circolazione e le limitazioni nell'utilizzo dei dati, allo scopo di far rispettare la normativa
e nella cessione dell'opera. sulla Privacy.
I principali tipi di software in circolazione sono
Il CAD
i software proprietari, shareware, freeware,
Il Codice dell’Amministrazione Digitale
semiliberi, liberi con permesso d’autore
(CAD, D.Lgs. 7 marzo 2005, n. 82) rappresenta
e liberi senza permesso d’autore.
la normativa con cui si stabilisce il preciso obbligo
Il GDPR per le Pubbliche Amministrazioni (PA) di produrre i
ll Regolamento Generale sulla Protezione dei Dati documenti esclusivamente in modalità informatica.
(in inglese General Data Protection Regulation),
Lo SPID
ufficialmente Regolamento (UE) n. 2016/679 (più
Lo SPID è il PIN digitale unico (ovvero, l’unica
noto con la sigla inglese GDPR), è un Regolamento
identità) attraverso cui cittadini e imprese
dell'Unione Europea in materia di trattamento
possono accedere ai servizi online delle Pubbliche
dei dati personali e di Privacy, adottato il 27
Amministrazioni.
aprile 2016, pubblicato sulla Gazzetta Ufficiale
dell'Unione Europea, il 4 maggio 2016. Entrato in
vigore il 24 maggio dello stesso anno è diventato
operativo a partire dal 25 maggio 2018.

362 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

D3
MAPPA
MODIFICABILE

DIRITTO E INFORMATICA

IL SOFTWARE GDPR CAD SPID

Tipologie Copyright Accountability Il documento


e copyleft informatico

Dati

Personali

Completiamo la mappa concettuale.


Rispondi ai seguenti quesiti e serviti delle risposte per completare la mappa concettuale.
Per aiutarti, le risposte alle prime tre domande (quelle in nero) sono già inserite nella mappa.
1) Com'è definito il diritto riconosciuto all’autore di un software creativo?
Come viene chiamata la licenza che si contrappone a esso?
2) Come si definisce quel principio in cui bisogna dimostrare di aver adottato tutte le misure
a protezione dei dati?
3) In quale tipo di dati rientrano il nome e cognome di un soggetto fisico?
4) Quali sono le varie tipologie di software dal punto di vista della loro licenza d’uso?
5) Con quali termini viene indicata una violazione dei dati personali?
6) Come viene indicato nel GDPR il responsabile della protezione dei dati?
7) In quale tipo di dati rientrano le informazioni sulla salute? E quelli genetici?
8) Qual è lo strumento per sottoscrivere un documento informatico?
9) Qual è quella fase che deve consentire a un documento informatico di essere reperito
in qualsiasi momento con le caratteristiche immutate?
10) Quali sono i tre attori coinvolti nella gestione del sistema SPID?

L’informatica giuridica nella società digitale D3 363


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Metti a punto le tue


CONOSCENZE
TEST
Svolgi il test interattivo D3
1. Vero o falso? 6. La licenza GPL prescrive:
a Il Copyright non tutela il software V F A l’acquisto del software
b La Legge 633 del 1941 tutela il software V F B che, modificato il software, si possa trarne profitto
c La licenza d’uso è una forma di acquisto V F C di porre il software modificato sotto licenza GPL
del software D che il software modificato non sia libero
d La licenza GPL è un caso particolare V F
di copyleft 7. Una licenza software a scopo di lucro prevede
e Un software commerciale può essere V F l’utilizzo del software:
semilibero A freeware C shareware
f L’inserimento di un virus all’interno di un V F B proprietario D semilibero
sistema informatico è da considerarsi reato
g L’utente può revocare in qualsiasi V F 8. Il GDPR è
momento il consenso all’utilizzo dei dati
A un regolamento italiano
h Una buona resilienza di un software ne V F
determina una breve durata B un regolamento comunitario
i Un rivenditore online ha l’obbligo di V F C un regolamento comunitario non direttamente
descrivere le caratteristiche di un prodotto applicabile agli stati UE
j Lo SPID di secondo livello è ormai superato V F D un regolamento facoltativo

9. I dati relativi alla geolocalizzazione di un


2. Il Diritto d’Autore punisce: individuo appartengono alla sfera dei dati:
A l’utilizzo del software A sensibili
B la copia di un software B supersensibili
C l’uso non previsto del software C personali identificativi
D la vendita del software D personali anonimi

3. La reputazione di un autore viene tutelata 10. Il rispetto degli obblighi previsti dal Regolamento
dal Diritto d’Autore all’interno del diritto: sulla Privacy attiene al concetto di:
A patrimoniale A accountability
B morale B portabilità
C di utilizzazione economica C pseudonimizzazione
D privato D disaster recovery

4. Una licenza software non stabilisce: 11. L’espressione data breach indica:
A il modo in cui il software deve essere utilizzato A la conservazione dei dati personali
B il numero di postazioni su cui installare il software B il consenso all’utilizzo dei dati personali
C un utilizzo parziale del software C il trattamento dei dati personali
D la possibilità di fare delle copie D la violazione dei dati personali

5. Il codice sorgente è fornito insieme al software: 12. La possibilità di preservare i dati da un incendio
viene definita:
A proprietario
B freeware A resilienza
C semilibero B disaster recovery
D libero C pseudonimizzazione
D phishing

364 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

13. Il Codice dell’Amministrazione Digitale pone 19. Completa la seguente frase:


l’attenzione sulla: Il Diritto d’Autore sorge con la _________________
A sicurezza dei dati dell’opera considerata come _________________
B salute degli impiegati del lavoro intellettuale. Il titolare originario
dei diritti d’autore sull’opera è l’autore o gli
C trasformazione dei documenti autori dell’opera stessa, i quali sono legittimati
D gestione della documentazione in formato digitale a trasferire i diritti di _________________
sull’opera in tutti i modi e forme previsti dalla
14. Quale tra le seguenti non è una qualità richiesta _________________ .
per un documento digitale?
(utilizzazione economica, espressione, creazione,
A conservabilità legge)
B integrità
20. Completa la seguente frase:
C affidabilità
La licenza GPL è un caso particolare di
D leggibilità
_________________.
15. La bit preservation garantisce:
21. Completa la seguente frase:
A la leggibilità del contenuto L’accessibilità al _________________ sorgente
B la conservabilità dei dati è una condizione necessaria per il software
C l’integrità del documento iniziale _________________, altrimenti non avrebbe
senso la libertà di ridistribuire copie del
D l’affidabilità del documento
_________________ in modo da aiutare il
16. Lo SPID di terzo livello prevede: _________________ .
(prossimo, codice, programma, libero)
A l’invio di un token OTP
B la coppia di credenziali login e password 22. Completa la seguente frase:
C una carta elettronica Se viene _________________ un sito e mediante
D un dispositivo biometrico questo viene reso possibile “scaricare”
della musica senza che gli autori abbiano
17. L’autenticazione nel sistema SPID avviene _________________ le necessarie autorizzazioni,
presso: si può incorrere nelle sanzioni civili e penali che
prevede la legge, rispettivamente negli Art. 156
A Identity Provider
e successivi e 171 e successivi della Legge sul
B Service Provider _________________ d’Autore.
C Attribute Provider (concesso, Diritto, costruito)
D AgID
23. Completa la seguente frase:
18. Completa la seguente frase: Gli articoli di attualità, di carattere economico,
I diritti morali sono i diritti esclusivi che la politico, religioso, _________________ in
_________________ riconosce in favore dell’autore riviste o giornali possono essere liberamente
a tutela della sua _________________, e cioè il _________________ in altre riviste o
diritto di decidere se e quando pubblicare l’opera, _________________ , a meno che non sia stata
di rivendicarne la _________________ e di opporsi riservata. È d’obbligo però citare la rivista o il
a qualsiasi _________________ . giornale da cui sono _________________ , la
(paternità, legge, deformazione, personalità) data e il nome della rivista o giornale e il nome
dell’autore se viene riportato.
(giornali, riprodotti, pubblicati, estratti)

L’informatica giuridica nella società digitale D3 365


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

CLIL ASCOLTA
LA PRONUNCIA
GLOSSARIO
CLIL

Cloud computing AUDIO

What is cloud computing?


Cloud technology permits the use of any type of document
without USB sticks, hard drives and digital archives. Thus it
is possible to buy music, rent movies or browse e-books
on demand, paying for what you use, just as with water
or electricity.
iCloud, for example, is a new service from Apple that allows
music, photos and documents to be accessed directly from
your mobile phone or iPad, wherever you are.

How does it work?


Instead of being installed on the computer, software For advocates of free software, led by the American activist
is installed directly on the network, in a sort of “cloud”. Richard Stallman, the problems are related to privacy
Data, until now saved on the PC, is decentralized on various and censorship: power – says Stallman – risks becoming
servers: huge digital archives that the user can access from concentrated in the hands of a few large groups, which can
browsers and applications. block undesirable items from cyberspace.
In practice, instead of storing music and documents on your
home computer, you deposit them on the Internet and then In addition to Apple, who is experimenting
consult them using various devices. with cloud computing?
With cloud computing, work is entrusted to a “cloud” The first giant to jump into the mass market was Google,
of suppliers. The user accesses and uses the services. with Gmail, Google Docs and Android, which allow
you to access e-mail and documents directly from your
What are the benefits for users? smartphone. Even Microsoft, with the Azure platform,
Giving up USB sticks and mobile devices saves space has bet on the sector, focusing mainly on services for small
and lets you travel lighter. and medium-sized enterprises. But the market is expanding
But above all, with cloud technology you can create archives faster and faster.
that are accessible at any time. From vacation photos to
corporate documents, even medical records: everything How does the daily life of those who use these devices
is within reach of your smartphone. change?
Cloud computing moves many activities online. This means
Yes, but isn’t it risky? that if you want to write a letter, you will probably no longer
The biggest risk is that, in case of power failure or an use Word, rather you will open the browser and type in
accident to the servers, the services would be impossible a given WWW address. Cloud computing is based on the
to reach. Not a doomsday scenario: a spark in April concept of “Web Applications”, or web-based applications.
at Aruba headquarters, in Arezzo, sent thousands of The computer, therefore, should have only the power
websites into a tailspin and a few days later, a hacker attack required to run Internet Explorer (or Firefox, Chrome,
against Sony endangered the personal data (from the credit Safari, etc.) – When Eric Schmidt said: “The browser is the
card codes to bank accounts) of millions of customers. computer”, he was referring exactly to this.

Glossary … and now answer!


• iCloud 1 What is cloud technology?
service from Apple that allows music, photos and 2 Can you name some popular services of cloud
documents to be accessed from iPhone or iPad. computing?
• Azure
3 Who is experimenting with cloud computing?
cloud platform from Microsoft.
4 What are the risks of cloud computing?
5 Can I use cloud computing from my smartphone?
6 Do I need a USB stick for cloud computing?

366 Sezione D Internet: servizi, Privacy e sicurezza nella società digitale


Codice Fiscale: nctgrl03r12e156z
Cognome: Nicotra
Nome: Gabriele

Codice Fiscale: nctgrl03r12e156z


Cognome: Nicotra
Nome: Gabriele

Codice Fiscale: nctgrl03r12e156z

Potrebbero piacerti anche