vuoi
o PayPal
tutte le volte che vuoi
Algoritmo di Christofides
- Cos'è il TSP metrico?
- Perché si può definire α-approssimato?
- Perché la soluzione dell'algoritmo può essere di ordine 2-approssimato
- Algoritmo Christofides
1) Il TSP metrico è quella classe di problemi TSP che dato un grafo G(V,E) non orientato, completo, con costi c sugli archi, se cuv > 0 ∀ u,v ∈ E e cuv = 0 se e solo se u = v, allora c è tale che per ogni tripla di nodi distinti u,v,z si ha cuv ≤ cuz + czv [disuguaglianza triangolare]; si dice che c induce una metrica.
2) Per un problema di ottimizzazione Q: min {c(F): F ∈ S} = ν(Q), come possiamo definire la qualità della soluzione prodotta da un algoritmo? Sia A un algoritmo che garantisce un'approssimazione α (ossia α-approssimato) se c(F) ≤ α ν(Q).
3) Dato un grafo G(V,E) non orientato, completo, con costi C dati da una semimetrica, l’algoritmo di Christofides trova un ciclo hamiltoniano di costo al più doppio rispetto al ciclo di costo minimo: trova un albero ricoprente T di G; raddoppia ogni arco di T così da trovare un grafo euleriano; costruisce un ciclo euleriano e di questo grafo; sceglie un nodo iniziale U in E e visita E a partire da U; costruisce una permutazione π dei nodi V ; restituisce il ciclo hamiltoniano H associato a π.
4) Th 2: Sia H# il ciclo hamiltoniano di costo minimo e sia H il ciclo ritornato dall’algoritmo di Christofides. Allora c(H) ≤ 2c(H#)
Dimostra: E è ottenuto da T* raddoppiando gli archi (c(E) = 2 c(T*)); H è ottenuto da E saltando forse anche qualche nodo (c(H) ≤ c(E) = 2 c(T*)). Sappiamo da un altro teorema che c(T*) ≤ c(H#) quindi c(H) ≤ 2 c(T*) ≤ 2 c(H#). L’algoritmo di Christofides è quindi 2-approssimato.
max Yt
Yv - Yu ≤ cuv ∀ uv ∈ A
-Ys = 0
3) Teorema F3 (Ammissibilita' Duale): Il problema duale ammette soluzioni (primal non è illimitato) se e solo se il grafo G(N, A) non ha cicli orientati di costo totale negativo.
Dimostraz. Se: sia Pu* il cammino minimo da s ad un generico u ∈ N - {s}. Ponendo Yv = c(Pv*): se Y'v - Y'u ≤ cuv Y' è una soluzione duale, se invece Y'v - Y'u > cuv ⇒ c(Pv*) - c(Pu*) > cuv ⇒ c(Pv*) > c(Pu*) + cuv
Se V ≠ P* ⇒ P' è un cammino con c(P'u) = c(Pu*) + cuv < c(c(Pv*)) ⇒ contraddizione!
Quindi V ∈ Pu*!
Detto P'il sotto-cammino di Pu* da v a u:
C = P' ∪ {uv} è un ciclo.
c(Pv*) > c(Pv) + c(P') + cuv ⇒ 0 > c(P') + cuv = c(C) ciclo negativo!
Dimostraz. solo se: Supponiamo per assurdo che C = (1, 12, 2, ..., k, k', 1) sia un ciclo di G(N, A) con costo totale c(C) negativo. Poiché Y' è soluzione duale abbiamo che 0 ≤ c(C) < 0 che è una contraddizione!
Localizzazione di Impianti
- Definire il problema di localizzazione di impianti.
- Descrivere la formulazione forte e la formulazione debole.
- Spiegare come si possono risolvere e che caratteristiche hanno.
- Spiegare un possibile meccanismo di generazione vincoli.
1) Il problema detto di localizzazione di impianti rientra nella classe dei problemi di distribuzione: bisogna trasportare beni da una o più origini a una o più destinazioni, minimizzando il costo di trasporto e rispettando vincoli quali la capacità dei veicoli, la raggiungibilità delle destinazioni.
Si ha l’insieme I di m clienti da servire e l’insieme J di n impianti che posso attuare. L’impianto j costa fj, il collegamento i-j costa cij: si vogliono minimizzare le spese.
La soluzione ammissibile deve rispettare dei vincoli: un cliente può essere assegnato ad un impianto solo se esso è attivato (yj ≤ xj). Ogni cliente deve essere assegnato ad un solo impianto ( Σjyij = 1 ).
Il modello del problema quindi prende la forma di:
min Σj fjxj + Σj Σi cijyij
Σj yij = 1 , xj - yij ≥ 0
yij ∈ {0,1}, xj ∈ {0,1}, i ∈ I j ∈ J
Si tratta di un problema della classe NP, per risolverlo serve il suo rilassamento lineare (LP).
2) Dal rilassamento lineare si ottiene la formulazione forte che modifica il vincolo xj - yij ≥ 0 in: Σi yij ≤ |I|xj, cioè la somma sui clienti dei vincoli di attivazione, e pone poi yij ≥ 0 xj ≥ 0.
3)
L = P0 , Xo indefinito, UB = +∞
L = Ø ?
Sì : Xo è l'ottimo X* cercato e STOP
No : scegli Pi ∈ L → calcola LBi e X(Si) con rilass.
LBi < UB?
Sì → X(Pi) intero?
Sì → aggiorna UB := LBi e Xo := X(Pi)
4)
Inizializzo L = P0, Xo indefinito e UB = +∞: se L = Ø allora Xo è l'ottimo X* che cercavo e mi fermo; se L ≠ Ø scelgo un Pi ∈ L e mi calcolo LBi e X(Si) con il rilassamento: LBi < UB? Se no faccio "branching" L = L ∪ { Pi+1 , Pi+2 } e ricomincio; se sì allora: X(Pi) intero? Se sì aggiorno UB = LBi e Xo = X(Pi) e riparto da analizzare L = Ø?
5)
Bisogna operare delle scelte come Pi ∈ L; quello con il minimo lower bound, o il LIFO, o il FIFO. La scelta di Xk: la variabile più intera? Più frazionaria? O seguire un ordine predefinito? Non esiste una scelta che sia la migliore per tutti i problemi.
RICERCA LOCALE CON INTORNI ESPONENZIALI PER TSP
- Definire l'euristica di Ricerca Locale
- Commentare l'importanza della scelta del sistema di Intorni
- Spiegare in cosa consiste l'intorno di "ASSIGN" per il TSP
- Illustrare dettagliatamente come risolvere un problema di TSP usando tale tipo d'intorno.
1) L'euristica di Ricerca Locale è un'euristica migliorativa, ossia ha bisogno di una soluzione di partenza, per questo viene solitamente effettuata dopo un greedy (tecnica che a partire dall'insieme vuoto aggiunge ad ogni passo l'elemento che produce una soluz. parziale di minimo costo).
La Ricerca Locale, a partire da una soluzione ammiss. T0, vuole costruire una sequenza di soluz. ammiss. T0, T1, T2, ... individuando al passo k la soluzione di minimo costo Tk appartenente all'intorno H(Tk-1) della soluzione corrente Tk-1, e arrestandosi quando ogni valore appartenente a H(Tk-1) ha un valore peggiore della funzione obiettivo, ovvero c(Tk-1) < c(Tk).
2) Gli intorni sono fondamentali: se costituiti da pochi elementi generarli ed esaminarli è veloce, ma si hanno basse possibilità di miglioramento; se costituiti da molti elementi si hanno buone possibilità di miglioramento ma generarli ed esaminarli è più costoso. Ogni iterazione dell'algoritmo LS consiste nel risolvere un problema di ottimizz. locale, ossia un problema con insieme delle soluz. ammiss. più piccolo.