Ottimizzazione Combinatoria
Metodo dei tagli di Gomory
- convex hull (inviluppo convesso)
- poliedro a n dimensioni
- politopo (poliedro)
- il più piccolo insieme convesso contenente \(S\)
- è sempre possibile definirlo ma può essere computazionalmente complesso
- disugualianze valide
- dominata se coefficienti primi \(\ge\) e termine noto primo \(\le\)
- il convex hull può essere descritto dall’insieme di tutte le disugualianze valide non dominate di \(Z_a\)
- il numero di disugualianze può essere esponenziale e quindi non trattabile
- si può cercare di delimitare il convex hull incrementalmente con disugualianze valide per \(Z_a\) ma non \(S_a\)
- il metodo di Gomory agisce prendendo il floor dei coefficienti creando disugualianze valide partendo da \(S_a\) per \(Z_a\)
- si prova che aggiungendo questi tagli in un numero finito di passi si trova una soluzione intera o si raggiunge la condizione di assenza di soluzioni intere
- attualmente si integra il branch and bound con il metodo di gomory
- branch and cut
Grafi e Strutture Dati
Ricerca:
DFS
- iterativamente con una pila
BFS
- con una coda
Lineari nel numero di nodi e archi
- per grafi connessi il numero massimo di archi è \(n\)
Proprietà topologiche
-
forte connessione di un grafo orientato
-
albero di copertura del grafo attraverso l’analisi dell’albero di copertura
-
componenti connesse
- uso iterativo di
DFS
per marcare l’appartenenza di un nodo alla corrispondente componente connessa
- uso iterativo di
-
la partizione di archi nell’albero di copertura è utile per ottenere algoritmi efficienti che individuano proprietà topologiche
- grafo aciclico
- certificare l’esistenza di un cammino
Cammini Minimi
- Shortest Path Tree (
SPT
)- si rappresenta la soluzione \(T\) come albero dei padri (predecessori)
- inizializzato a un albero fittizio con tutti i nodi figli della radice
- etichette inizializzate a valore molto alto
- si rappresenta la soluzione \(T\) come albero dei padri (predecessori)
- condizioni di Bellman
- caratterizzazione matematica della soluzione
- algoritmicamente si selezionano archi che violano le c. di B. e quindi migliora l’etichetta di distanza del cammino
- soluzione ammissibile
- composta da \(n-1\) cammini da \(r\) a \(u\)
- occorre che ogni nodo \(u\) sia raggiungibile da \(r\)
- in presenza di cicli di costo negativo non esiste soluzione con ottimo limitato
- una soluzione ammissibile è un albero di copertura del grafo
Algoritmi con estrazione del nodo di etichetta minima
- Dijkstra
- coda di priorità come lista non ordinata
- per pesi positivi complessità polinomiale, ogni nodo viene estratto una e una sola volta
- complessità \(O(n^2)\)
- Johnson
- coda di priorità con uno heap
- complessità polinomiale similmente a Dijkstra
- operatori heap \(O(\log (n))\)
- complessità \(O(m \log (n))\)
- Bellman-Ford-Moore (
BFM
)- coda come queue
- logica della visita in ampiezza
- complessità polinomiale
- \(O(nm)\)
- coda come queue
- utilizzando una pila la complessità diventa superpolinomiale
- nel caso pessimo l’estrazione di un nodo e l’aggiornamento della sua etichetta determina l’inserimento di tutti i nodi più grandi
- Pape-D’Esopo
- dequeue
- double ended queue
- ogni nodo la prima volta inserito in coda e altrimenti in testa
- complessità superpolinomiale
- caso di efficienza
- uno dei più efficienti su grafi per grafi sparsi e planari
- i.e. reti stradali
- grafo planare: su un piano gli archi non si incrociano/sovrappongono
- uno dei più efficienti su grafi per grafi sparsi e planari
- dequeue
- grafi sparsi e densi:
- \(n = |N|; m = |A|\)
- sparsi \(m\sim O(n)\)
- Dijkstra ~ \(O(n^2)\)
- Johnson ~ \(O(n \log(n))\)
BFM
~ \(O(n^2)\)
- densi \(m \sim O(n^2)\)
- Dijkstra ~ \(O(n^2)\)
- Johnson ~ \(O(n^2 \log(n))\)
BFM
~ \(O(n^3)\)
Numero minimo di hop
- i.e. il grafo modella una rete di telecomunicazione
- router (nodi), passaggio di pacchetti (archi)
- hop numero di nodi attraversati
- numero di archi -1
- costi fissati a 1
- distanze come numero minimo di hop
- condizioni
SPT
rimangono invariate
Portata massima
- i.e. il grafo modella una rete di telecomunicazione
- arco rappresenta la possibilità di trasferire pacchetti
- ogni arco ha una portata massima \(f_{uv}\)
- la portata complessiva del cammino viene limitata da quella minima
- etichette \(d_u\) massima portata (arco con \(f_{uv}\) minimo) del cammino da \(r\) a \(u\)
- condizioni
SPT
- \(d_v \ge \min \{d_u, f_{uv}\}\)
Ottimizzazione su Rete
- problemi:
- cammino di costo minimo
- flusso di una unità
- flusso massimo
- flusso di costo minimo
- cammino di costo minimo
- risolvibili con
PL
- ma esistono algoritmi specializzati ad hoc + efficienti
\[\min c^T x: Ex = b, 0 \le x \le U\] Questa formulazione del problema permette:
- verifica della complessità
- analizzare la relazione con il problema duale
- gestire varianti più complesse del problema aggiungendo altri vincoli
La matrice \(E\):
- modella il grafo come matrice di incidenza nodi-archi
- i nodi sono attraversati dal flusso (in = out)
- punti di immissioni (in < out)
- punti di uscita (in > out)
Conservazione del flusso al nodo \(i\): \[ \sum_{(h,i)\in A} x_{hi} - \sum_{(i,j)\in A} x_{ij} = b_i\]
- \(b_i = 0\) nodo di transito
- \(b_i < 0\) nodo sorgente (in < out)
- \(b_i > 0\) nodo pozzo (in < out)
La matrice \(E\) è totalmente unimodulare, quindi se il vettore \(b\) è intero le soluzioni del problema saranno intere anche definendo \(x\) continue
- quindi problema
PL
veloce da risolvere con il simplesso
Il primale:
- una unità di flusso esce dal nodo \(s\) e giunge a \(t\)
- \(b_s = -1, b_t = 1, b_i = 0\)
- per l’albero dei cammini minimi
- \(b_r = -n +1, b_i =+1\)
Il duale: \[\max \mu^T b : \mu^T E \le c^T \] Forma estesa: \[\max \sum_{i\in N\\ \{r\}} \mu_i -(n-1) \mu_r\] \[ \mu_j - \mu_i \le c_{ij}, \forall(i,j) \in A\]
- \(\mu\) è detto potenziale
Il duale conferma che valgono le condizioni di Bellmann per l’ottimo
- la soluzione duale ammissibile nel primale è l’ottimo
Grafo Aciclico
- consideriamo un grafo orientato, aciclico, pesato
- enumerando i nodi si verifica la aciclicità
- buona numerazione
- si definiscono gli archi entranti (
BS
) e uscenti (FS
) per un nodoBS
- Backward StarFS
- Forward Star
- per calcolare i cammini minimi si sfrutta la buona numerazione del grafo seguendone l’ordinamento
SPT
acyclic- \(O(m)\)
- gli archi sono esaminani una sola volta
Cicli negativi
- rendono inutilizzabili gli algoritmi visti
- ma è facilmente verificabile se si è entrati in un ciclo negativo e fermarsi