210 likes | 323 Views
OPS- Introduzione all’informatica. LUGO 7/5/2014 terza parte. n4. 6. 9. 6. n1. 5. n6. 5. n5. 3. 4. 9. 7. 9. n3. 2. n7. n2. 4. UN (ALTRO) ESEMPIO DI PROBLEM SOLVING. PROBLEMA “TIPO”
E N D
OPS- Introduzione all’informatica LUGO 7/5/2014 terza parte
n4 6 9 6 n1 5 n6 5 n5 3 4 9 7 9 n3 2 n7 n2 4 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
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.
n4 6 9 6 n1 5 n6 5 n5 3 4 9 7 9 n3 2 n7 n2 4 PRIMO ESERCIZIO Rappresentare il “disegno” in maniera “non grafica”: cioè esprimere tutte le informazioni contenute nello schema in modo “testuale”. SOLUZIONE arco(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)
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.
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” grafoelenco di termini cioè un esempio della trasformazione informazioni graficheinformazioni sintattiche N.B Useremo spesso la espressione “sintattico” per dire “testuale”
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.
n1 n2 n3 n5 n6 n4 SCHEMA DI SOLUZIONE (1) La prima parte dell’esercizio è il processo inverso di quello visto precedentemente: occorre realizzare la trasformazione elenco di terminigrafo 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.
n1 n2 n3 n5 n6 n4 8 1 3 2 2 4 1 3 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. Per rispondere alle due domande del problema occorre elencare sistematicamentetutti 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.
n1 n1 n2 n2 n3 n5 n6 n5 n6 n4 n4 n5 n2 n2 n4 n5 n6 n6 n4 8 1 3 2 n3 n3 n3 n3 n3 n3 2 4 1 3 SCHEMA DI SOLUZIONE (4)
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).
n1 n1 n2 n2 n3 n6 n5 n6 n4 n6 n2 n5 n5 n4 n5 n2 n4 n6 n4 8 1 3 2 n3 n3 n3 n3 n3 n3 2 4 1 3 SCHEMA DI SOLUZIONE (6) Esaminiamo in dettaglio la costruzione dell’albero. Tutti i possibili percorsi sono le successioni di nodi dalla radice alle foglie.
SCHEMA DI SOLUZIONE (7) TERZO ESERCIZIO (all’interno del secondo) Descrivere tutti i percorsi tra n1 e n3. SOLUZIONE Un 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.
n1 n2 n4 n5 n6 n6 n5 n5 n4 n2 n2 n4 n6 1 4 2 3 3 8 1 3 1 1 3 8 2 3 3 8 2 n3 n3 n3 n3 n3 n3 2 SCHEMA DI SOLUZIONE (8) SOLUZIONE N.B. sono stati costruiti ed esaminati tutti i percorsi 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
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. SOLUZIONE
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)
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”
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 descritto da 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.
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)
ESERCIZIO FINALE 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
Una citazione Hommage à Marcel-Paul Schützenberger Il 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