如何将自枚举pangram表示为布尔函数?

时间:2012-09-05 21:42:56

标签: binary logic hashtable boolean-expression boolean-operations

自我枚举pangrams的wiki文章指出它们是使用二元决策图计算的。我一直在阅读关于BDD的内容,根据我的理解,你需要在为它构建BDD之前将一些问题表示为布尔函数。

我将如何做到这一点?

我几天来一直在考虑这个问题,而且我很确定你可以使用简单的编码来表示布尔函数的输入:

10000 01010 01011 10101 ...
16A's 10B's 11C's 21D's ...

因此,对于一个pangram开始“十六个A,十个B,十一个C,二十一个D”,你可以把它表示为10000010100101110101 ......

这意味着布尔函数中有26 * 5 = 130个变量,假设您将字符的最大频率限制为32次。

输出应该是表示是否是自我枚举的pangram,即句子是否描述了它自己的一组频率。

要做到这一点,在此过程中肯定需要一个哈希表(或几个)。

因此,对于字母E,哈希表可能会开始:

one   -> 1
two   -> 0
three -> 2
four  -> 0
five  -> 1
...

二进制文件中的内容可能如下:

1   -> 1
10  -> 0
11  -> 10
100 -> 0
101 -> 1

如果来自E哈希表的所有查找的总和等于对应于E的五个输入位,则自枚举庞格的该部分是正确的。如果所有部分都正确则布尔函数应该为1,否则为0。

我很确定我可以弄清楚如何使用布尔函数执行加法以及如何检查两个数字是否相等。但是,我不知道从何处开始将哈希表表示为布尔函数。此外,将所有部分连接在一起可能会让我感到困惑。

有什么想法?想法?合作?我想知道这是怎么回事。

提前致谢。

0 个答案:

没有答案