问题标签 [set-theory]

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 回答
56 浏览

c# - 对一组 N 个元素组合的测试可用于计算每个不同元素的总和

我需要进行一般测试,看看我是否可以使用元素的组合来计算不同元素的总和,其中每个组合的总和是已知的,但单个元素的值不是。如果你能计算出这个不同的和,那么这个集合是有效的,如果不是,那么这个集合是无效的。一个元素不会在组合中出现两次。

为了显示:

  • 集合 1:{A+B},{B,C} 是无效集合
  • 集合 2:{A}, {B}, {B,C} 是有效集合 ( {A} + {B,C} = A+B+C )
  • 集合 3:{A,D}, {B,C,A}, {B,C} 是无效集合
  • 集合 4:{A,B}, {B,C}, {A,C} 是有效集合 (({A,B}, {B,C}, {A,C})/2 = A+B +C)

将寻求通过 C# 或 SQL 实现测试。

0 投票
1 回答
143 浏览

lisp - 设置,而不是在 Lisp 世界中列出?

在集合论中,我们有{x, y, z},这与{z, y, x}which 相同 ... {y, x, z}, {z, x, y}... 现在,在 Lisp(Scheme 等)中,列表不允许这种并置。订单很重要。问题:是否有一个 Lisp/Scheme 等价于一个顺序无关的集合?

只是猜测,我可能只是简单地构建一个列表,比如说(x y z),然后有某种类型,member?即,你是其中的成员吗?机制。

...我敢打赌,我不是唯一对此感到疑惑的人...

0 投票
1 回答
201 浏览

string - 如何用 Clojure(Script) 字符串模仿“设置交集”和“设置联合”之类的东西?

假设ST是字符串,分别定义如下:

是否有类似的 clojure(script) 操作string-intersectionstring-union(因为没有更好的名称)满足以下条件?

如您所见,string-intersection将消除(逐行)不匹配的行(仅保留匹配的行),同时string-union具有合并行并忽略重复项的效果。

注意:我正在使用 clojurescript,但我想答案也可以推广到 clojure。

0 投票
1 回答
722 浏览

coq - 如何在 Coq 中表达子集关系?

我如何在 Coq 中描述一个集合Y是另一个集合的子集X

我测试了以下内容:

,试图表达如果一个元素y在 中Y,那么y在 中X。但这会产生关于 的类型错误y,这并不奇怪。

有没有简单的方法subset在 Coq 中定义?

0 投票
10 回答
1042 浏览

javascript - 确定可以从序列中删除一组值的所有可能方式的算法

我试图确定有多少种不同的方法可以从序列中删除一组值,使原始序列保持有序(稳定),并确保从原始序列中仅删除一个实例值。例如,如果我有 [1,2,1,3,1,4,4]并且我想删除[1,4,4]我的结果组合将是:

[1,2,1,3,1,4,4] \ [1,4,4] = [ [2,1,3,1], [1,2,3,1], [1,2,1,3] ]

或者 [1,2,1,3,1,4,4] \ [1,1] = [ [2,3,1,4,4], [1,2,3,4,4], [2,1,3,4,4] ]

我编写了 javascript 代码来生成所有数组值的组合而无需删除,删除部分似乎应该很容易,但是当需要多次删除多个值时我没有看到算法。

0 投票
1 回答
118 浏览

clojure - 当结果为空且右集具有更高的基数时,clojure.set/difference 失败

我尝试从一组元素中删除元素,这些元素存在于 Clojure 中的不同序列中。但clojure.set/difference似乎并没有像我预期的那样工作。我的错误在哪里?

一些例子:

删除空序列

