Questa non è una risposta È un'osservazione semplice ma lunga. Spero sia utile.
La versione decisionale del problema è: contiene un sottoinsieme di A ?XA
Questo problema è correlato al problema della valutazione di funzioni booleane monotone di variabili. Un sottoinsieme di { 1 , ... , n } equivale a una n -bitstring, quindi la famiglia X è equivalente a una funzione booleana f di n variabili. Data una funzione f , si può definire la funzione meno monotona che non è più grande di f , vale a dire g ( y ) = ( ∃ x ⊆ y ,n{1,…,n}nXfnff . Il problema originale viene quindi ridotto alla valutazione di g ( A ) . Al contrario, il problema di valutare una funzione booleana monotona può essere ridotto al problema originale, ingenuamente prendendo f = g o scegliendo una f che rende X più piccolo.g(y)=(∃x⊆y,f(x))g(A)f=gfX
In pratica i BDD tendono a funzionare bene. Quindi un possibile approccio è costruire il BDD per , derivarne da esso il BDD per g e quindi valutare g . La dimensione media del BDD per g deve essere , perché ci sono molte funzioni booleane monotone . Quindi, in teoria questa è una cattiva soluzione.fgggΩ((nn/2))
Ma (1) potrebbe essere possibile un'analisi migliore e (2) potrebbero esserci delle modifiche a questo approccio che lo rendono migliore. Ad esempio, non ho usato in alcun modo la correlazione tra la dimensione di e la dimensione del BDD di . (Deve esserci una correlazione, ma non so se sia semplice o utilizzabile qui.)gXg
Per completezza, un semplice algoritmo per calcolare il BDD per dal BDD per è il seguente.
Ecco è l'operazione standard o sui BDD.f m ( x ? f 1 : f 0 ) = x ? ( m ( f 0 ) ∨ m ( f 1 ) ) : m ( f 0 ) ∨gf
m(x?f1:f0)=x?(m(f0)∨m(f1)):m(f0)
∨