Relazione Algoritmo Di Edmonds

Embed Size (px)

Citation preview

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    1/8

    Descrizione del problema

    Traccia assegnata:

    Stai visitando una nazione estremamente tecnologica e vuoi visitare n delle sue pi importanti citt,

    numerate da 0a n-1. Inizialmente ti trovi nella citt K.

    Hai affittato una macchina che dotata delle pi sofisticate dotazioni tecnologiche, tra cui anche un

    dispositivo di teletrasporto.

    !uesto dispositivo pu" teletrasportarti all#istante insieme alla tua macchina in un#altra citt di tua

    scelta.

    $# un unico problema: il dispositivo di teletrasporto funziona soltanto se in precedenza hai gi

    visitato nel tuo tour la citt in cui ti vuoi teletrasportare.

    Hai a disposizione una mappa della nazione con le ncitt che vuoi visitare, contenente le strade

    %unidirezionali& tra 'ueste citt, e i tempi di percorrenza di 'ueste strade.

    Il tuo obiettivo 'uello di trovare il minimo tempo possibile per visitare tutte le ncitt.

    Spiegazione traccia assegnata:

    Il problema presentato sotto forma di un grafo orientato G(V,E):

    (n grafo orientato %o diretto& G(V,E)consiste in un insieme V di nodi ed un insieme Edi coppie di

    nodi (u,v)detti archi: ogni arco connette il nodo ual nodo vma non viceversa.

    Il problema si pu" risolvere trovando il minimo albero ricoprente di G(V,E) .

    )lbero:

    (n albero un grafo T(W,F) nel 'uale due nodi siano connessi tramite uno ed un solo cammino.

    T(W,F) un albero di G(V,E) se W un sottoinsieme di Ved F un sottoinsieme di E.

    )lbero *icoprente:

    Dato un grafo G(V,E)connesso, un albero ricoprente di G un sottografo Tdi Gtale che:

    1. T un albero+. Tcontiene tutti i vertici di G

    inimo )lbero *icoprente:

    Dato un grafo G(V,E)connesso e pesato sugli archi, un minimo albero ricoprente di G un albero

    ricoprente di Gdi costo minimo.

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    2/8

    -li algoritmi visti a lezione per risolvere il problema del inimo )lbero *icoprente %ST& sono:

    )lgoritmo di rim

    )lgoritmo di /rus0al

    )lgoritmo di 1oruv0a

    a nessuno di 'uesti algoritmi pu" essere usato per risolvere il nostro problema, dato che si

    occupano trovare il l# ST per grafi non orientati, mentre il il grafo presentato nell traccia un

    grafo orientato.

    er trovare l#ST di un grafo orientato useremo l#algoritmo di 2dmonds %chiamato anche

    algoritmo di $hu34iu32dmonds&.

    !uesto algorimto stato sviluppato in modo indipendente prima da 5oeng3chin $hu e Tseng3hong

    4iu %nel 6789& e poi da ac0 2dmonds %nel 678;&, il 'uale ne ha anche fornito una dimostrazione

    della sua correttezza.

    Descrizione dell#)lgoritmo

    4#algoritmo lavora su grafi diretti connessi, aventi archi con peso maggiore od uguale a zero

    Iniziamo eliminando tutti gli archi entranti la radice.

    er ogni vertice v %tranne la radice& sia Sv l#insieme degli archi entranti in v. Sia v< l#arco di costo

    minimo entrante in v.Si riduca il peso di tutti gli archi in Sv del peso di v %l#arco v si verificano due

    possibilit:

    6. -li archi di costo > formano un albero di costo > .

    =ppure

    +. 2siste almeno un ciclo di costo >.

    ?el primo caso l#algoritmo finito e restituisce il inimo )lbero *icoprente.

    ?el secondo caso contraiamo i nodi del ciclo in una una struttura che chiameremo Supernodo. Il

    Supernodo ha come archi entranti tutti gli archi non facenti parte del ciclo ed entranti nei nodi del

    ciclo, e come archi uscenti tutti gli archi non facenti parte del ciclo ed uscenti dai nodi del ciclo.

    Dopo ci" il procedimento viene ripetuto finch non esistono pi cicli a costo >.

    ) 'uesto punto avremo un albero ricoprente composto dai nodi che non facevano parte di nessun

    ciclo a costo > e dai supernodi.

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    3/8

    Si espandono i supernodi e, per ognuno, si elimina l#arco del ciclo incidente su un nodo con un arco

    incidente esterno al ciclo. 4#albero risultante sar un inimo )lbero *icoprente.

    2sempio:

    rendiamo ad esempio un grafo -, con radice r

    2cco come risulta - dopo aver effettuato la riduzione dei pesi degli archi entranti ad ogni nodo

    In rosso sono segnati tutti gli archi di costo > che andranno a formare , in 'uesto caso, un ciclo.

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    4/8

    2cco come risulta il grafo - dopo la compressione dei nodi a, b, c, d nel supernodo

    @iene di nuovo effettuata la riduzione del peso degli archi entranti ad ogni nodo

    In rosso sono segnati tutti gli archi di costo zero. ) 'uesto punto abbiamo un albero di costo >.

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    5/8

    @iene espanso il supernodo %abcd& e viene eliminato l#arco del ciclo che incide sul nodo con due

    archi entranti

    )bbiamo ottenuto l#ST

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    6/8

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    7/8

    da zero.

    $ontrolla che ogni nodo abbia al pi un arco entrante. Se non cos cancella tutti gli archi

    entranti nel nodo in 'uestione tranne uno.

    Successivamente crea un nuovo grafo in cui verr costruito l#ST.

    In 'uesto grafo vengono prima inseriti tutti i nodi del grafo originario,

    oi vengono utilizzati i supernodi per aggiungere gli archi che compongono i cicli a costo

    zero

    Successivamente per ogni ciclo si sceglie l#arco entrante nel ciclo la 'uale differenza di peso

    con l#arco entrante nello stesso nodo %il 'uale ha sicuramente peso minore& sia minima.

    @iene aggiunto 'uesto arco al grafo e cancellante l#altro arco entrante nello stesso nodo.

    @iene completato il grafo aggiungendo gli archi entranti in tutti i nodi che non facevano

    parte dei cicli

    % in tutti 'uesti passaggi si usa come peso il peso originario dell#arco, preso dal grafo iniziale&

    ) 'uesto punto viene effettuata la somma dei pesi degli archi e stampata.

    Strutture Dati articolari

    4#algoritmo fa uso di una particolare struttura dati, la struttura grafo, e le strutture a lei subordinate:

    i nodi, gli archi ed i supernodi.

    Struttura Grafo:

    4a struttura grafo una classe contenente gli oggetti ?ode , )rch e Supernode

    4#oggetto ?ode possiede tre variabili: il nome%name&, la lista degli archi entranti %archsIn& e la lista

    degli archi uscenti %archs=ut&.

    4#oggetto )rch possiede tre variabili: il nome del nodo testa dell#arco %node?ameTo&, il nome del

    nodo coda dell#arco %node?ameArom& ed il peso dell#arco %Eeight&.

    4#oggetto Supernode possiede una sola variabile: la lista dei nodi componenti il supernodo.

    $omplessivamente il grafo rappresentato tramite liste di adiacenza: ogni nodo contiene una lista di

    tutti i nodi a cui adiacente. $ome unica differenza da una lista di adiacenza standard ogni nodo

    contiene anche una lista dei nodi a cui adiacente.

  • 7/25/2019 Relazione Algoritmo Di Edmonds

    8/8

    Tempo di esecuzione ed occupazione di memoria

    Tempo

    $onnessione =%@&

    *ipesamento =%2@&

    $iclo =%@F2&

    $reazione Supernodo =%@F2&

    *icostruzione =%2@&

    Il tempo di esecuzione limitato inferiormente dai moduli ripesamento e ricostruzioneCgrafo, i

    'ulai hanno tempo di esecuzione =%2@&.

    !uindi il tempo totale di esecuzione dell#algoritmo per un grafo -%@,2& =%2@&

    Spazio

    $onnessione =%@&

    *ipesamento grafo copia %6& F =%@&

    $iclo grafo copia%+& F =%@&

    $reazione Supernodo =%@&

    *icostruzione grafo temporaneo %minore dell# originale&

    4o spazio occupato in funzione del grafo originario e delle sue copie. Siccome ogni nodo contiene

    una lista degli archi uscenti ed entranti ogni arco rappresentato due volte, 'uindi la lunghezza

    complessiva delle liste +2.

    In totale lo spazio utilizzato =%@F2&.