【问题标题】:How do you write pseudocode for union, intersection and product of a venn diagram of two circles?你如何为两个圆的维恩图的并集、交集和乘积编写伪代码?
【发布时间】:2020-05-08 21:08:39
【问题描述】:

假设我们有两个圆的维恩图。我们必须找到它们的并集、交集和乘积。例如我们有集合:

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∩BAB 交集的完美伪代码。
  • 我的任务是编写伪代码以在给定隐式函数 A 和 B(以上述形式)的情况下实现求和、乘积和差。所以如果我理解正确的话,上面的数学运算可以认为是伪代码。非常感谢您的帮助。

标签: math set pseudocode discrete-mathematics


【解决方案1】:

联合 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)

与 union 的性能相同。

A x B:

C := empty set
for each a in A:
    for each b in B:
        C.add((a,b))

这具有二次运行时间,但这是不可避免的,因为返回的结果包含 n^2 个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多