Ho alcune osservazioni troppo lunghe per i commenti. Ecco un riassunto
Qualsiasi algoritmo per risolvere esattamente il tuo problema può essere utilizzato per risolvere esattamente i programmi lineari (cioè "forte programmazione lineare", che viene utilizzato nella soluzione di Sariel e attualmente non ha un algoritmo temporale polinomiale).
Il follow-up naturale è se le soluzioni approssimative (ad es. "Programmazione lineare debole") possono fornire una soluzione. Mentre la risposta è sì, sembra che la condizione di arresto per questa procedura richieda quantità che, per quanto ne sappia, non possono essere calcolate in tempo polinomiale. (vale a dire, l'algoritmo trova qualcosa di buono, ma che certifica questo è difficile.) Il mio suggerimento principale è quello di fare una definizione significativa di una " soluzione -optimal" per il vostro problema, in tal caso, questo approccio è trattabile. (Questa strategia effettivamente elimina le piccole facce del poliedro.)ε
In generale, mentre pensavo alla tua attuale affermazione del tuo problema, ho continuato a imbattermi in considerazioni sull'efficienza. Ma c'è una ragionevole intuizione in questo: gli oggetti che lanciamo - vertici, facce, ecc. - sono discreti ed esponenzialmente abbondanti.
(1.) Supponiamo di avere un algoritmo che risolva esattamente il tuo problema. Si noti che qualsiasi punto esposto di qualsiasi faccia contenente il punto medio fornito sarà una soluzione esatta al programma lineare originale. Quindi procedere come segue. Aggiungi un nuovo vincolo lineare dicendo che il valore obiettivo originale deve essere uguale a quello ottimale (che ora conosciamo) e imposta un nuovo obiettivo dicendo che massimizza la prima coordinata della soluzione. Ripeti questa procedura una volta per ogni dimensione, ogni volta aggiungendo un vincolo e scegliendo una nuova coordinata per massimizzare. Questo processo ridurrà ogni volta la dimensione della soluzione; necessariamente, al termine del processo, abbiamo un set affine a 0 dimensioni, che significa un singolo punto. Quindi con O (d)iterazioni dell'algoritmo di risoluzione dei punti medi (e aumentando la descrizione del problema solo di una quantità polinomiale in ogni volta), viene risolta una forte programmazione lineare. Ciò dimostra che, sebbene la soluzione di Sariel richieda una forte programmazione lineare, una soluzione esatta alla tua domanda non può evitarlo. ( Modifica : nota che la mia prova suppone un poliedro compatto (un politopo) come input; altrimenti deve lavorare un po 'più difficile per trovare i vertici.)d
(2.) Ecco uno schema iterativo, che utilizza un risolutore convesso in piena regola in ogni iterazione, le cui soluzioni convergeranno in una nozione lieve di soluzione del punto medio. Scegli una sequenza positiva ma decrescente di parametri di penalità ; è ragionevole farli scendere geometricamente, cioè λ i = 2 - i . Ora, per ogni i , minimizzare approssimativamente la funzione convessa{ λio}∞i = 1↓ 0λio= 2- ioio
⟨ C , x ⟩ - λioΣj = 1mln( ⟨ Unj, X ⟩ - b ) ,
⟨ C , x ⟩jmλioτλiodiminuisce, l'obiettivo lineare originale finirà per dominare alcune barriere schizzinose che ti stavano trattenendo dalla faccia appropriata, ma non influenzeranno le barriere che ti impediscono di altri confini, in particolare quelli della faccia bersaglio.
λλ
Tutte le condizioni di arresto che ho potuto trovare hanno avuto questo tipo di difficoltà computazionali. (Inoltre, molti potrebbero essere nuovamente utilizzati per trasformare questo in un potente risolutore di programmazione lineare.)
ελτε
(Alcuni commenti finali.) Sembra che la nozione di "punto medio" sia cruciale; Il commento di Sasho sottolinea che il centroide (centro di massa?) È un problema estremamente difficile, mentre trovare, diciamo, la più grande palla inscritta è facile. Le barriere logaritmiche che ho suggerito sopra in generale non saranno coerenti con nessuna di queste nozioni di punto medio. D'altra parte, per le barriere e la palla, puoi derivare un limite inferiore sulla distanza dal tuo centroide al limite relativo della faccia; forse questo ti è più utile?
Infine, dalla tua descrizione, credo che intendevi che la "faccia di destinazione" avesse una dimensione il più alta possibile? Questo è ben definito, tuttavia ci sono anche facce di soluzione per tutte le possibili dimensioni più piccole. Ad ogni modo, sia l'approccio di Sariel che quello di barriera sopra funzioneranno con la faccia della più grande dimensione.