Il calcolo del gate di soglia limitato ( ) sta essenzialmente ordinando i bit di ingresso.∑ixi≥k
Se è possibile ordinare i bit, è facile confrontare il risultato con e calcolare la soglia limitata.k
D'altra parte, supponiamo che abbiamo un circuito per calcolare la soglia limitata. Possiamo fare una ricerca parallela per trovare il numero di quelli nell'input e produrre l'elenco ordinato.
Questi preservano la profondità del circuito. Quindi, se ti viene in mente un nuovo circuito per calcolare la soglia limitata, si otterrà un circuito di classificazione della profondità O ( lg n ) . Quindi, se arriviamo a un semplice argomento per mostrare che la maggioranza è in N C 1,
hai trovato un semplice circuito di ordinamento di profondità O ( lg n ) (diverso da quello basato sulla rete di ordinamento AKS).NC1O(lgn)NC1O(lgn)
Si noti che è facile implementare la soglia limitata usando la maggioranza aggiungendo nuovi ingressi 1 e 0 alla porta della maggioranza.
In precedenza questa risposta affermava che si poteva fare usando divide e conquistare e il fatto che l'aggiunta binaria fosse in . Ciò dimostra solo che la maggioranza è in A C 1 e N C 2 poiché abbiamo porte di fan-in illimitate nell'aggiunta binaria se lo facciamo direttamente. Tuttavia, può essere fatto con un po 'più di lavoro.AC0AC1NC2
Dobbiamo usare il trucco chiamato tre-per-due per rimanere in profondità .O(lgn)
aggiunta binaria tre per due:
dati tre numeri binari possiamo calcolare due numeri binari x , y in modo tale che
a + b + c = x + y .a,b,cx,ya+b+c=x+y
Un altro metodo consiste nell'utilizzare la rappresentazione di cifre con segno di numeri interi in cui l'addizione può essere eseguita in profondità e fan-in 2. (L'idea è quella di utilizzare la flessibilità che un numero può essere rappresentato in più di un modo per assicurarsi che i carry non si propagano).O(1)
Vedi sezione 4 ed esercizio 4 in