1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

21
1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte

Transcript of 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

Page 1: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

1

OPS- Introduzione all’informatica

LUGO 7/5/2014terza parte

Page 2: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

2

UN (ALTRO) ESEMPIO DI PROBLEM SOLVING

PROBLEMA “TIPO”

Su una mappa (schematica) sono rappresentate delle città e delle strade che le congiungono (con la relativa lunghezza); trovare il percorso più breve tra due città assegnate (che non siano direttamente collegate).

Esempio di mappa

6

9

5

7

6

2

4

3

9

5n1

n4

n2

n3

n5

n6

n7

9

4

Page 3: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

3

• DEFINIZIONE: un disegno di questo tipo si dice grafo: è composto da nodi (con un nome) e da archi (con una lunghezza).

• N.B. Gli archi sono disegnati come segmenti di retta, ma rappresentano “strade” (non valgono le proprietà dei triangoli per le lunghezze).

• Le strade si suppongono a due sensi di percorrenza

• In tutti i problemi considerati il grafo è disegnato su un(a porzione di) piano e gli archi non si intrecciano (cioè si “incontrano” solo nei nodi). Un grafo così fatto si dice planare.

Page 4: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

4

PRIMO ESERCIZIORappresentare il “disegno” in maniera “non grafica”: cioè esprimere tutte le informazioni contenute nello schema in modo “testuale”.

SOLUZIONEarco(n1,n4,6) arco(n2,n6,7) arco(n3,n5,4) arco(n2,n7,4)arco(n7,n3,2) arco(n6,n4,9) arco(n5,n1,5) arco(n1,n3,3)arco(n5,n4,6) arco(n7,n5,9) arco(n5,n6,5) arco(n2,n5,9)

6

9

5

7

6

2

4

3

9

5n1

n4

n2

n3

n5

n6

n7

9

4

Page 5: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

5

DEFINIZIONE. Si dice termine una scrittura del tipo:<nome>(<argomento>,<argomento>,…)

Il grafo in figura è stato descritto da dodici termini, ciascuno dei quali è associato ad un arco del grafo.

Il nome del termine è “arco”; il primo argomento è il nome di un nodo, il secondo argomento è il nome di un altro nodo direttamente connesso al primo con un arco; il terzo argomento è la lunghezza dell’arco (dedotta dalla mappa).

N.B. È “consuetudine” (!) assumere come elementi fondamentali di “disegni” di questo tipo (e problemi di questo tipo) l’arco e “tradurre” il disegno con tanti termini quanti sono gli archi.

Page 6: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

6

N.B. Gli archi rappresentano strade a doppio senso di circolazione, quindi (stipuliamo che) i termini:

arco(n1,n4,6) e arco(n4,n1,6)rappresentano lo stesso arco: occorre sceglierne uno solo (uno qualunque dei due).

DOMANDA. I nomi delle “città” (i nomi dei nodi del grafo) compaiono come argomenti nei termini; quante volte?

Si è realizzata la “trasformazione”grafo elenco di termini

cioè un esempio della trasformazioneinformazioni grafiche informazioni sintattiche

N.B Useremo spesso la espressione “sintattico” per dire “testuale”

Page 7: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

7

SECONDO ESERCIZIO (esempio “semplice” del problema iniziale)

È dato un grafo descritto dal seguente elenco di archi:

arco(n1,n6,4) arco(n6,n4,3) arco(n4,n3,2) arco(n3,n2,8)

arco(n1,n2,1) arco(n1,n5,2) arco(n2,n5,3) arco(n5,n6,1)Disegnare il grafo e:

• trovare la lista L1 dei nodi che individua il percorso più breve tra n1 e n3 e calcolare la lunghezza K1 del percorso;

• trovare la lista L2 dei nodi che individua il percorso più lungo (senza passare più volte per uno stesso nodo) tra n1 e n3 e calcolare la lunghezza K2 del percorso.

Page 8: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

8

SCHEMA DI SOLUZIONE (1)

La prima parte dell’esercizio è il processo inverso di quello visto precedentemente: occorre realizzare la trasformazione

elenco di termini grafo

Per disegnare il grafo si osservi innanzitutto che vengono menzionati 6 nodi (n1, n2, n3, n4, n5, n6); si procede per tentativi: si disegnano 6 nodi nel piano e li si collega con archi rettilinei a due a due, come specificato dai termini elencati nel testo dell’esercizio; probabilmente al primo tentativo gli archi si incrociano, come per esempio nella seguente figura.

