整数乗算およびバイナリ決定図の最上位ビット


15

ましょととの2つの2進数ビット、進数(長さの積の)と。積の最も正確なビットz_をます。xynz=xy 2nxyz2n1z=z2n1z0

バイナリ決定図のモデル(特に読み取り専用分岐プログラム)でこの関数の複雑さを分析するために、場合に相当する式を探します。最初の明らかなことは、(とは2進数に対応する整数)です。入力ビットを一定に設定するとどうなるか直感的に知りたい。たとえば、との最上位入力ビットを0に設定すると、定数0関数が取得されます。ただし、重要度の低いビットは結果にそのような影響を与えません。z2n1=1z2n1=1xy22n1xyxy

場合、入力ビットを修正するとどうなるかを確認するのに役立つ他の同等の式はありますか?2つの2進数の積を計算するための洗練された方法はありますか?それとも、この問題に対する他のアプローチがありますか?z2n1=1


最後の段落の3つの質問はかなりあいまいです。より具体的な質問をすることを検討してください。
スリムトン

質問は意図的に曖昧です。おそらく誰かがこの問題に対して新しいアプローチや新しいアイデアを持っているでしょう。
マークベリー

問題のBDDの幅を探していますか?
シルヴァンペロンネット

BDDサイズの下限に興味があります。
マークベリー

1
多項式の下限を意味しますか?乗算はLであるため、多項式サイズのBDDは均一です(均一なであるため、幅5でも)。NC1
エミールJeřábekはモニカサポートして

回答:


5

興味深い情報源はDE Knuth:The Art of Computer Programming、Volume 4、Fascicle 1、Bitwise Tricks&Techniquesです。Binary Decision Diagrams、Addison-Wesley、Pearson Education 2009

96ページで、z =x⋅yのすべてのビットに対してBDDがあります。ここで、xとyは3ビットです。3ビットの場合、最上位ビットを表すBDDには7つの非終端ノードがあることがわかります。以下の画像を参照してください。インデックスx =(x2、x1、x0)およびy =(y2、y1、y0)を使用して再描画しました。

Knuthの本の140ページには、2つの数と無限に多くのビットの乗算の最上位ビットを表すBDDに関する質問(no。183)があります(これは「リーディングビット関数の制限」と呼ばれます)-これはあなたに似ていますが大好きです!223ページの回答では、結果のBDDの最初のレベルを示し、すべてのレベルのノード数について説明していますが、残念ながら、そのようなBDDを構築するアルゴリズムは示していません。

2つの3ビット数の乗算の最上位ビット

図1:(x2、x1、x0)*(y2、y1、y0)の乗算の最上位ビット


1
この参照をありがとう。バイナリ決定図がこの「プログラミング百科事典」の一部であることを知りませんでした。
マークベリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.