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}n→Na∈{0,1}n {+,×}1F(a)≥t0F(a)≤t−1t=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+×1−xix¯i#AC0{+,×}+×xi1−xi 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 i−1−xi

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 ). ct≤nccn

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 } n → N s t 0 1 t = m m 2 m ≈ n 1 / 3 t F s t m2nϵϵ>0F:{0,1}n→N st01t=mm2m≈n1/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,…,ctcic≥ic01+⋅{∧,∨} : ad es. Se c = a + b , quindi c i = ⋁ j + k ≥ i ( a j ∧ b k ) . O(t2)c=a+bci=⋁j+k≥i(aj∧bk)
— 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,a′≥ta+b,a′+b≥tab,a′b≥tab=a′b(=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,…,ctcic≥ic01cxc1=xc2=⋯=ct=0. Se è una porta di addizione, diciamo c = a + b , la implementiamo tramite c i = ⋁ j , k ≤ t j + k ≥ i ( a j ∧ b k ) . Le porte di moltiplicazione sono gestite allo stesso modo.cc=a+b

ci=⋁j,k≤tj+k≥i(aj∧bk).

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 ogniunaj∧bkè utilizzato come ingresso di uno solo deicicancelli.

ct=⋁j+k≥t(aj∧bk),ci=ci+1∨⋁j+k=i(aj∧bk),i<t,
aj∧bkci
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.