n3

n4

n6

n1

n5

n2

Page 9: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

9

SCHEMA DI SOLUZIONE (2)

Si cerca poi di risistemare i punti in modo da evitare gli incroci degli archi: (spesso) questo si può fare in più modi. Da ultimo si riportano le distanze sugli archi, come mostrato dalla figura seguente.

1

2

2

38

3

n3

n4 n6

n1n5

n2

4 1

Per rispondere alle due domande del problema occorre elencare sistematicamente tutti i percorsi tra n1 e n3, che non passino più volte per uno stesso punto.La maniera sistematica consiste (essenzialmente) nel costruire un albero (analogo a un albero genealogico!). Un albero è un grafo “particolare”: è articolato su “livelli” orizzontali; sul livello più alto esiste un solo nodo, detto radice. Ogni nodo, di un livello, può essere connesso a nodi del livello immediatamente più basso; ogni nodo, tranne la radice, è connesso a uno solo del livello più alto.

Page 10: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

10

SCHEMA DI SOLUZIONE (4)

n1

n2 n5 n6

n5

n6

n4

n6

n4

n2 n5

n2

n3

n4

n3

n3 n3

n3

n3

1

2

2

38

3

n3

n4 n6

n1n5

n2

4 1

Page 11: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

11

SCHEMA DI SOLUZIONE (5)

Nell’albero genealogico (maschile! “legge salica”) ogni personaggio ha un solo padre e può avere nessuno, uno o più figli. Quindi ogni nodo ha una sola catena di ascendenti (o antenati) che lo lega alla radice (il fondatore della “casata”). Un nodo che non ha figli si dice anche foglia.

L’albero si costruisce con le seguenti regole:• il nodo di partenza (del percorso) è la radice dell’albero; • ogni nodo ha tanti figli quanti sono i nodi connessi direttamente

(con un arco) a lui nel grafo originale con esclusione di quei nodi che compaiono come suoi antenati;

• un “ramo” si arresta se (non è possibile continuarlo o) se è il nodo di arrivo.

I possibili percorsi, di cui parla il problema, sono le successioni di nodi dalla radice alle foglie (consistenti nel nodo di arrivo).

Page 12: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

12

SCHEMA DI SOLUZIONE (6)

n1

n2 n5 n6

n5

n6

n4

n6

n4

n2 n5

n2

n3

n4

n3

n3 n3

n3

n3

1

2

2

38

3

n3

n4 n6

n1n5

n2

4 1

Tutti i possibili percorsi sono le successioni di nodi dalla radice alle foglie.

Esaminiamo in dettaglio la costruzione dell’albero.

Page 13: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

13

SCHEMA DI SOLUZIONE (7)

TERZO ESERCIZIO (all’interno del secondo)Descrivere tutti i percorsi tra n1 e n3.

SOLUZIONEUn percorso, definito come una successione di nodi, si può descrivere con un particolare termine detto lista, che ha il seguente schema:

[<elemento>, <elemento>, …]

L’albero costruito si può “arricchire” associando ad ogni ramo una informazione: la lunghezza, riportata come etichetta numerica associata al ramo.

A questo punto si possono elencare tutti i percorsi tra n1 e n3 come liste; inoltre è facile calcolare la lunghezza del percorso sommando i valori delle etichette numeriche di ogni ramo del percorso.

Page 14: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

14

SCHEMA DI SOLUZIONE (8)

n1

n2 n5 n6

n5

n6

n4

n6

n4

n2 n5

n2

n3

n4

n3

n3 n3

n3

n3

1

2

3

1

3 8

42

1

3

2

3 3

8

1

2

8

3

PERCORSO da n1 a n3 LUNGHEZZA[n1,n2,n5,n6,n4,n3] 10 [n1,n2,n3] 9 [n1,n5,n6,n4,n3] 8 [n1,n5,n2,n3] 13 [n1,n6,n4,n3] 9 [n1,n6,n5,n2,n3] 16

SOLUZIONEN.B. sono stati costruiti ed esaminati tutti i percorsi

Page 15: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

15

SCHEMA DI SOLUZIONE (9)

Il problema diceva:

• trovare la lista L1 dei nodi che individua il percorso più

