Circuiti aritmetici con una sola soglia


21

Se limitato a 0 - input, ogni circuito ,, calcola alcune funzioni . Per ottenere una funzione booleana , possiamo semplicemente aggiungere un gate di soglia fanin-1 come gate di uscita. All'ingresso , la soglia risultante - il circuito quindi emette se e emette se ; la soglia può essere qualsiasi numero intero positivo, che può dipendere da1{+,×}F(x1,,xn)F:{0,1}nNa{0,1}n {+,×}1F(a)t0F(a)t1t=tnnma non sui valori di input. Il circuito risultante calcola una funzione booleana (monotona) .F:{0,1}n{0,1}

Domanda: I circuiti di soglia -circuits possono essere simulati in modo efficiente da -circuits? { , }{+,×}{,}

Sotto "efficientemente" intendo "con al massimo un aumento polinomiale delle dimensioni". La risposta è chiara "sì" per la soglia : basta sostituire con , per e rimuovere l'ultimo gate della soglia. Cioè, -circuits sono in effetti soglia- -circuits. Ma che dire delle soglie più grandi, diciamo, ? + × { , } 1 { + , × } t = 2t=1+×{,}1 {+,×}t=2

Si possono definire analoghi aritmetici della maggior parte delle classi di circuiti booleani semplicemente usando invece di OR, invece di AND e invece di . Ad esempio, i circuiti sono -circuiti di profondità costante con porte fanin e illimitate e input e . Agrawal, Allender e Datta hanno dimostrato che la soglia = . (Ricorda che stesso è un vero e proprioC + × 1 - x i ˉ x i # A C 0 { + , × } + × x i 1 - x i#CC+×1xix¯i#AC0{+,×}+×xi1xi T C 0 A C 0#AC0TC0AC0sottoinsieme di ; prendiamo, diciamo, la funzione di Maggioranza.) In altre parole, i circuiti di soglia a profondità costante possono essere simulati in modo efficiente mediante circuiti a profondità costante , con un solo gate di soglia! Si noti, tuttavia, che la mia domanda riguarda i circuiti monotoni (nessun segno meno " " come porte e persino nessun come ingressi). Può un (ultimo) cancello di soglia essere così potente anche allora? Non conosco queste cose, quindi qualsiasi suggerimento correlato è il benvenuto. { + , - , × }TC0{+,,×}1 - x i1xi

NB C'è ancora un altro interessante relativo risultato a causa di Arnold Rosenbloom: -circuits con un solo monotona funzione come porta di uscita può calcola ogni funzione slice con gate. Una funzione slice è una funzione booleana monotona che, per alcuni fissi , emette (resp. ) su tutti gli input con meno (resp., Più) di . D'altro canto, il conteggio facile mostra che la maggior parte delle funzioni di divisione richiedono circuiti generici di dimensioni esponenziali. Pertanto, un gate di uscita aggiuntivo "innocente" può{+,×}O ( n ) k 0 1 k { , , ¬ }g:N2{0,1}O(n)k01k{,,¬}rendere onnipotenti i circuiti monotoni! La mia domanda mi chiede se ciò può accadere anche quando è un gate di soglia fanin- . 1g:N{0,1}1


ATTUALIZZAZIONE (aggiunta il 03.11.2014): Emil Jeřábek ha dimostrato (tramite una costruzione incredibilmente semplice, vedi la sua risposta sotto) che la risposta è "sì" fintanto che per una costante . Quindi, la domanda rimane aperta solo per le soglie super-polinomiali (in ). ctnccn

Di solito, nelle applicazioni funzionano solo soglie elevate: di solito abbiamo bisogno di soglie del modulo per . Dire, se conta il numero di percorsi - nel grafico specificato dall'input - , quindi per con , la threshold- versione di risolve l'esistenza di un Hamiltoniana - problema percorso sul grafici -vertex (vedi, ad esempio qui ). ε > 0 F : { 0 , 1 } nN s t 0 1 t = m m 2 m n 1 / 3 t F s t m2nϵϵ>0F:{0,1}nN st01t=mm2mn1/3tF stm

(Aggiunto il 14.11.2014): dal momento che Emil ha risposto a gran parte della mia domanda, e poiché il caso delle soglie esponenziali non è in vista, ora accetto la risposta (molto carina) di Emil.



Aspetta ... dimensione esponenziale? Penso che tu possa implementare una funzione slice in dimensioni polinomiali con gate booleani, è solo una formula (che non può riutilizzare più di una volta i risultati intermedi) che deve avere dimensioni esponenziali.
Zsbán Ambrus,

@ Zsbán Ambrus: Esistono al massimo SaS circuiti di dimensione S , ma almeno funzioni k -slice 22bndistinte già per k = n / 2 ; a, b costanti positive. kk=n/2
Stasys,

2nc . ({0,,t},min{x+y,t},min{xy,t})
Emil Jeřábek sostiene Monica il

2
Si ottiene circuiti direttamente. Sostituisci ogni nodo c con t + 1 nodi c 0 , , c t , dove c i calcola il predicato booleano c i . (Non è necessario c 0 poiché calcola la costante 1 , ma semplifica l'espressione di seguito.) In questa rappresentazione, + e possono essere simulati da circuiti { , } di dimensione O ( t,ct+1c0,,ctcicic01+{,} : ad es. Se c = a + b , quindi c i = j + k i ( a jb k ) . O(t2)c=a+bci=j+ki(ajbk)
Emil Jeřábek sostiene Monica il

1
@Emil Jeřábek: Very nice! Ora ho aggiunto un'osservazione su questo. In realtà, potrebbe forse valere la pena di inserire questo commento come risposta: anche il caso della soglia polinomiale non è stato immediatamente chiaro (almeno per me).
Stasys,

Risposte:


16

La risposta è "sì" se . Più in generale, un circuito di soglia { + , } di dimensione s con soglia t può essere simulato da un circuito di { , } di dimensione O ( t 2 s ) .t=nO(1){+,}st{,}O(t2s)

Innanzitutto, osserva che è sufficiente valutare il circuito in con addizione e moltiplicazione troncata: in particolare, se a , a t , quindi a + b , a + b t e a b , anche a b t , oppure a b = a b ( = 0 ) .{0,,t}a,ata+b,a+btab,abtab=ab(=0)

Con questo in mente, possiamo simulare il circuito con un circuito monotono booleano sostituendo ogni nodo con nodi c 0 , ... , c t , dove c i è destinato a calcolare il predicato c i . (Abbiamo bisogno di c 0 solo per comodità notazionale, calcola la funzione costante 1 ). Se c è una variabile di input booleana x , prendiamo c 1 = x , c 2 = = c t = 0cc0,,ctcicic01cxc1=xc2==ct=0. Se è una porta di addizione, diciamo c = a + b , la implementiamo tramite c i = j , k t j + k i ( a jb k ) . Le porte di moltiplicazione sono gestite allo stesso modo.cc=a+b

ci=j,ktj+ki(ajbk).

Questo richiede porte per una porta del circuito originale. Come ottimizzazione minore, possiamo ridurla a O ( t 2 ) inserendo c tO(t3)O(t2) in modo che ogniunajbkè utilizzato come ingresso di uno solo deicicancelli.

ct=j+kt(ajbk),ci=ci+1j+k=i(ajbk),i<t,
ajbkci
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.