math - 你如何为两个圆的维恩图的并集、交集和乘积编写伪代码?
问题描述
假设我们有两个圆的维恩图。我们必须找到它们的并集、交集和乘积。例如我们有集合:
A=[a,b,f,g]
B=[b,e,f,h]
联盟
AUB=[a,b,e,f,g,h]
路口
A∩B = [f,g]
产品
A*B=[ab, ae, af, ah, bb, be, bf, bh, fb, fe, ff, fh, gb, ge, gf, gh]
我的问题是,我们如何在伪代码中编写这些操作?我不知道该怎么做。
解决方案
A 联合 B:
C := empty set
for each a in A:
C.add(a)
for each b in B:
if not C.contains(b) then C.add(b)
如果使用列表/数组实现,这具有二次运行时间。如果使用哈希表/字典,它具有线性运行时间。
A相交B:
C := empty set
for each a in A:
if B.contains(a) then C.add(a)
与工会相同的表现。
甲×乙:
C := empty set
for each a in A:
for each b in B:
C.add((a,b))
这具有二次运行时间,但这是不可避免的,因为返回的结果包含 n^2 个元素的顺序。
推荐阅读
- python - 使用 Anaconda 从 Github 下载 Python 库
- python - 使用 Python,如何从 Google 搜索中抓取链接的描述性文本?
- c++ - 虚幻引擎 C++ 中的 TArray 浮动错误
- python - 为集成终端设置环境变量
- java - 当扫描仪位于输入的最后时如何使循环停止
- django - 当我尝试 git push 我的应用程序时,Heroku 使用了错误的 requirements.txt
- postgresql - PostgreSQL 密码更改
- r - 如何使用 slackr 改进 slack 消息的格式?
- html - 为什么“负边距和浮动应用元素”重叠?
- virtual-reality - 如何在点击热点时在 google vr 视图中添加弹出窗口。