Accelerazioni polinomiali con algoritmi basati sulla programmazione semidefinita


17

Questo è il seguito di una recente domanda posta da A. Pal: Risolvere i programmi semidefiniti in tempo polinomiale .

Sto ancora sconcertando il tempo di esecuzione effettivo degli algoritmi che calcolano la soluzione di un programma semidefinito (SDP). Come ha sottolineato Robin nel suo commento alla domanda di cui sopra, gli SDP non possono essere risolti in tempi polinomiali in generale.

Si scopre che, se definiamo attentamente il nostro SDP e imponiamo una condizione su quanto ben definita sia la regione realizzabile primaria, possiamo usare il metodo ellissoide per dare un limite polinomiale al tempo necessario per risolvere l'SDP (vedi Sezione 3.2 in L. Lovász, programmi semidefiniti e ottimizzazione combinatoria ). Il limite dato lì è un generico " tempo polinomiale " e qui mi interessa un limite meno grossolano.

La motivazione viene dal confronto di due algoritmi usati per il problema della separabilità quantistica (il problema reale non è rilevante qui, quindi non smettere di leggere i lettori classici!). Gli algoritmi si basano su una gerarchia di test che è possibile eseguire il cast in SDP e ciascun test nella gerarchia si trova su uno spazio più ampio, ovvero la dimensione dell'SDP corrispondente è maggiore. I due algoritmi che voglio confrontare differiscono nel seguente compromesso: nel primo, per trovare la soluzione è necessario salire più gradini della gerarchia e nel secondo i gradini della gerarchia sono più alti, ma è necessario scalare meno di loro. È chiaro che nell'analisi di questo compromesso è importante un preciso tempo di esecuzione dell'algoritmo utilizzato per risolvere l'SDP. L'analisi di questi algoritmi è effettuata da Navascués et al. in arxiv: 0906.2731, dove scrivono:

... la complessità temporale di un SDP con variabili e dimensione della matrice n è O ( m 2 n 2 ) (con un piccolo costo aggiuntivo derivante da un'iterazione di algoritmi).mnO(m2n2)

In un altro documento , in cui questo approccio al problema è stato proposto per la prima volta, gli autori danno lo stesso limite, ma usano il termine più cauto " numero di operazioni aritmetiche " anziché " complessità temporale ".

La mia domanda è duplice:

  • Quale algoritmo / limite sono Navascués et al. riferito a?
  • Posso sostituire l'espressione "tempo polinomiale" in Lovász con qualcosa di meno approssimativo (mantenendo le stesse ipotesi)?

1
La mia comprensione è che il metodo ellissoide ha dato risposte che si trovavano all'interno dell'errore additivo nel tempo polinomiale nel registro ( 1 / ϵ ) . Per la maggior parte dei problemi, si potrebbe sospettare che ε = Ω ( 1 / 2 n ) può essere sufficiente. εlog(1/ε)ε=Ω(1/2n)
Suresh Venkat,

@SureshVenkat: Esatto, il metodo ellissoide funziona nel tempo polinomiale nella dimensione delle matrici di input, nella dimensione dei vincoli e nel . Il problema è che, per l'applicazione che ho citato nella domanda, dire semplicemente "polinomio" non è sufficiente, ho bisogno di un limite più preciso. log(1/ε)
Alessandro Cosentino,

Risposte:


12

Non ho familiarità con i dettagli del metodo ellissoide specifico per i programmi semi-definiti, ma anche per programmi lineari , l'analisi del metodo ellissoide è piuttosto sottile.

  • Innanzitutto, è necessario limitare il numero di iterazioni dell'algoritmo ellissoide ideale . Lasciate sia l'ellispoid utilizzato nella i esima iterazione dell'algoritmo ellissoide, e lasciate c io essere suo baricentro. Nell'algoritmo ideale, un oracolo di separazione / appartenenza ti dà un semispazio h i che contiene il punto ottimale x ma non il centroide c i . L'ellissoide successivo E i + 1 è l'ellissoide più piccolo contenente E ih i . Per ogni io , abbiamoEioiociohioX*cioEio+1Eiohioio, dovenè la dimensione. Pertanto, dato un ragionevole ellissoide iniziale, il numero di iterazioni è polinomiale innelog(1/ε). Il calcolo diEi+1daEiehirichiede (grossolanamente)O(n2)operazioni aritmetiche. Quindi il numero di operazioni aritmetiche è anche polinomiale innelog(vol(Eio+1)<(1-1n)vol(Eio)nnlog(1/ε)Eio+1EiohioO(n2)n .log(1/ε)

  • Tuttavia, alcune di queste operazioni aritmetiche sono radici quadrate! Ne consegue che i coefficienti dell'ellissoide ideale sono numeri irrazionali di grado 2 i , e quindi non c'è speranza di calcolare effettivamente E i + 1 esattamente in un tempo ragionevole. Quindi, invece, si calcola un'approssimazione esterna stretta ˜ E iE i ad ogni iterazione usando l'aritmetica di precisione finita. Grötschel, Lovasz e Schrijver dimostrano che se si usa (diciamo) 10 i bit di precisione della  i esima iterazione, abbiamo ancora v o l (Eio2ioEio+1 E~ioEio10ioio, quindi il numero di iterazioni aumenta al massimo di un fattore costante. Ma ora ogni operazione aritmetica durante laiesima iterazione (comprese le operazioni eseguite dal oracolo di separazione) richiedeO(ipolylogi)tempo.vol(E~io+1)<O(1-1n)vol(E~io)ioO(io polylog io)

Complessivamente, il tempo totale del metodo dell'ellissoide esecuzione è molto approssimativamente il quadrato del numero di operazioni aritmetiche. Poiché il numero di operazioni aritmetiche è polinomiale in e log ( 1 / ε ) , lo è anche il tempo di esecuzione.nlog(1/ε)


Σio=1n. di iterazioniO(n2)×O(iopolylogio)nlog(1/ε)nn2, ...).
Alessandro Cosentino,

Ancora una cosa: il numero di vincoli non dovrebbe apparire anche da qualche parte nell'analisi? Inoltre, è specifico per i programmi lineari?
Alessandro Cosentino,

1
Devi anche prendere in considerazione il tempo di esecuzione dell'oracolo di separazione; ecco dove si presenta il numero di vincoli. Per LP espliciti, l'oracolo di separazione prova i vincoli uno alla volta. Per gli LP rappresentati implicitamente, è più complicato.
Jeffε
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.