我有一些组合集,我想找出其中两组之间的交集函数。然后我想用 ZDD 表示相交的结果。
我正在考虑使用CUDD 包来做到这一点。
举个例子:
所有具有汉明距离的 4 位字符串>= 2 和1100=
{ 0001, 0010, 0011,0101,0110, 0111, 1001, 1010, 1011 }
所有具有汉明距离的 4 位字符串>= 2 和0000=
{ 0011, 0101, 0110, 1001, 1010, 0111,1011, 1101, 1110 }
集合的相交元素(我想要的(:
{0011, 0101,0110, 1010, 1001 }
根据我的理解,我需要能够首先用布尔函数表达这些组合集,例如 ( f = a b c d ( 来表示它们对应的 BDD,将它们转换为 ZDD,然后找出交集?对CUDD 软件包有经验的人请帮忙。
你的推理是正确的。您可以先生成对应于两个字符串集的 BDD,将它们转换为 ZDD,然后构建交集(逻辑 AND(。
但是,您也可以先计算交集(逻辑 AND(,然后将结果转换为 ZDD。
但是,不清楚您所说的"找出十字路口"是什么意思 - 您想用它做什么?打印出所有元素?计算元素的数量?根据您的目标,转换为 ZDD 可能是不必要的(或者完全使用 CUDD(。