【发布时间】:2020-12-19 20:14:57
【问题描述】:
我正在尝试为简单问题(相对简单)找到一个好的解决方案。嗯,我有一个像这样的人为二元方程
A & B & C | D & (E | F) = 1
所以有一组二进制变量(A、B...最多 12 个变量),每个变量可以是 0 或 1。它们之间还有一些数学运算符(AND、OR)和括号。
我有一大组 (A,B,С...) 值(可能有一百万甚至更多),我需要一种方法来仅选择在这个特定等式上给出 1 的值。
我绝对不想为给定列表中的所有项目求解这个方程,这将需要大量 CPU 资源。
相反,我认为有一种方法可以获得一组给我们 1 的值向量,然后将此集合用作哈希表。
你能推荐任何方法来创建这样一个向量表吗?任何现有的算法?谢谢。
对不起,我的英语,也许举个例子会让事情更清楚:
假设我们得到的等式如下所示:A & (B | C),因此相应的向量列表将是
101、110、111。
我需要一个解决方案来为给定方程生成这个列表。
为什么我需要那个?
我开发了一种快速的全文搜索算法,它也适用于短语,但现在我需要通过“OR”、“AND”和大括号元运算符来扩展它,以像 Google 一样增加一些灵活性。
例如,如果用户输入查询“master and margarita”,它将在所有文档中找到单词“master”(A)和单词“margarita”(B)。因此,对于每个文档,我们都有一组 A、B。接下来,我们有方程A & B,我们所需要的只是找到为这个方程给出 1 的文档。当用户输入“master OR margarita”时,等式将是“A OR B”等。
【问题讨论】:
-
我们能知道你为什么想要那个吗?
-
@YvesDaoust 我在最初的帖子中添加了解释,谢谢!
-
感谢您的解释。当然 12 个变量绰绰有余。然后我猜一个 2^n 布尔数组是一个很好的解决方案(n 是变量的数量)。
标签: algorithm math boolean boolean-expression boolean-operations