如何区分二元决策图的正整数和负整数
How to distinguish between positive and negative integers for Binary Decision Diagrams
我有一个包含值的 CSV 文件,我目前正在制定一个命题公式。
这是一个示例:
x=6,y=-5,z=4.
6 = 110
-5 = 1101
4 = 100
我的公式:
( (x2 and x1 and not (x0)) and (y3 and y2 and not(y1) and y0) and (z2 and not(z1) and not(z0)) )
现在我用同样的方法生成了一个 BDD。如果我想让 human/embedded 系统从我的图表中理解,1101 可以表示为 13 或 -5。任何负数都可以有 2 种表示。有什么办法可以只给一个吗?
你有各种各样的可能性。下面主要复述负数的补码表示的动机
(https://en.wikipedia.org/wiki/Two%27s_complement).
对所有数字使用相同的位数,例如用 8 位写出所有数字,然后使用第一位作为符号
6 = 00000110
-5 = 10000101
4 = 00000100
数字零将有两种表示形式:00000000 和 10000000(+0 和 -0)。
如果您使用 ZDD(零抑制 BDD)而不是普通的 ROBDD,您将获得非常紧凑的表示。
使用最后一位作为符号,这对于执行算术会非常棘手,但对于表示来说不是问题。
6 = 1100 (110 + 0)
-5 = 1011 (101 + 1)
4 = 1000 (100 + 0)
您可以设置规则,第一个(最左边的)位必须始终为 1。在这种情况下,数字零唯一表示为 1。ROBDD 将使它成为一个紧凑的表示。
- 使用二进制补码,请注意,这需要固定位数,与第一个提案相同
我有一个包含值的 CSV 文件,我目前正在制定一个命题公式。
这是一个示例:
x=6,y=-5,z=4.
6 = 110
-5 = 1101
4 = 100
我的公式:
( (x2 and x1 and not (x0)) and (y3 and y2 and not(y1) and y0) and (z2 and not(z1) and not(z0)) )
现在我用同样的方法生成了一个 BDD。如果我想让 human/embedded 系统从我的图表中理解,1101 可以表示为 13 或 -5。任何负数都可以有 2 种表示。有什么办法可以只给一个吗?
你有各种各样的可能性。下面主要复述负数的补码表示的动机 (https://en.wikipedia.org/wiki/Two%27s_complement).
对所有数字使用相同的位数,例如用 8 位写出所有数字,然后使用第一位作为符号
6 = 00000110 -5 = 10000101 4 = 00000100
数字零将有两种表示形式:00000000 和 10000000(+0 和 -0)。 如果您使用 ZDD(零抑制 BDD)而不是普通的 ROBDD,您将获得非常紧凑的表示。
使用最后一位作为符号,这对于执行算术会非常棘手,但对于表示来说不是问题。
6 = 1100 (110 + 0) -5 = 1011 (101 + 1) 4 = 1000 (100 + 0)
您可以设置规则,第一个(最左边的)位必须始终为 1。在这种情况下,数字零唯一表示为 1。ROBDD 将使它成为一个紧凑的表示。
- 使用二进制补码,请注意,这需要固定位数,与第一个提案相同