Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
PROBLEMI E MODELLI
NOTA: La scrittura del codice è solo l’ultimo passo!
PROGRAMMAZIONE: insieme delle attività che, a partire da un problema, conducono alla stesura di un programma che il computer dovrà eseguire per risolverlo.
DOMANDE FONDAMENTALI:
1. In cosa consiste il problema?
2. Come rappresentare il problema?
3. Come ottenere la soluzione?
DOBBIAMO IMPARARE A:
1. Analizzare il problema
2. Creare un modello
3. Usare metodi e strategie di risoluzione
ANALISI DEL PROBLEMA
TIPI DI PROBLEMI:
1. Problema di decisione (SI/NO)
2. Problema di ricerca (soluzione ammissibile)
3. Problema di ottimizzazione (migliore soluzione ammissibile)
NOTA: Il cliente, spesso, pone all’informatico il problema in forma poco chiara, nella quale non sono ben specificati i dati del problema, le relazioni tra essi, e gli obiettivi da ottenere.
OBIETTIVO dell’ANALISI: riformulare il problema
- focalizzando l’attenzione sui dati rilevanti, trascurando quelli superflui
- cogliendo le regole e le relazioni tra i dati
- indicando esplicitamente e chiaramente gli obiettivi da raggiungere
RIFORMULAZIONE DEL PROBLEMA (astrazione)
ESEMPIO:
Un treno parte da Milano per Lecce, composto da 3 carrozze di 1° classe e 7 carrozze di 2°
classe. A Milano salgono 120 persone in 1° classe e 230 in 2° classe. A Piacenza scendono
20 persone dalla 1° classe e 50 dalla 2° classe, e ne salgono 60 in 1° e 80 in 2°. A Rimini
scendono 40 persone dalla 1° e 50 dalla 2°, e ne salgono 30 in 1° e 70 in 2°. A Bari
scendono 20 persone dalla 1° e 80 dalla 2°, e ne salgono 10 in 1° e 40 in 2°. A Lecce
scendono tutti. Quante fermate ha fatto il treno?
RIFORMULAZIONE DEL PROBLEMA: Un treno parte da Milano, ferma a Piacenza, poi ferma a
Rimini, poi ferma a Bari e infine arriva a Lecce. Quante fermate ha fatto il treno?
ASTRAZIONE DEL PROBLEMA
TIPI DI ASTRAZIONE:
1. Astrazione funzionale
2. Astrazione sui dati
ASTRAZIONE FUNZIONALE: permette di separare la struttura interna di un problema o
sottoproblema da come appare all’esterno.
Si crea così un insieme di blocchi o black box di cui si specifica l’interfaccia ma non
cosa c’è all’interno.
fi u
u = f(i)
+
nodo sommatorei = i1 + i2
i1
i2i
u1
u2
u3
i
diramazionei = u1 = u2 = u3
ASTRAZIONE FUNZIONALE
cella frigoriferatemperatura temperatura+
-
controllotemperatura
regolatemperatura
NOTA: ci tornerà molto utile quando divideremo un programma in sottoprogrammi!
ESEMPIO: controllo automatico della temperatura di una cella frigorifera
ASTRAZIONE DEI DATI
Riguarda, come nell’esempio visto prima, il poter tralasciare i dati e gli obiettiviritenuti superflui o non importanti, focalizzando l’attenzione solo su quelli rilevanti.
Riguarda, inoltre, l’organizzazione dei dati in strutture astratte, in grado di operare per mezzo di macro operazioni tralasciandone i dettagli implementativi.
ESEMPIO: gestione della coda a uno sportello
PUSH
POP
MODELLAZIONE
Un modo per poter studiare meglio e comprendere a pieno il problema è quello di creare una sua rappresentazione semplificata, o modello.
Il modello è sempre un’astrazione del problema, perché in esso vengono rappresentati solo gli aspetti essenziali.
PROBLEMA
- gestione traffico
- ponte sullo stretto
- ricerca automatica soluzioni
- sistema informativo aziendale
MODELLO
- mappa stradale
- plastico/disegno 3D
- algoritmo
- database
MODELLAZIONE
I modelli possono essere:
- Descrittivi: riproducono la realtà in modo semplificato
- Predittivi: prevedono il verificarsi di una certa situazione (stocastici)
- Prescrittivi: impongono un determinato comportamento
- Matematici: descrivono le relazioni tramite equazioni e disequazioni
- Analogici: riproducono la realtà in scala in modo fedele
MODELLI DESCRITTIVI
Sono quelli che descrivono la realtà in modo semplificato, e possono essere di tipo:
grafico
tabellare
X=1 Y = 2
X = 2 Y = 4
X = 3 Y = 6
X = 4 Y = 8
simbolicoE = MC2
IL MODELLO GRAFICO
ESEMPIO: un treno parte dalla stazione A alle 12, e arriva alla stazione B alle 16, mentreun altro treno parte dalla stazione B alle 12, e arriva alla stazione A alle 16.
Esiste un punto nel quale essi si incontrano?
12 16
A
B
RISPOSTA: SI
IL MODELLO TABELLARE
ESEMPIO: Una ninfea nasce in un laghetto. Ogni giorno la sua superficie raddoppia, e in 8 giorni copre l’intera superficie del lago.
Quanto impiega a coprire metà lago?
giorno dimensione
1 1
2 2
3 4
4 8
5 16
6 32
7 64
8 128
RISPOSTA: 7 giorni
IL MODELLO TABELLARE
ESEMPIO: per strada, un uomo chiede a un conoscente l’età dei suoi tre figli. Il secondo risponde: «il loro prodotto è 36 e la loro somma è il numero civico di questa casa». Il primo ci pensa, e poi dice: «non riesco a determinarlo così». Il primo allora dice «il maggiore suona il flauto».
Quali sono le età dei tre figli?
Età I Età II Età III Somma
36 1 1 38
18 2 1 21
12 3 1 16
9 4 1 14
9 2 2 13
6 6 1 13
6 3 2 11
4 3 3 10
RISPOSTA:9 anni2 anni2 anni
IL MODELLO SIMBOLICO
ESEMPIO: Un mattone pesa 1 Kg più mezzo mattone
Quanto pesa il mattone?
𝑥 = 𝑝𝑒𝑠𝑜 𝑑𝑒𝑙 𝑚𝑎𝑡𝑡𝑜𝑛𝑒 𝑥 = 1 +𝑥
2
𝑥
2= 1
𝑥 = 2 𝑘𝑔
RISOLUZIONE DEL PROBLEMA
La risoluzione di un problema è un processo creativo non automatizzabile!
La strategia risolutiva richiede conoscenze (matematiche, fisiche, logiche, ecc.) e capacità di utilizzare tali conoscenze adattandole alle diverse situazioni.
Comunque, ci sono alcune tecniche che si possono usare per pervenire più facilmente alla soluzione di un problema. Esse possono appartenere a uno tra due diversi approcci:
- TOP DOWN o metodo diretto: a partire dai dati iniziali, si «costruisce» passo passo la soluzione
- BOTTOM UP o metodo indiretto: a partire dalla soluzione da ottenere, si risale passo passo a ritroso fino ai dati iniziali.
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
CONOSCENZA DELL’ARGOMENTO: una approfondita conoscenza dell’argomento di cui è oggetto il problema può sicuramente aiutare nell’elaborare la strategia risolutiva.
Questo permette di
- capire esattamente cosa bisogna fare
- avere a disposizione tutti i dati del problema
- analizzare tutte le possibili sfaccettature del problema, individuando i casi particolari
- avere ben chiaro l’obiettivo finale
- conoscere le regole utilizzabili e le implicazioni (sociali, giuridiche, economiche)
NOTA: l’informatico si trova spesso a diventare esperto di diversi altri argomenti!
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
PROCEDIMENTO PER TENTATIVI: La soluzione del problema, molto spesso, non arriva «al primo colpo», ma dopo una serie di tentativi falliti.
Prima di dire «non ci riesco» occorre:
- esplorare altre strade per la possibile soluzione del problema
- usare il «pensiero laterale»
- cercare la soluzione «più semplice» (è sempre la migliore!)
NOTA: l’informatico si trova spesso a vivere momenti frustranti!
ESEMPIO della LAMPADINA e dei 3 INTERRUTTORI:
- solo un interruttore accende la lampadina- si può entrare una sola volta a verificare lo stato
SOLUZIONE ANALITICA
IMPOSSIBILE
PENSIERO LATERALEOsservazione chiave: luce accesa, luce spenta, lampadina calda, lampadina fredda
SOLUZIONE- accendi due interruttori (A e B)- dopo qualche minuto spegni uno dei due (B)- vai a controllare
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
Il pensiero laterale
ESEMPIO dei 9 punti e delle 4 linee:Unire tutti i punti con 4 linee spezzate senza alzare la penna
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
Il pensiero laterale
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
Ricerca della soluzione più semplice
ESEMPIO: superficie totale di un cubo
Qual è la soluzione migliore?
Perché?
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
SFRUTTAMENTO DELL’ESPERIENZA: Non sempre i problemi sono totalmente nuovi, anzi, molto spesso «assomigliano» ad altri problemi che abbiamo già affrontato.
PROBLEMI SIMILI HANNO SOLUZIONI SIMILI!
E’ possibile allora, per analogia, adattare la soluzione di un problema già affrontato alla nuova situazione.
- Se l’analogia è perfetta, si parla di isomorfismo.
- Se l’analogia non è perfetta, si parla di somiglianza.
NOTA: l’informatico conosce molti problemi «tipo»!
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
ESEMPIO: il problema del commesso viaggiatore (TSP)
PROBLEMI SIMILI:
- trasposti (bus, corriere, camion, carrelli elevatori, carro ponte, ecc.)- scheduling e produzione manifatturiera- logistica (movimentazione del magazzino)- circuiti integrati (movimento del trapano e del saldatore, disposizione dei componenti
sulla motherboard)- mappatura del genoma umano- calcolo delle sequenze del DNA- routing di pacchetti tcp o datagram su internet- ecc.
Un commesso viaggiatore deve visitare N città, minimizzando il percorso.
Soluzione ottima? Difficile (problema NP-hard) N! soluzioni
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
ESEMPIO: il problema dello zaino (Knapsack)
Riempire lo zaino scegliendo tra N oggetti, ognuno dei quali ha un peso wi e un profitto pi.Obiettivo: massimizzare il profitto totale, non eccedendo il peso massimo C dello zaino.
PROBLEMA INFORMATICO: Progettare un algoritmo per la ricerca della soluzione ottima.
Soluzione ottima? Difficile (problema NP-hard) >N! soluzioni
PROBLEMI SIMILI: trasporti, 3G/4G/5G, taglio ottimo, reti neurali, ecc.
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
SCOMPOSIZIONE (divide et impera): Un problema complesso può essere risolto più facilmente scomponendolo in problemi più semplici.
Esempio: visualizza tutti i numeri primi minori di N
SCOMPOSIZIONE:
Sottoproblema1(visualizza tutti i primi fino a N):
- enumera tutti i numeri i da 1 a N
- per ogni i, determina se i è primo se si, visualizzalo
Sottoproblema2(determina se i è primo):
- enumera tutti i numeri j da 2 a i-1
- se non trovi un divisore i è primo
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
Esempio: area di un trapezio rettangolo
SCOMPOSIZIONE:
Sottoproblema1(area del rettangolo)
Sottoproblema2(area del triangolo)
Area_totale = Area_rettangolo + Area_triangolo
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
METODO DEDUTTIVO: Si determinano, a partire dai dati, alcune relazioni/conclusioni che sono il punto di partenza per nuove deduzioni che portano a nuove relazioni/conclusioni, e così via.
Il metodo deduttivo usa:
- Il sillogismo
- L’inferenza logica
Esempio di sillogismo
A. Tutti gli uomini sono mortali
B. Socrate è un uomo
Conclusione: Socrate è mortale
Esempio di sillogismo
A. Nessun pazzo è normale
B. Qualche genio è pazzo
Conclusione: Qualche genio non è normale
SILLOGISMO
B → C, A → B A → C
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
Regole dell’inferenza logica:
- Modus-ponens
- Modus-tollens
- …
MODUS-TOLLENS
A. P → Q (si verifica Q ogni volta che si verifica P)
B. not Q (non si è verificato Q)
Deduzione: not P (non si è verificato P)
MODUS-PONENS
A. P → Q (si verifica Q ogni volta che si verifica P)
B. P (si è verificato P)
Deduzione: Q (si è verificato Q)
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
ALTRE TECNICHE:
- Raggruppamento: cogliere caratteristiche comuni tra elementi
Esempio: la sentinella
Una spia ascolta il dialogo tra un soldato e la sentinella per carpire la parola d’ordine.
Sentinella: «12» Soldato: «6»
Sentinella: «10» Soldato: «5»
Sentinella: «8» Soldato: «4»
Sentinella: «6» Soldato: «3»
Sentinella: «OK passa»
Sentinella: «20» Spia: «10»
Sentinella: «ALLARME!»
SOLUZIONE: in quanti modi si possono raggruppare le coppie soldato-sentinella?
TECNICHE PER LA RISOLUZIONE DEL PROBLEMA
ALTRE TECNICHE:
- Esemplificazione: dedurre regola generale dal caso particolare
Esempio: giorni totali a partire dal 1 gennaio dell’anno 0
GENERALE:ESEMPIO:
Siamo al 3 Marzo dell’anno 2
- sono passati 2 anni (anno 0 e anno 1) +
- sono passati 2 mesi (gennaio e febbraio) +
- sono passati 3 giorni
Dati g, m, a:
a*360 giorni per gli anni +
(m-1)*30 giorni per i mesi +
g giorni