【发布时间】:2019-02-06 21:38:58
【问题描述】:
我试图找到一列出现多次的位。让我给你举个例子:
X Y Z Set A 0 1 0 Set B 0 0 1 Set C 0 1 0 Set D 0 0 0
通过 UNION 操作,我可以知道集合列表中哪一列的位设置为 1。如果我执行 A UNION B UNION C UNION D 那么我们得到 0 1 1 ,这意味着 X 列没有设置为 1 的位,Y 列和 Z 列至少有 1 个位设置为 1。
我的问题是我试图找到正确的设置操作来查找多次设置为 1 的列。在上面给出的示例中,Y 列有 2 位设置为 1。因此结果应该是 0 1 0。
我尝试做交叉点,这是最合乎逻辑的做法,但会产生不同的结果。
我很感激有人可以指导我应该执行哪种集合操作组合来获得所需的结果。提前致谢。
【问题讨论】:
-
“算法”不是我们可以帮助您的编程语言。你打算在这里写什么代码?
-
@tadman 我不是试图通过编程语言编写代码,而是我正在寻找一种算法(步骤)来通过集合论/操作来解决问题。
-
Stack Overflow 是针对编程问题的,所以如果这更多的是数学/理论问题,那么这里就离题了。你可能想试试Quora。
-
我不知道如何从中创建确定性算法,但有一个推测可能会有所帮助-您可以获取每个集合之间的对称差异以及所有集合的并集,以及任何位设置为 1 表示这些位设置为 1 的偶数组(因此有效地达到 50% 的准确度)。在您的示例中,您将获得
A SYM-DIFF B ... SYM-DIFF (A UNION B ...) => 0 1 0
标签: algorithm set-theory