La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi

Presentazioni simili


Presentazione sul tema: "Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi"— Transcript della presentazione:

1 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi di approssimazione Lezione n°13 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione 13

2 Classi di complessità Classe P(polinomiale) - classe dei problemi decisionali risolvibili in tempo polinomiale da algoritmi deterministici. Classe NP(polinomiale non deterministica) - classe dei problemi decisionali risolvibili in tempo polinomiale da algoritmi nondeterministici. Un problema decisionale D1 è polinomialmente riducibile ad un problema decisionale D2 se esiste una funzione t, polinomialmente calcolabile, che trasforma tutte e sole le istanze positive di D1 in istanze positive di D2 . Classe NP-completa - classe dei problemi decisionali che appartengono a NP e che sono riducibili uno all’altro. Classe NP-ardua - classe dei problemi che sono riducibili uno all’altro Notare che i problemi NP-ardui di sicuro sono difficili almeno quanto un problema NP-completo, ma non è detto che siano NP-completi. ASD a.a.2010/2011- Lezione 11

3 Problemi combinatorici di ottimizzazione
NP-completi - versione decisionale NP-ardui - versione di ottimizzazione Alternativa per la soluzione dei problemi NP-ardui è l’approssimazione che si ottiene applicando algoritmi semplici che sfruttano euristiche relative al problema (regole derivate dall’esperienza e non dimostrate matematicamente). ASD a.a.2010/2011- Lezione 13 3

4 Accuratezza dell’approssimazione
sa - soluzione approssimata s* - soluzione ottima esatta re(sa) = (f(sa) - f(s*))/ f(s*) errore relativo rapporto di accuratezza r(sa) ≥ 1 per p. minimizzazione r(sa) = f(sa)/f(s*) per p. massimizzazione r(sa) = f(s*)/f(sa) Il massimo fra i diversi r(sa) calcolati su tutte le istanze del problema si indica con RA e ci indica la qualità di sa (rapporto di approssimazione) La soluzione approssimata è tanto migliore, quanto più RA si avvicina ad 1. Sfortunatamente è facile avere RA =∞. In tal caso bisogna considerare con cautela l’algoritmo che si sta considerando che non è detto vada scartato. Un algoritmo di approssimazione polinomiale è un algoritmo approssimante se garantisce rapporto di approssimazione per ogni istanza del problema. ASD a.a.2010/2011- Lezione 13 4

5 Equivalenze Tutti i problemi che appartengono alla classe dei problemi NP-ardui hanno uguale livello di difficoltà per trovare una soluzione esatta dato che appartengono alla classe dei problemi riducibili uno all’altro in tempo polinomiale. Questa equivalenza non vale nel caso delle soluzioni approssimate. Infatti trovare soluzioni approssimate con un ragionevole livello di accuratezza è più facile per alcuni di questi problemi (bisaccia) che per altri(commesso viaggiatore) ASD a.a.2010/2011- Lezione 13 5

6 Il vicino più vicino Algoritmo VpV per TSP:
Step1 scegli una città arbitraria come punto di partenza; Step2 vai alla città (non ancora visitata) più vicina dall’ultima visitata e ripeti questo passo finchè tutte le città non saranno state visitate; Step3 ritorna alla città di partenza. In questo problema f calcola la somma dei costi su gli archi prescelti ed è facile mostrare con un esempio che per questo semplice algoritmo greedy RA = ∞ ASD a.a.2010/2011- Lezione 13 6

7 Un risultato negativo Se P≠ NP, non esiste alcun algoritmo approssimante per TSP Idea: se per assurdo si accettasse l’esistenza di un tale algoritmo A approssimante, allora questo algoritmo si potrebbe adoperare per risolvere in tempo polinomiale il problema del ciclo hamiltoniano che si sa essere NP-completo e quindi P=NP. Siano G (V,E) grafo qualunque, G’(V,E’) grafo completo pesato (E  E’)t.c. se e  E, w(e)=1, se e  E’/E, w(e)=n+1. Applichiamo ora A a G’ e troviamo la soluzione sa. Si calcoli f(sa). La soluzione ottima del TSP in G’ sarà n se G ha un circuito hamiltoniano, maggiore di n in caso contrario. Nel I caso: f(sa) ≤  f(s*) = n (≤ :per def. di approssimante , = per circuito ham) Nel II caso: f(sa) ≥ f(s*) > n (≥:per def. di sa , > per mancanza di circuito ham) Da questi confronti si deduce la soluzione del problema del circuio ham e che P = NP ASD a.a.2010/2011- Lezione 13 7

