Chr*_*ris 7 binary logic hashtable boolean-expression boolean-operations
自我枚举pangrams的wiki文章指出它们是使用二元决策图计算的.我一直在阅读有关BDD的内容,根据我的理解,您需要先将一些问题表示为布尔函数,然后才能构建BDD.
我该怎么做呢?
我已经考虑了几天这个问题了,我很确定你可以使用简单的编码来表示布尔函数的输入:
10000 01010 01011 10101 ...
16A's 10B's 11C's 21D's ...
Run Code Online (Sandbox Code Playgroud)
所以对于一个pangram开始"十六A,十B,十一C,二十一D",你可以把它表示为10000010100101110101 ......
这意味着布尔函数中有26*5 = 130个变量,假设您将字符的最大频率限制为32次出现.
输出应该是表示是否是自我枚举的pangram,即如果句子描述其自己的一组频率.
要做到这一点,在此过程中肯定需要一个哈希表(或几个).
因此,对于字母E,哈希表可能会开始:
one -> 1
two -> 0
three -> 2
four -> 0
five -> 1
...
Run Code Online (Sandbox Code Playgroud)
二进制,可能看起来像:
1 -> 1
10 -> 0
11 -> 10
100 -> 0
101 -> 1
Run Code Online (Sandbox Code Playgroud)
如果来自E哈希表的所有查找的总和等于对应于E的五个输入比特,那么自枚举庞格的那部分是正确的.如果所有部分都正确则布尔函数应该为1,否则为0.
我很确定我可以弄清楚如何使用布尔函数执行加法以及如何检查两个数字是否相等.但是,我不知道从何处开始将哈希表表示为布尔函数.此外,将所有部分连接在一起可能会让我感到困惑.
有什么想法吗?想法?合作?我想知道这是怎么回事.
提前致谢.