我有两个布尔向量
我想使用布尔代数计算它们的内积。因此,我想要的结果是:
因为加法扮演XOR(异或)的角色。
我知道可以这样完成乘积部分。
a = [1,1,1]
和 b = [0,1,1]
,其中显然 1
代表 true
,0
代表 false
。我想使用布尔代数计算它们的内积。因此,我想要的结果是:
1*0 + 1*1 + 1*1 = 0 + 1 + 1 = 0
因为加法扮演XOR(异或)的角色。
我知道可以这样完成乘积部分。
a = [true, true, true] # could also use ones(Bool, 3)
b = [false, true, true]
bitwise_prod = a .& b
但我不知道如何做求和。有什么想法吗?
⊻
,你也可以通过输入\xor
来获得。 - phipsgablera.& b
。您也可以通过mapreduce(x->x[1]&x[2], xor, zip(a,b))
来避免分配中间数组。 - Simon Byrnemapreduce
版本的可读性要比reduce(xor, a .& b)
差得多。除非你的数组非常大,否则reduce
版本可能更可取。 - Sundar R