Sia un vettore di variabili booleane. Sia due circuiti booleani su . Dì che è simile a se:C , D x C D
è esponenzialmente piccolo, quando viene disegnato in modo uniforme a caso da (in altre parole, hanno funzionalità quasi identiche); e,
differiscono nella distanza di modifica del grafico di una piccola quantità (la loro distanza di modifica è molto più piccola della dimensione del circuito, diciamo o una piccola costante), il che significa che quasi tutte le porte e i fili di corrispondono un corrispondente cancello e filo in , con solo alcune porte aggiunte / cancellate / modificate.
Il mio problema: mi viene dato un circuito e voglio sapere se esiste un circuito simile a ma non identico a (cioè, dove esiste tale che ).
Qualcuno può suggerire un algoritmo per risolvere questo problema?
Se aiuta, possiamo limitare l'attenzione ai circuiti che sono più piccoli del dato circuito (cioè, vogliamo sapere se esiste un circuito tale che è più piccolo di , è simile a , e esiste tale che ).
Se aiuta, puoi anche supporre che ci vengano dati casi di test noti tali che per tutti , e possiamo limitare ulteriormente l'attenzione solo ai circuiti tali che per tutti .
Ciò deriva da un'applicazione pratica, quindi se non riesci a risolvere questo problema, sentiti libero di risolvere qualsiasi variante o caso speciale interessante. Ad esempio, sentiti libero di creare un'istanza di qualsiasi parametro o soglia in qualsiasi modo sia conveniente per te. Puoi presumere che i circuiti non siano troppo grandi (dimensioni polinomiali o qualcosa del genere). Sentiti libero di sostituire la distanza di modifica del grafico con qualche altra misura di quasi corrispondenza dell'implementazione. Inoltre, in pratica i solutori SAT sono spesso sorprendentemente efficaci sui circuiti strutturati che sorgono nella pratica, quindi probabilmente va bene invocare un solutore SAT come subroutine / oracolo (almeno, se lo si sta invocando su qualcosa come un'istanza SAT derivata da un circuito come ).
In alternativa, privo di algoritmi, sarei anche interessato alla domanda di esistenza: per un circuito "medio" , qual è la probabilità che esista una che soddisfi tutti i criteri? (Spero che questa probabilità sia molto bassa, ma non ho idea se sia così.)D
L'applicazione pratica è verificare se un circuito potrebbe contenere un backdoor dannoso / uovo di Pasqua nascosto. L'ipotesi di come una cosa del genere possa essere inserita va così. Iniziamo con un circuito "dorato" , che calcola la funzionalità desiderata e non ha backdoor nascosto. Quindi, l'avversario apporta una piccola modifica a per introdurre la backdoor nascosta, ottenendo un circuito modificato . Lo scopo della backdoor è di modificare la funzione calcolata da in qualche modo. Se non è troppo piccolo, la modifica può essere plausibilmente rilevata da test casuali, quindi un avversario probabilmente cercherà di mantenereD D C D Pr [ C ( x ) ≠ D ( x ) ] Pr [ C ( x ) ≠ D ( x ) ] C D x i , y i D D ( x i ) = y i i C D C Dmolto piccolo. Allo stesso modo, se differisce da in troppi punti, ciò potrebbe essere notato da un'ispezione casuale del circuito, quindi un avversario probabilmente proverà a minimizzare il numero di modifiche. (E, potrebbe esserci una suite di test di coppie che rappresentano istanze della funzionalità desiderata, quindi sappiamo che qualunque sia il circuito "dorato" , soddisfa per tutti .) Alla fine, ci viene dato il circuito (ma non il circuito "dorato" ) e vogliamo sapere se potrebbe essere una versione modificata di alcuni, in cui è stata apportata la modifica per introdurre una backdoor nascosta di questo tipo.