Il problema non ha un kernel polinomiale a meno che NP non sia in coNP / poly. La tecnica di composizione incrociata del nostro documento si applica in modo non banale.
Permettetemi di mostrare come il classico problema di Vertex Cover OR-cross-compone nel problema k-FLIP-SAT; dai risultati nel documento citato, questo è sufficiente. Concretamente, costruiamo un algoritmo del tempo polinomiale il cui input è una sequenza di istanze di Vertex Cover che condividono tutti lo stesso valore di k e tutti hanno esattamente n vertici. L'output è un'istanza di k -FLIP SAT con un valore di parametro di O ( k +( G1, k ) , ( G2, k ) , ... , ( Gt, k )Knk , sufficientemente piccolo per una composizione incrociata, in modo tale che l'istanza k -FLIP SAT abbia risposta sì se uno dei grafici di input ha una copertura del vertice di dimensione k . Duplicando un input (che non cambia il valore dell'OR) possiamo garantire che il numero di input t sia una potenza di due.O ( k + logt )KKt
La composizione procede come segue. Numerare i vertici nel grafico di ciascun grafico di input come v i , 1 , v i , 2 , … , v i , n . Creare una variabile corrispondente nell'istanza FLIP-SAT per ciascun vertice di ciascun grafico di input. Inoltre, creare una variabile di selezione u i per ciascun numero di istanza di input i ∈ [ t ] . Per ogni grafico di input G i , aggiungiamo alcune clausole alla formula. Per ogni bordo { v i , xsoliovio , 1, vio , 2, ... , vio , nuioi ∈ [ t ]solio del grafico G i , aggiungi la clausola ( v i , x ∨ v i , y ∨ ¬ u i ) alla formula, che codificherà "uno dei punti finali di questo bordo è impostato su vero, o l'istanza i non è attiva ". Nell'assegnazione iniziale, tutte le variabili del vertice sono impostate su false e tutte le variabili del selettore u i{ vio , x, vio , y}solio( vio , x∨ vio , y∨ ¬ uio)iouiosono impostati su false, in modo che tutte queste clausole siano soddisfatte. Per incorporare il comportamento OR nella composizione, aumenteremo la formula per garantire che un'assegnazione soddisfacente imposti almeno un selettore su true e debba quindi formare anche una copertura del vertice del grafico selezionato.
Per essere sicuri di poter fare questa selezione mantenendo piccola la distanza di vibrazione rispetto al numero di input , usiamo la struttura di un albero binario completo con foglie a t , che ha il registro dell'altezza t . Numero le foglie da 1 a t e associare l' ho foglia -esimo alla variabile u i che controlla se l'ingresso i è attivo o meno. Creare una nuova variabile per ciascun nodo interno dell'albero binario. Per ciascun nodo interno, lascia che la sua variabile corrispondente sia xe che le variabili dei suoi due figli siano y e z . Aggiungi la clausola (ttlogt1tiouioioXyz alla formula che cattura l'implicazione ( x → ( y ∨ z ) ) , applicando che x può essere vero solo se uno dei suoi figli è vero. Per completare la formula, aggiungi una clausola singleton che dice che la variabile del nodo radice dell'albero binario deve essere vera. Nell'assegnazione di verità iniziale, i valori di tutte le variabili per i nodi interni sono impostati su false, il che soddisfa tutte le clausole della formula ad eccezione della clausola singleton che richiede che il nodo radice dell'albero abbia la sua variabile true.( ¬ x ∨ y∨ z)( x → ( y∨ z) )X
Questo completa la descrizione della formula e l'assegnazione della verità. Impostare il parametro del problema FLIP DISTANCE su uguale ( k + log t + 1 ) , che è opportunamente delimitato per una composizione incrociata. Resta da dimostrare che possiamo capovolgere k ' variabili per rendere vera la formula se un grafico di input G i ha una copertura del vertice di dimensione k .K'( k + logt + 1 )K'solioK
Nella direzione inversa, supponiamo che ha un dimensione- k copertura dei vertici. Impostare le variabili k corrispondenti ai k vertici nella copertina su true capovolgendole. Impostare la variabile selettore u i true per codificare tale ingresso i è attivata e capovolgere le variabili dei log t nodi dell'albero binario interne sul percorso di foglia i alla radice true. È facile verificare che si tratti di un compito soddisfacente: le implicazioni nell'albero binario sono tutte soddisfatte, il valore del nodo radice è impostato su vero, le clausole che controllano i bordi di G i ′ per isolioKKKuioiologtiosolio' resta soddisfatta perché u i ' rimane falso, mentre le clausole di grafo G i sono soddisfatti perché per ogni bordo abbiamo impostato almeno un endpoint vero.io'≠ iouio'solio
Per la direzione in avanti, supponiamo che la formula possa essere soddisfatta lanciando al massimo variabili. Quindi dobbiamo capovolgere la variabile del nodo radice su true. Le implicazioni nell'albero binario impongono che almeno una variabile selettore di un foglio è impostata su true, dico u i . Per soddisfare le implicazioni codificati nel albero binario, tutti i nodi interni sul percorso da u i alla radice sono stati impostata su true, la contabilità per 1 + log t lanci. Poiché u i è impostato su true, le clausole create per il grafico G i non sono soddisfatte sul valore letteraleK + logt + 1uiouio1 + registrotuiosolio , quindi sono soddisfatti perché uno dei punti finali di ogni bordo del G i è impostato su vero. Poiché almeno 1 + log t variabili dell'albero binario sono state capovolte, al massimo k le variabili di vertice sono capovolte su true in questa soluzione. Questo codifica una copertura del vertice di dimensione k in G i e dimostra che uno degli input è un'istanza YES. Questo completa la prova.¬ uiosolio1 + registrotKKsolio