Decidere se cambiare una voce riduce il permanente di una matrice nella gerarchia polinomiale?


11

Considera il seguente problema: data una matrice , indici i , j ∈ { 1 , ... , n } e un numero intero a . Sostituire M [ i , j ] da una e chiamare nuova matrice M . Is p e r ( M ) > pM∈{−m,…,0,…,m}n×ni,j∈{1,…,n}aM[i,j]aM^ ?per(M)>per(M^)

È questo problema nella gerarchia polinomiale?


4
Può essere risolto con due chiamate a un oracolo #P ... Se fosse in PH, ciò implicherebbe che anche PP è in PH ... Tuttavia, se PP è in PH, allora PH collassa. Quindi penso che sia improbabile che sia in PH.
— Tayfun paga il

1
@TayfunPay Non penso che l'argomento sia corretto. Il problema può essere risolto con 2 chiamate a #P, ma non può essere escluso così facilmente che esiste un algoritmo più semplice che potrebbe mostrare che è in PH. Dovresti mostrare che è difficile per #P per questo, ad esempio riducendo Permanent ad esso.
— Jan Johannsen,

8
Se si collega la definizione di permanente e si semplifica la risultante disuguaglianza, il problema si riduce alla domanda se il permanente di una data matrice (n-1) -by- (n-1) sia strettamente positivo.
— Gamow,

2
@Gamow, e viceversa, cioè decidere se può essere ridotto a questo problema. Data una matrice M , costruisci M ′ aggiungendo una linea in alto e una colonna a sinistra con un 1 nell'angolo in alto a sinistra e 0 altrimenti. Ora lascia che M ″ sia la matrice M ′ in cui la voce in alto a sinistra è stata sostituita da - 1 . Quindi P E R ( M ″ ) = - P E R ( M ′ ) =PER(M)>0MM′M″M′−1 per multilinearità e sviluppo della prima colonna. Quindi P E R ( M ) > 0 iff il problema di Turbo su M ′ , ( i , j ) = ( 0 , 0 ) e a = - 1 ritorna vero. PER(M″)=−PER(M′)=−PER(M)PER(M)>0M′(i,j)=(0,0)a=−1
— lupo,

@holf: penso che dovresti pubblicare questo come risposta. Risponde piuttosto definitivamente alla domanda, e quindi la domanda non apparirà più come "senza risposta".
— Joshua Grochow,

Risposte:


10

Il tuo problema è equivalente al test, dato M , se PER(M)>0 .

Prova : supponiamo che ti venga dato M e desideri decidere se PER(M)>0 . Costruiamo M′ come segue:

[10…00…M0]
È facile vedere chePER(M)=PER(M′). Ora, definiamoM′^ comeM′ dove sostituiamo la voce(0,0)diM′ con−1. Per multilinearità, ne consegue chePER(M)=PER(M′)=−PER(M′^) . QuindiPER(M)>0 se e solo sePER(M′)>PER(M′^) .

M(i,j)aM^M[i,j]a

PER(M)>PER(M^) iff∑σ∏k=1nM[k,σ(k)]>∑σ∏k=1nM^[k,σ(k)] iff∑σ,σ(i)=jM[i,j]∏k≠inM[k,σ(k)]>∑σ,σ(i)=ja∏k≠inM[k,σ(k)] iff(M[i,j]−a)⋅∑σ,σ(i)=j∏k≠inM[k,σ(k)]>0 iff(M[i,j]−a)⋅PER(M′)>0

M′(n−1)×(n−1)Mij◻


Buona risposta, ma probabilmente vale la pena dichiarare esplicitamente anche la risposta alla domanda del PO.
— Stella Biderman,
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.