Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema Algoritmi Approssimanti per -TSP Definizione (TSP) Il problema del commesso viaggiatore (TSP) è definito come segue: Istanza: un grafo completo G(V E) con la funzione dei pesi w: E N; Soluzione: un tour C in G che visiti tutti i nodi del grafo di costo minimo; isura: la funzione m (G(V E) C) = e). e C Questo problema così definito non è approssimabile (vedi dispense di ). Si può prendere in considerazione però la sua variante metrica che chiameremo -TSP e verificare che questa versione in un primo momento è -APX e successivamente.5-apx. Definizione ( -TSP ) Il problema è così definito: Istanza: un grafo completo G(V E) con la funzione dei pesi w: E N che soddisfa la disuguaglianza triangolare ovvero: w ( u v) u x) + x v) u v x V ; Soluzione: un tour C in G che visiti tutti i nodi del grafo di costo minimo; isura: la funzione m (G(V E) C) = e C Definizione 3 (ULTIGRAFO): Un ULTIGRAFO nodi ed E un insieme di archi in V V tale che e) G( V E) occ(u v) è composto da V un insieme finito di { (u v) E } = u v E. Definizione 4 (ULTIGRAFO EULERIANO): Un ULTIGRAFO EULERIANO è un multigrafo tale che un cammino P= { v... v v } G ( V E) v k dove v V v viene percorso almeno una volta in P e arco (uv) l arco viene percorso esattamente una volta. Esempio:
Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema Teorema Un multigrado G(V E) è euleriano a) il grafo G è connesso; b) v V il grado di v deg(v) è pari. DIO. ( ) Se G(V E) è euleriano a) è vera proprio dall esistenza di un cammino P che tocca tutti i nodi. Anche la condizione b) è vera perchè ogni nodo deve essere transitato da diversi archi uno di entrata e uno di uscita perciò il loro numero è sempre pari E =k con k. ( ) Sia G(V E) connesso e con deg(v)=k con k v V si dimostra per induzione sul numero di archi che un cammino di tipo euleriano. (base dell induzione) Se E = ho un unico nodo V = il grafo G(V E) è connesso e perciò euleriano; (passo induttivo) Assumendo che la tesi sia vera per i grafi con E <m si considera il caso di un grafo con esattamente m archi. In questo grafo si costruisce un cammino P={ v v... vk v } che percorre gli archi una sola volta (ma che può anche non passare per tutti i nodi di G) successivamente si determina l insieme v v v v... v e si calcola E-E p. { } E p= [ ] [ ] [ ] k v Il grafo G(V E-E p ) così ottenuto non è connesso ma siano G G h le sue componenti connesse: G j G i G k ogni G i è connessa e il grafo G(V E-E p ) ha un numero pari di archi poiché è ottenuto da un grafo di archi pari a cui sono stati tolti un numero di archi pari si conclude dunque che ogni Gi è euleriano. Il percorso per ogni generica coppia di componenti connesse è il seguente: G i 5 888 7 7 3 l 4 G j G(V E) è euleriano. 6 Parte dal nodo evidenziato percorre l arco l arco l arco 3 l arco 4 l arco 5 l arco 6 l arco 7 l arco 8 e torna al nodo evidenziato. Corollario (senza dimo) un algoritmo polinomiale che trova il cammino euleriano di un grafo euleriano.
S i V i+ Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema Definizione 5 (EULERIAN SPANNING GRAPH): Sia G( V E) un multigrado completo con w: E N un EULERIAN SPANNING GRAPH (ESG) è un sottomultigrafo di G euleriano ESG(G)= ( V E ) dove E E. ALGORITO -APX PER -TSP INPUT: G( V E) completo w: E N OUTPUT: tour C che visita tutti i nodi di G ) Costruisco l ST(G) che chiamo T; ) Creo G ( V E ) dove occ( e) = e E e T ; 3) Costruisco P il percorso euleriano di G ; 4) Calcolo il tour C da P. Osservazione : il grafo G (VE ) è euleriano. DIO. segue dal teorema. Teorema : Sia ( V E) w: E N un multigrado euleriano e P= G { v v... v... v v } i n il percorso euleriano un tour C di G tale che C) P). DIO. Nel percorrere P={ v...v } ogni volta che trovo un nodo non ancora visitato lo memorizzo in un insieme S i. Sarà quindi possibile riscrivere il percorso come P={ v S v S... v... v S v } dove S i è una sequenza di nodi già visitati ad esempio: v oppure ; S ={ } S ={ v v } oppure ; S i ={ v v... } v i oppure ; S n ={ v v... v i... v n } oppure. Ora consideriamo il cammino C={ v v... v i... v n } il suo costo è n ( = i+ i= modn () w C) v i v ) i n n V i S i ={ s...s h } Dalla disuguaglianza triangolare: w ( vi si+ ) vi s) +... + sh vi+ ) = vi vi+ ) e questo vale per tutti gli intervalli considerati quindi possiamo dire che 3
Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema n () v v ) ) Studio dell approssimabilità dell algoritmo () C) P) T) perchè P è stato calcolato sul ST; T) C) - e C) C) T) ma se C è la soluzione ottima allora OPT(G) T) Utilizzando la () e facendo il rapporto otteniamo C)/OPT(G).5-APX PER -TSP i= i i+ = P perchè il tour C senza un arco è uno SPANNING TREE ma non è il minimo; In questa sezione parliamo dell algoritmo di Christofides un algoritmo che approssima il problema del -TSP con un rapporto pari a.5. Prima di descrivere l algoritmo introduciamo un nuovo problema. Definizione 6 (P) Il problema del minimo matching perfetto (INIUN PERFECT ATCHING P) si può schematizzare così: Istanza: un grafo completo pesato G( V E) la cui funzione dei pesi è w: E N e il cui numero di vertici è pari cioè V =k con k N; Soluzione: un insieme di archi ogni vertice è estremo di uno e un solo arco e tale che { } E del tipo = [ v v ][ v v ]...[ v ] dove 3 4 n vn V =. isura: la funzione matching. m ( G( V E) ) = e) per istanza G( V E) ed insieme del e Teorema 3 (senza dimo) P PO. ALGORITO DI CHRISTOFIDES.5 APX PER -TSP INPUT: G( V E) completo w: E N OUTPUT: tour C che visita tutti i nodi di G )Costruisco l ST(G) che chiamo T; )Chiamo D V l insieme dei vertici tale che v D deg(v) in T è dispari; 3) Costruisco un nuovo grafo G ( D indotto da G e D e trovo l P di G ( D che chiamo ; 4)Considero G ( V T )) che è euleriano; 5)Prendo il cammino euleriano P di G ( V T )) e trovo il tour C ad esso corrispondente. Osservazione : L P di G ( D è completo. G ( D esiste sempre se D è un insieme di vertici pari perché 4
Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema DIO. Sia D={ d... d k... dk } un insieme pari di vertici dividendolo in due parti si ha: { } d...d k d d i d k + { dk dk } d k +i +... d k dk sempre un matching e posso scegliere il minimo. Osservazione 3: D = k DIO. Posso dividere i nodi di V in due insiemi a seconda del loro grado in T: P={ p... p h } nodi a grado dispari in T; D={ d...d k } nodi a grado pari in T; Calcolo: p deg( p ) + deg( d ) = ( n ) dove ( n ) = archi in ST; d D giacchè p deg( p) e ( n ) sono pari anche deg( d) sarà pari deg( d) = y perché la somma di l numeri dispari è pari. d D d D D = k OSSERVAZIONE 4: G ( V T )) è euleriano. DIO. Devo verificare i punti a) e b) del teorema: a) è ovvio perché G ( V T )) è ottenuto dal ST; b) per ogni vertice v V ho due casi: i) deg(v) in T è pari v D deg( v ) è pari in G ( V T )) ; ii) deg(v) in T è dispari deg( v ) in G = deg(v) in T +. G ( V T )) è euleriano. Studio della approssimabilità dell algoritmo di Christofides - Dai risultati precedenti C) P) dove il costo di P è dato dal costo del ST più quello del matching w ( P) = T ) + ); - Se C * * è la soluzione ottima di -TSP allora vale C ) T ); - Nel cammino ottimo * = C { v u u... u v } ogni volta che incontro un nodo di D non ancora visitato lo memorizzo ottenendo la sequenza [ d d... ] { } nodi di D compaiono in P. A questo punto posso fare due matching: = [ d d][ d3 d4]...[ d D d D ] d D secondo l ordine in cui i 5
Dispensa del corso di TAA redatta da Amati Di auro Rattà. { [ d d3][ d4 d5]...[ d d] } D = Algoritmo 5 e APX per il problema d 3 d d 4 d d D d D C * Come si vede anche dalla figura i due matching insieme sono più piccoli dell intero percorso C * : * ) + ) C ) ) + ) ) * ) C ) sostituendo la terza e la seconda espressione nella prima: * * 3 w ( C) C ) + C ) = C * C) ) OPT 3 6
Dispensa del corso di TAA redatta da Amati Di auro Rattà. Algoritmo 5 e APX per il problema 7