结果:(#{3 2}如预期)

删除一些元素

结果:(#{2}如预期)

移除集合中不存在的元素

结果:(#{3 2}如预期)

删除所有元素

结果:(#{}如预期)

移除更多存在的元素

而不是结果我得到IllegalArgumentException contains? 类型不支持:clojure.lang.PersistentList clojure.lang.RT.contains (RT.java:814)

预期结果:#{}

clojure.set/difference因此,当结果是空集并且要删除的元素集具有比原始集更高的基数时,该函数似乎失败了。但问题是:为什么这不起作用?我希望这是clojure.set/difference.

0 投票
2 回答
2021 浏览

recursion - Racket/Scheme - 将函数应用于列表列表中的每个元素

我是一名物理专业的学生,​​正在学习编程的数学课(我注册了数学),但我以前从未用任何语言编写过代码,所以关于 Racket 的一切对我来说都是全新的。到目前为止,该类的目标是获取与集合相关的函数并将它们转换为 Racket 程序。其中一个功能是获取列表列表并删除每个元素的第一项:

f({(0, 1, 0), (1, 0, 0), (1, 1, 1)...} = {(1, 0), (0, 0), (1, 1)。 ..}

到目前为止,我已经将此作为一个程序:

当我运行程序时,它会返回应用了正确的功能,但只有第一个元素,比如如何

回到'(1 0)。它是某种“地图”功能,还是完全不同的东西?我以为最后一行会处理列表的其余部分,但事实并非如此。

0 投票
1 回答
1765 浏览

python - Python:frozensets 比较

考虑以下脚本:

神秘的输出是

这些 if-else 条件检查两种情况 a) i <= singleFrozenset 和 b) len(i) == 1。第二个条件很简单;但是,我无法弄清楚匹配的案例是 1、4、6 和 7 的第一个条件。在这些案例中,我找不到这些冻结集之间的链接!知道为什么吗?

0 投票
2 回答
64 浏览

c# - 将双向关系表划分为不同的组

我正在开发一个应用程序,用户可以在其中将“组件”标记为工作流程的一部分。在许多情况下,它们最终会带有几个彼此同义的标签。他们希望将这些标签组合在一起,以便在将一个标签添加到组件时,也可以添加组中的其余标签。

我决定将标签组分解为组中每对标签之间的双向关系。因此,如果一个组具有标签 1 和 2,则记录如下所示:

基本上,一个组被表示为其中每个标签的笛卡尔积。将其扩展到 3 个标签:

我们的关系是这样的:

我有几种方法可以将它们组合在一起,但它们并不出色。首先,我编写了一个视图,列出了每个标签及其组中的标签列表:

这样做的问题是,每个组在结果中出现的次数与其中的标签一样多,我无法想出在单个查询中解决的方法。所以它给了我:

然后在我的后端,我丢弃所有包含另一个组中出现的密钥的组。标签没有被添加到多个组中,所以这很有效,但我不喜欢我拉下多少无关数据。

我想出的第二个解决方案是这个 LINQ 查询。用于对标签进行分组的键是组本身的列表。这可能比我最初想象的要糟糕得多。

我真的很讨厌按调用结果分组string.Join,但是当我尝试按键列表分组时,它没有正确分组,将每个标签单独放在一个组中。此外,它生成的 SQL 非常可怕。我不打算在这里粘贴它,但 LINQPad 显示它在我的测试数据库中生成了大约 12,000 行单独的 SELECT 语句(我们在 RelatedTags 中有 1562 个标签和 67 条记录)。

这些解决方案有效,但它们非常幼稚且效率低下。不过,我不知道还能去哪里。有任何想法吗?

0 投票
0 回答
1092 浏览

regex - 为什么是 {0^n1^n | n >=0} 一种非常规语言?

我试图理解为什么语言{0^n1^n | n >=0}不规则。

我知道 FSA 没有内存,因此无法跟踪 n 的值是多少,但是,如果机器能够为 0 生成足够的状态,为什么它不能为 1 生成足够的状态。

它只是失去了记忆n吗?

我希望有人可以向我解释这一点。

是不是0^n也很不规律?既然没有记忆n