Ridurre al minimo il componente massimo di una somma di vettori


11

Vorrei imparare qualcosa su questo problema di ottimizzazione: per determinati numeri interi non negativi , trova una funzione minimizza l'espressione fai,j,kf

maxkiai,f(i),k

Un esempio che utilizza una diversa formulazione potrebbe renderlo più chiaro: ti viene dato un set di insiemi di vettori come

{
    {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
    {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
    {(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}

Scegli un vettore da ogni set, in modo che il componente massimo della loro somma sia minimo. Ad esempio, puoi scegliere

(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)

con il componente massimo pari a 2, che qui è chiaramente ottimale.

Sono curioso di sapere se si tratta di un problema noto e di quali metodi di soluzione approssimativi specifici per il problema sono disponibili. Dovrebbe essere veloce e facile da programmare (nessun risolutore ILP , ecc.). Non è necessaria una soluzione esatta in quanto è solo un'approssimazione del problema reale.


Vedo che avrei dovuto aggiungere alcuni dettagli sulle istanze del problema a cui sono interessato:

  • i{0,1,,63} , ovvero ci sono sempre 64 righe (se scritte come nell'esempio sopra).
  • j{0,1} , cioè ci sono solo 2 vettori per riga.
  • Nk{0,1,,N1} dove (la lunghezza del vettore) è compreso tra 10 e 1000.N

Inoltre, su ogni riga la somma degli elementi di tutti i vettori è la stessa, ovvero

io,j,j':ΣKun'io,j,K=ΣKun'io,j',K

e la somma degli elementi del vettore somma è inferiore alla sua lunghezza, cioè

ΣKΣioun'io,f(io),K<N

4
Non è difficile ridurre il problema delle 3 partizioni al tuo problema. Ciò significa che il problema è NP-completo anche se i numeri sono indicati in modo unario e questo esclude uno degli approcci comuni per un algoritmo di approssimazione.
Tsuyoshi Ito,

Grazie per le correzioni e grazie a @Tsuyoshi Ito per la comprensione. Se lo capisco correttamente, la restrizione a due vettori per riga (che ho dimenticato di dichiarare) invalida la riduzione e può rendere il problema molto più semplice.
maaartinus,

Hai ragione, la riduzione del problema delle 3 partizioni a cui stavo pensando non funziona se ci sono solo due vettori per riga.
Tsuyoshi Ito,

Quindi ci sono combinazioni da confrontare? jio
Jason Kleban,

@ uosɐſ: Per essere precisi, ci sono combinazioni possibili, dove è il numero di possibilità per e è il numero di possibilità per . J = 2 j I = 64 iJio=264J=2jio=64io
maaartinus,

Risposte:


7

Riduzione da 3SAT alla versione a due vettori: data una formula, lascia che indicizzi le variabili, e clausole di indice. Sia il numero di volte in cui la variabile appare positivamente (se ) o negativamente (se ) nella clausola . OPT è inferiore a se la formula è soddisfacente (la biiezione è ovvia).j { 0 , 1 } k a i , j , k i j = 0 j = 1 k 3ioj{0,1}Kun'io,j,Kioj=0j=1K3

Come avrei attaccato questo problema: la grande ricerca di quartiere. Inizia con qualsiasi soluzione. Scegli righe a caso. Usa la forza bruta per trovare la soluzione migliore in cui può cambiare solo su quelle righe, molto fattibile anche per moderato dato che la dimensione del problema è di righe. Ripetere.f k 64rfK64


1
Questa è una bella riduzione. Non sono sicuro del perché non abbia alcun voto positivo. Comunque, ecco il mio +1.
Tsuyoshi Ito,

1
Penso che dovresti elaborare un po 'di più sulla riduzione. In particolare, si ha nascosti bene, forse troppo bene, in quanto rende il bijection un po 'difficile da vedere. f
Raffaello

7

Non possiamo discutere la complessità di un problema quando la dimensione del problema è fissata su una costante, perché (la maggior parte della) teoria della complessità si occupa del comportamento asintotico della complessità del problema poiché la dimensione del problema tende all'infinito. Qui, considero sia il numero di righe che la dimensione dei vettori come variabili.

Quindi il problema è NP-completo anche se i numeri nell'input sono indicati in modo unario. Questa non è una risposta alla tua domanda perché stai chiedendo approssimazione, ma è qualcosa.

Definisci il problema rigorosamente:

Istanza : n coppie di vettori a i , b i ∈ ℕ m ( i ∈ {1, ..., n }) e K ∈ ℕ, tutti in unario.
Domanda : Possiamo scegliere tra un io o b i per ogni i in modo che la somma di questi n vettori ha al massimo K in ogni coordinata?

Di seguito è un problema noto NP completo chiamato 3-partizione :


Istanza a 3 partizioni : B ∈ ℕ e 3 k numeri interi c 1 ,…, c 3 k tra B / 4 e B / 2, esclusivo, tale che ∑ i = 1 3 k c i = kB , tutti in unario.
Domanda : il multiset { c 1 , ..., c 3 k } può essere suddiviso in k multiset S 1 , ..., S k in modo tale che la somma di ogni S j sia uguale aB ?

Data un'istanza ( B ; c 1 ,…, c 3 k ) del problema delle 3 partizioni, costruisci un'istanza del problema sopra come segue. Per ogni i = 1,…, 3 k e j = 1,…, k , costruiremo una coppia di vettori dimensionali di 4 k , che rappresentano la scelta se c i appartiene o meno a S j :

  • Vettore rappresentativo scelta “ c iS j ” ha un solo ingresso diverso da zero, che è ( k -1) c i a j esima coordinata.
  • Il vettore che rappresenta la scelta " c iS j " ha anche solo una voce diversa da zero, che è B alla coordinata ( k + i ) -th.

Non è difficile vedere che l'istanza ( B ; c 1 ,…, c 3 k ) del problema delle 3 partizioni ha una soluzione se e solo se esiste un modo per scegliere un vettore da ciascuno dei 3 k 2 costruiti coppie in modo che tutte le coordinate della somma di questi vettori sono al massimo ( k -1) B . (In effetti, quando ciò accade, tutte le coordinate della somma sono uguali a ( k −1) B. ) Quindi questa è una riduzione dal problema delle 3 partizioni al problema precedente.

Finora ho ignorato i due vincoli aggiuntivi indicati alla fine della domanda, ma entrambi sono facili da applicare modificando leggermente questa riduzione. La condizione che la somma degli elementi di ciascun vettore sia uguale può essere imposta aggiungendo coordinate fittizie che contengono solo 0 o 1. La condizione che questa somma sia inferiore alla dimensione può essere applicata aggiungendo coordinate fittizie che contengono solo 0.


Bella risposta, solo alcune note: 1. Non mi interessa la complessità teorica qui. 2. Il numero di righe è fisso e può rimanere tale, poiché è sufficiente variabile . Detto questo, grazie mille. N
maaartinus,
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.