Click here to load reader

Ottimizziamo! Progetto Lauree Scientifiche 3 Dicembre 2010 Istituto “A. Bassi” - Lodi

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Ottimizziamo! Progetto Lauree Scientifiche 3 Dicembre 2010 Istituto “A. Bassi” - Lodi. Giovanni Righini ([email protected]) Dipartimento di Tecnologie dell’Informazione (Crema) Università degli Studi di Milano. Il postino del quartiere Martinetta. - PowerPoint PPT Presentation

Text of Ottimizziamo! Progetto Lauree Scientifiche 3 Dicembre 2010 Istituto “A. Bassi” - Lodi

  • Ottimizziamo!

    Progetto Lauree Scientifiche

    3 Dicembre 2010Istituto A. Bassi - Lodi

    Giovanni Righini([email protected])

    Dipartimento di Tecnologie dellInformazione (Crema)Universit degli Studi di Milano

  • Il postino del quartiere MartinettaOgni giorno dallufficio postale che si trova nel centro della citt un postino deve recarsi nel quartiere Martinetta e distribuire la posta a tutti gli indirizzi.Per farlo, egli deve percorrere tutte le strade del quartiere. Poich procede in bicicletta e non c traffico nel quartiere, egli pu anche pedalare contromano nelle strade a senso unico, e inoltre pu distribuire la posta su entrambi i lati di ogni strada percorrendola una volta sola.Per ottimizzare il tempo a sua disposizione, egli vorrebbe trovare il percorso di minima lunghezza.

  • Dalla mappa stradale ricaviamo un grafo, composto da nodi e archi. Alcuni archi sono orientati (sensi unici), altri no.Nel passaggio dalla mappa al grafo abbiamo operato alcune semplificazioni:tutte le strade in entrata e uscita dal quartiere sono state troncate ad un certo punto (a seconda della presenza o assenza di abitazioni);le strade secondarie o private sono state trascurate;i sensi unici sono stati rappresentati ma li trascureremo nel risolvere il problema.Tutti i nodi del grafo sono stati numerati per identificarli con maggiore comodit e in modo non ambiguo. A tutti gli archi del grafo stato associato un costo, che rappresenta la lunghezza dellarco in unopportuna unit di misura.

  • Abbiamo un grafo con 29 nodi e 34 archi.

  • Problema. Sapreste trovare il percorso che consente al postino di attraversare tutti i 34 archi del grafo, partendo dal nodo 1 e tornando al nodo 1?

    Osservazione. Sarebbe utile non dover percorrere nessun arco pi di una volta.

  • Osservazione. Alcuni archi del grafo terminano in un nodo da cui non si possono raggiungere altri archi. Il postino deve quindi tornare sui suoi passi, percorrendo necessariamente questi archi prima in un direzione e poi nellaltra.

    Esempio. Il postino dovr andare dal nodo 22 al 24 e poi dal 24 non potr fare altro che tornare al 22. Quindi larco 22-24 sar percorso due volte.

    Possiamo identificare facilmente tutti questi casi: corrispondono ai nodi che hanno grado uguale a 1.

    Il grado di un nodo il numero di archi di cui il nodo estremo o, in altri termini, il numero di archi incidenti in quel nodo.

    Gli archi incidenti in nodi di grado 1 vanno raddoppiati (percorsi 2 volte): anche il loro costo deve essere conteggiato 2 volte.

  • Dopo questa modifica nel grafo non ci sono pi nodi di grado uguale a 1.

    Possiamo porci di nuovo la domanda precedente.

    E possibile percorrere tutti gli archi del grafo una volta sola, partendo dal nodo 1 e tornando al nodo 1?

    Provate

  • Dopo questa modifica nel grafo non ci sono pi nodi di grado uguale a 1.

    Possiamo porci di nuovo la domanda precedente.

    E possibile percorrere tutti gli archi del grafo una volta sola, partendo dal nodo 1 e tornando al nodo 1?

    Provate No.

    Non c modo di percorrere tutti gli archi di questo grafo esattamente una volta tornando al punto di partenza.

    In altri termini, non c modo di disegnare questo grafo, un arco dopo laltro, senza staccare la matita dal foglio.

  • Poniamoci allora una domanda pi generale: Quali condizioni deve soddisfare un grafo per essere disegnabile senza staccare la matita dal foglio?

    Questa questione fu affrontata e risolta nel 1736 da un grande matematico: lo svizzero Leonhard Euler (1707-1783).

  • I sette ponti di KnigsbergSi pu fare una passeggiata che torni al punto di partenza dopo aver attraversato esattamente una volta ciascuno dei 7 ponti?

  • Anche in questo caso la risposta No.

    Sapreste dimostrarlo?

  • Anche in questo caso la risposta No.

    Sapreste dimostrarlo?

    Eulero formul il problema usando un grafo. I nodi sono le 4 zone della citt e gli archi sono i 7 ponti.

  • Egli consider poi il grado dei quattro nodi, cio il numero di archi incidenti in essi.

    NodoGradoNord3Sud3Est3Isola5

  • Lungo ogni percorso, ogni nodo viene raggiunto e lasciato un ugual numero di volte. Quindi il grado di ogni nodo lungo il percorso pari al doppio del numero di visite a quel nodo e quindi un numero pari. Affinch ogni arco venga percorso esattamente una volta, quindi necessario che tutti i nodi abbiano grado pari.

    A Knigsberg non cos: tutti i nodi hanno grado dispari! Ecco perch la passeggiata sui sette ponti non possibile.

  • Si pu dimostrare che la condizione di Eulero sul grado dei nodi anche sufficiente, purch il grafo sia connesso. Un grafo che rispetta queste condizioni un grafo euleriano e su di esso possibile percorrere un ciclo euleriano.

  • Lanalisi del grafo rivela la presenza di 10 nodi di grado dispari.

  • Per rendere euleriano questo grafo dobbiamo aggiungere altri archi (pagando i corrispondenti costi).Gli archi da aggiungere corrisponderanno ad ulteriori passate lungo le vie del quartiere, come gli archi verdi che abbiamo gi aggiunto.

    Quanti archi dobbiamo aggiungere?

  • Per rendere euleriano questo grafo dobbiamo aggiungere altri archi (pagando i corrispondenti costi).Gli archi da aggiungere corrisponderanno ad ulteriori passate lungo le vie del quartiere, come gli archi verdi che abbiamo gi aggiunto.

    Quanti archi dobbiamo aggiungere?

    Dobbiamo far diventare pari il grado dei nodi che hanno grado dispari. Ogni volta che aggiungiamo al grafo un arco, aumentiamo di 1 il grado di entrambi i suoi estremi. Se sono 10 i nodi il cui grado deve essere aumentato, dobbiamo aggiungere almeno 5 archi, che non abbiano estremi in comune. Nel nostro grafo esistono 5 archi con questa propriet?

    Provate...

  • Per rendere euleriano questo grafo dobbiamo aggiungere altri archi (pagando i corrispondenti costi).Gli archi da aggiungere corrisponderanno ad ulteriori passate lungo le vie del quartiere, come gli archi verdi che abbiamo gi aggiunto.

    Quanti archi dobbiamo aggiungere?

    Dobbiamo far diventare pari il grado dei nodi che hanno grado dispari. Ogni volta che aggiungiamo al grafo un arco, aumentiamo di 1 il grado di entrambi i suoi estremi. Se sono 10 i nodi il cui grado deve essere aumentato, dobbiamo aggiungere almeno 5 archi, che non abbiano estremi in comune. Nel nostro grafo esistono 5 archi con questa propriet?

    Provate... No, non esistono.

  • Dobbiamo generalizzare leggermente la nostra richiesta. Per aumentare di 1 il grado di due nodi si pu inserire un arco che li collega direttamenteun cammino, che li collega indirettamente.

    Il grado di ogni nodo lungo il cammino aumenta di 2 e quindi non cambia parit. Il grado degli estremi del cammino aumenta di 1 e quindi cambia parit.

    Cerchiamo allora 5 cammini, che abbiano come estremi i 10 nodi di grado dispari e senza estremi in comune.

    Provate...

  • Dobbiamo generalizzare leggermente la nostra richiesta. Per aumentare di 1 il grado di due nodi si pu inserire un arco che li collega direttamenteun cammino, che li collega indirettamente.

    Il grado di ogni nodo lungo il cammino aumenta di 2 e quindi non cambia parit. Il grado degli estremi del cammino aumenta di 1 e quindi cambia parit.

    Cerchiamo allora 5 cammini, che abbiano come estremi i 10 nodi di grado dispari e senza estremi in comune.

    Provate...Ci sono tante soluzioni possibili!

  • Come trovare la migliore, cio quella di costo minimo?

    E un problema di ottimizzazione.

    Lo affronteremo definendone i 4 componenti fondamentali: i dati, le variabili, i vincoli,lobiettivoe useremo il linguaggio matematico per definirli.

  • Dati (= ci che si sa)Abbiamo dieci nodi da connettere a due a due e ci serve conoscere i costi di ogni connessione.

    Domanda. Poich i nodi sono dieci, quante sono le connessioni possibili?

  • Dati (= ci che si sa)Abbiamo dieci nodi da connettere a due a due e ci serve conoscere i costi di ogni connessione.

    Domanda. Poich i nodi sono dieci, quante sono le connessioni possibili? Risposta. Sono tutte quelle da ogni nodo ad ogni altro (10 x 10), tranne che tra un nodo a s stesso: 10 x 10 10 = 90.

    Domanda. Qual il costo di connessione da un generico nodo A ad un generico nodo B?

  • Dati (= ci che si sa)Abbiamo dieci nodi da connettere a due a due e ci serve conoscere i costi di ogni connessione.

    Domanda. Poich i nodi sono dieci, quante sono le connessioni possibili? Risposta. Sono tutte quelle da ogni nodo ad ogni altro (10 x 10), tranne che tra un nodo a s stesso: 10 x 10 10 = 90.

    Domanda. Qual il costo di connessione da un generico nodo A ad un generico nodo B? Risposta. E la lunghezza del cammino minimo da A a B.

  • Dati (= ci che si sa)Siccome consideriamo il grafo simmetrico, trascurando i sensi unici, ci basta calcolare la met dei valori, perch la lunghezza di ogni cammino minimo da A a B uguale alla lunghezza del cammino minimo da B ad A.

    Una volta trovati tutti i cammini minimi che ci servono (che sono quindi 45) ne memorizziamo le lunghezze in una matrice, cio in una tabella con tante righe e tante colonne quanti i nodi di grado dispari.

    Per la simmetria, ci basta met della matrice. Non servono neanche gli elementi sulla diagonale principale della matrice.

  • Dati (= ci che si sa)

    Dist.3478121314192027311041311715121849312106141117765799142089731181412266111713449151485111951120627

  • Domanda. Quali scelte dobbiamo fare?Variabili (= ci che va deciso)

  • Domanda. Quali scelte dobbiamo fare?Risposta. Dobbiamo decidere se inserire nel grafo una connes

Search related