8 Due giri intorno all’albero
Algoritmo 2gA per TSP: Step1 costruisci un minimo albero ricoprente del grafo di TSP, sia MAR; Step2 a partire da un nodo qualunque, esegui un ciclo intorno a MAR, marcando i nodi visitati; Step3 analizza la lista generata al passo 2 ed elimina da essa tutte le ripetizioni dei nodi, eccetto il primo. ASD a.a.2010/2011- Lezione 13 8

9 TSP con distanze euclidee
Si definisce un TSP con distanze euclidee un TSP dove le distanze fra le città soddisfano le seguenti condizioni naturali: disuguaglianza triangolare: d(i,j) ≤ d(i,k) + d(k,j), per ogni tripla i,j,k simmetria: d(i,j) = d(j,i), per ogni coppia i,j VALE Sebbene il rapporto di approssimazione RA rimane illimitato su istanze euclidee, il rapporto di accuratezza dell’algoritmo VpV per queste istanze soddisfa la disuguaglianza f(sa)/f(s*)≤ 1/2 (logn+1) ASD a.a.2010/2011- Lezione 13 9

10 2gA per TSP con distanze euclidee
L’algoritmo 2gA è un algoritmo 2-approssimante per il problema TSP con distanze euclidee. Dobbiamo provare f(sa) ≤ 2f(s*) L’eliminazione di un qualunque arco da s* genera un albero ricoprente, T, di costo non migliore del MAR generato dall’algoritmo, quindi f(s*) > w(T) ≥ w(T*) da cui 2f(s*) > 2 w(T*) ≥ f(sa) c.v.d. 2w(T*): lunghezza del cammino ottenuto al passo 2 f(sa) : lunghezza del tour trovato da sa ASD a.a.2010/2011- Lezione 13 10

11 Il problema della bisaccia a variabili intere
Algoritmo goloso per il problema della bisaccia a variabili intere: Step1 calcola il rapporto ri = vi / wi, per i = 1,…,n; Step2 ordina le ri in ordine non crescente ; Step3 considera lo ri corrente e immettilo nella bisaccia se non porta a superare la capacità, in caso contrario scartalo. Ripeti finchè sono state considerate tutte le ri . Esempio: bisaccia con capacità w>2, r(sa) = f(s*)/ f(sa)= w/2 peso valore valore/peso 1 2 w ASD a.a.2010/2011- Lezione 13 11

12 Il problema della bisaccia a variabili reali
Algoritmo goloso per il problema della bisaccia a variabili reali: Step1 calcola il rapporto ri = vi / wi, per i = 1,…,n; Step2 ordina le ri in ordine non crescente ; Step3 considera lo ri corrente e immettilo intero nella bisaccia se non porta a superare la capacità, in caso contrario prendine la frazione maggioreinseribile nella bisaccia. Ripeti finchè o sono state considerate tutte le ri o la bisaccia è piena. La soluzione ottima trovata per la bisaccia a variabili reali può essere utilizzata come upper bound per il problema della bisaccia a variabili intere ASD a.a.2010/2011- Lezione 13 12

13 Algoritmo per schemi di approssimazione
Per il problema della bisaccia a variabili intere è possibile ottenere una approssimazione sa,k per ogni prestabilito livello di accuratezzak, 0≤k<n, tale che f(sa,k)/ f(s*) ≤ 1 + 1/k, per ogni istanza di dimensione n L’algoritmo genera tutti i sottoinsiemi di x ≤ k elementi e per ciascuno di questi, prima mette nella bisaccia gli x elementi (ammesso che sia possibile), poi continua come nel metodo greedy. Il sottoinsieme che genera il maggior valore è dato in output come soluzione. Complessità computazionale O(knk+1) ASD a.a.2010/2011- Lezione 13 13


Scaricare ppt "Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi"

Presentazioni simili


Annunci Google