breve tra n1 e n3 e calcolare la lunghezza K1 del percorso;• trovare la lista L2 dei nodi che individua il percorso più

lungo (senza passare più volte per uno stesso nodo) tra n1 e n3 e calcolare la lunghezza K2 del percorso.

L1

K1

L2

K2

L1 [n1,n5,n6,n4,n3]

K1 8

L2 [n1,n6,n5,n2,n3]

K2 16

SOLUZIONE

Page 16: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

16

SINOSSI DI QUELLO CHE È STATO FATTO (1)

Abbiamo:• enunciato un problema: in realtà non c’erano dati, quindi è stata

individuata una classe di problemi;• trasformato delle informazioni (grafiche) in stringhe di caratteri

opportunamente costruite, cioè in informazioni, meglio strutture,

sintattiche (dette anche strutture di dati);• enunciato un particolare problema (della classe prima vista) in cui le

informazioni erano di tipo sintattico (non grafico);• trasformato le strutture sintattiche del problema in strutture grafiche

(un grafo);• ragionato sulle strutture grafiche, costruendo altre strutture grafiche

(un albero);• dedotto da queste strutture grafiche delle strutture sintattiche (liste)

tra cui individuare la soluzione del problema.

N.B. Usiamo in modo informale le parole: informazioni, strutture sintattiche, strutture dati supponendo che sia “chiaro” cosa vogliano dire (senza definirle rigorosamente)

Page 17: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

17

SINOSSI DI QUELLO CHE È STATO FATTO (2)

Schematizzando (graficamente!!):

Problema con strutture sintattiche traduzione in strutture grafiche (grafo) ragionato e costruito altre strutture grafiche (albero)strutture sintattiche traduzione individuato la soluzione (sintattica!)

Sembrano esistere: - un “mondo”, a sinistra, in cui esistono solo strutture sintattiche

- un “mondo”, a destra, in cui esistono strutture “di vario tipo”

Page 18: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

18

SINOSSI DI QUELLO CHE È STATO FATTO (3)

Prima descrizione (approssimata):

il mondo a sinistra è quello dei il mondo a destra è quello degli “programmi” (informatici) “umani” che ragionano … che “ragionano” sintatticamente

L’informatica si può schematizzare nel modo seguente (mondo di sinistra):

Problema descrittoda strutture sintattiche programma strutture sintattiche che individuato la soluzione N.B. Il nostro modo di risolvere il problema (quindi le OPS!) è una preparazione all’uso dell’informatica, cioè una preparazione alla scrittura dei programmi per la soluzione dei problemi.

Page 19: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

19

SINOSSI DI QUELLO CHE È STATO FATTO (4)

In realtà esiste una corrispondenza “strettissima” tra

Informazioni/strutture sintattiche informazioni/strutture di altro tipo

con (poco) studio e (poco) allenamento si riesce a costruire un programma “traducendo” passo passo quello che si fa nel mondo di destra.

Programma algoritmo = manipolazione “sintattica” di strutture di dati (o di “simboli”)

E il mondo di destra?

stat rosa pristina nomine: nomina nuda tenemus (Bernardo da Cluny)

Page 20: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

20

PROBLEMAÈ dato un grafo descritto dal seguente elenco di archi:

arco(n1,n2,6) arco(n2,n3,7) arco(n3,n4,4) arco(n8,n7,4) arco(n7,n6,2) arco(n6,n5,9) arco(n8,n1,5) arco(n6,n3,3) arco(n5,n4,1) arco(n7,n2,9)

Si supponga che arco (n7,n2,9) sia a senso unico, percorribile solo da n7 verso n2.Disegnare il grafo e trovare:• la lista L1 del percorso più breve tra n1 e n4 e calcolarne la lunghezza K1• la lista L2 del percorso più lungo (senza nodi ripetuti) tra n1 e n4 e

calcolarne la lunghezza K1

L1

K1

L2

K2

ESERCIZIO FINALE

L1 [n1,n2,n3,n4]

K1 17

L2 [n1,n8,n7,n2,n3,n6,n5,n4]

K2 38

Page 21: 1 OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte.

21

Una citazione

Hommage à Marcel-Paul SchützenbergerIl m’a dit il y a longtemps qu’il considérait que son rôle était d’utiliser ses intuitions sur le traitement des données pour contribuer à enrichir les mathématiques d’objets et de propriétés nouvelles. Plaisantait-il?

Dominique Perrin, 1996