Bit più significativo di moltiplicazione di numeri interi e diagrammi di decisione binari


15

Lasciare ed due numeri binari con bit e il numero binario (lunghezza ) del prodotto di ed . Vogliamo calcolare il bit più originale del prodotto .y n z = x y 2 n x y z 2 n - 1 z = z 2 n - 1z 0xynz=xy 2nxyz2n1z=z2n1z0

Al fine di analizzare la complessità di questa funzione nel modello dei diagrammi decisionali binari (in particolare i programmi di ramificazione read-once) provo a cercare alcune espressioni equivalenti per il caso . La prima cosa ovvia è (qui ed sono i numeri interi ai numeri binario corrispondente). Voglio avere un'intuizione cosa succede se imposto costanti alcuni bit di input. Ad esempio se imposto il bit di ingresso più significativo da ed è 0 ottengo la funzione costante 0. Ma i bit con significato inferiore non hanno una tale influenza sul risultato.z 2 n - 1 = 1 x y 2 2 n - 1 x y x yz2n1=1z2n1=1xy22n1xyxy

Esistono altre espressioni equivalenti per il caso che aiutano di più a vedere cosa succede se aggiusto alcuni bit di input? Esistono metodi raffinati per calcolare il prodotto di due numeri binari che possono aiutare? O hai qualche altro approccio a questo problema?z2n1=1


Trovo le tre domande nell'ultimo paragrafo piuttosto vaghe. Per favore, considera di fare una domanda più concreta.
slimton,

Le domande sono intenzionalmente vaghe. Forse qualcuno ha un nuovo approccio o nuove idee per questo problema.
Marc Bury,

Stai cercando la larghezza di un BDD per il problema?
Sylvain Peyronnet,

Sono interessato a un limite inferiore per la dimensione del BDD.
Marc Bury,

1
Intendi un limite inferiore polinomiale? La moltiplicazione è in L, quindi ha BDD di dimensione polinomiale uniforme (anche larghezza 5, poiché è in uniforme ). NC1
Emil Jeřábek sostiene Monica il

Risposte:


5

Una fonte interessante è DE Knuth: The Art of Computer Programming, Volume 4, Fascicle 1, Bitwise Tricks & Techniques; Diagrammi di decisione binaria , Addison-Wesley, Pearson Education 2009

Nella pagina 96, c'è un BDD per tutti i bit di z = x⋅y, dove xey hanno 3 bit. Mostra che nel caso di 3 bit, BDD che rappresenta il bit più significativo ha 7 nodi non terminali. Vedi l'immagine qui sotto, l'ho ridisegnata usando i tuoi indici x = (x2, x1, x0) e y = (y2, y1, y0).

A pagina 140 del libro di Knuth, c'è una domanda (n. 183) sul BDD che rappresenta il bit più significativo per la moltiplicazione di due numeri con infinitamente molti bit (si chiama "limitazione della funzione di bit iniziale") - è simile a quello che si stai cercando! La risposta a pagina 223 fornisce i primi livelli del BDD risultante e discute il numero di nodi su tutti i livelli, ma sfortunatamente non fornisce algoritmo per costruire un tale BDD.

Il bit più significativo per la moltiplicazione di due numeri a 3 bit

Fig. 1: il bit più significativo per la moltiplicazione di (x2, x1, x0) * (y2, y1, y0)


1
Grazie per questo riferimento Non sapevo che i diagrammi decisionali binari facessero parte di questa "enciclopedia di programmazione".
Marc Bury,
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.