问题标签 [set-union]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
615 浏览

algorithm - 集合合并算法的最佳性能是什么?

假设支持 O(n) 迭代和 O(log n) 访问单个项目的有序集合,集合并集、集合交集和集合差的理论上最优复杂度是多少?假设可以对集合使用专用结构,只要结果与输入的类型相同。

编辑:

令 n 为较大集合的大小,m 为较小集合的大小,d 为对称差的大小。

本文描述了一种算法。它以 O(m*log(n/m)) 运行,据称是最佳的。然后在本文中对该算法进行了修改,使其也变为 O(d*log(n/d))。

可以改进最优算法是否矛盾?我猜不是因为 d 是一个新参数,所以 O(m*log(n/m)) 相对于 n 和 m 仍然是最优的。但这是结束还是可能有多快?

0 投票
2 回答
2375 浏览

c++ - C ++如何将Vector的两个对象合并,联合,相交成新的第三个对象?

我一直在学习 Vector 并且无法完成某些部分。我的代码和下面的描述。输出应该是这样的:

骨架部分:

这是到目前为止的代码:

卡在这里:在运算符+(合并两个向量)上,运算符-(显示第一个向量上不存在第二个向量的数字),联合,相交。另外,我不知道如何将新向量的对象(第 3 个和第 4 个)作为 b1 和 b2 先前操作的结果。

0 投票
1 回答
368 浏览

c++ - 没有重载运算符 = 显示在 algorithm.cpp

我正在使用 set_union(包含在 algorithm.cpp 中)并在 STL 库中设置。

我的集合包含一个自定义类 Vertex 的对象,其中我重载了 operator=

这是顶点类:

问题在于以下几行,包含在不同类的方法中。

该代码在 algorithm.cpp 中生成编译错误,更具体地说,在 set_union 的代码中,它声明对于两个类型为“InputIterator”的对象没有可行的重载 operator=。

这是编译器错误位置:

我在这里想念什么?

0 投票
1 回答
683 浏览

c++ - segfault set_union 与对象:std::set

大家好:)我希望有人有解决方案,否则我终于找到了^^

语境

我是 C++ 的初学者,所以,对象、模板和迭代器可能我有点了解并进行了一些更改,但是当遇到困难时我无法操作它。我正在构建一个软件,使用范围来评估扑克游戏中的概率。我用图书馆的扑克炉。https://github.com/andrewprock/pokerstove。在扑克中,我们大多数时候评估一手牌对抗另一手牌获胜的概率。但是我们不知道对手的牌:所以我们操纵一个范围或一组牌。在这里,一手牌(2 张牌)是来自 pokerstove 的 CardSet 结构。所以,我必须进行像交集、差集和并集这样的集合操作。

问题

我对 union_set 有问题,但对 set_difference 没有:

作品。pourcent_stove(30.) 在无限德州扑克中给出前 30% 2 张牌的最佳牌组。

但:

不起作用:我有段错误。

我想问题就在这里,因为联合可以增加元素的数量。您对我可以添加的行有什么想法吗?

尝试

我尝试做 push_back 迭代器。但没有成功。据说该对象不存在该方法。我还尝试使用向量的语法为 set 声明大小:没有成功

文件

我没有足够的声誉来放置我使用过的文档的链接。(最多 2 个链接)

卡组代码

我必须写下许可地址以尊重作者:https ://github.com/andrewprock/pokerstove/blob/master/LICENSE.txt

感谢您的阅读:)

0 投票
0 回答
94 浏览

c++ - Set_Union 给出运行时错误

我一直在研究一个问题,我必须合并 n 个集合,看看所有集合是否不相交。我在用着

我的代码草稿如下:

如果 I 的最后一个元素为 0,我将退出循环,因为 A 中的任何向量都不会包含 0。上面的代码不起作用。它给出了一些未知的运行时错误。请建议我哪里出错了?

实际代码:

0 投票
1 回答
6896 浏览

java - 如何在 Java 中为集合编写交集和并集方法

我是使用集合的新手,对于学习如何使用集合的练习之一,我得到了一个模板文件“SetInt”和一个完整的测试文件“TestSetInt”。我知道我应该使用 retainAll() 和 addAll() 但测试类要求我编写方法。有人知道如何编写这两种方法吗?任何帮助,将不胜感激。

SetInt 是我必须添加方法的文件,如下所示:

这是 TestSetInt,它是为我提供的一个文件,我必须运行它来查看我的方法是否正常工作:

0 投票
1 回答
418 浏览

algorithm - 获取M个排序集并集的前N项最有效的方法是什么

假设您有 4 个排序集,其中包含数千个键和分数。由于它们是排序集,因此可以以对数时间复杂度获得顶部项目。

简单的方法是取集合的并集,然后得到最上面的项目。但这样做至少与所有集合中所有项目的总和呈线性关系。

我能想到的最好方法是这样的:

  1. 从每组中取出前 N 项
  2. 找到排名最低和该排名得分最高的项目。
  3. 将该分数除以组数。(分数低于此的任何键都永远无法进入前 N)
  4. 取这些键的并集。(忽略分数)
  5. 查找所有集合中所有键的分数。(一个键可能在一组中得分为 1,在另一组中得分为 10000)

这就像,找到所有可能在顶部列表中的键,并与这些键进行联合。可能有更有效的方法来限制要考虑的项目数量。

[编辑] 键出现在一组或多组中,它们的总分决定了最终得分。因此,在所有集合中得分较低的密钥可能比仅在一个集合中得分较高的密钥具有更高的得分。

0 投票
1 回答
1107 浏览

c++ - std::set_union 向量>

我想计算两个向量之间的并集:

std::vector<pair<string,string>> p1;

std::vector<pair<string,string>> p2;

问题是为什么联合是在第二个元素而不是第一个元素上完成的?union 的大小应该等于4。是否可以修改 set_union 以便在第一个元素上完成联合?


0 投票
1 回答
538 浏览

c++ - set_union 和 set_intersection 的问题 - C++

我目前正在从事一个涉及集合计算的项目。我正在使用函数 set_union 和 set_intersection 来计算集合的并集和交集。我的变量是:

它们分别是四个集合的并集和交集:setA、setB、setC 和 setD。我的 set_union 函数如下:

而我的 set_intersection 函数如下:

当我编译时,我收到错误“从这里需要”,我不确定它的含义。有人可以帮我吗?我相信这与 set_union 和 set_intersection 函数及其参数有关,但我不确定。

0 投票
1 回答
68 浏览

java - Java中集合的并集和交集计算不正确

我一直在编写在 Java 中找到两个集合的并集和交集的函数,但我的算法似乎在某个地方有问题。例如,当我输入以下两个数字向量时:

我收到以下信息:

这显然是不正确的。我应该收到:

这是我主要与交集/联合有关的代码:

在这里,Inty 是我创建的一个类,以便我可以更改需要存储在向量中的整数的值,而 Integer 类无法做到这一点。以下是我编写的函数:

如果有人可以就为什么这不起作用提供任何见解,我很想听听。提前致谢!