标签: set-theory

设定理论数据结构

我来自一个功能相当的编程背景,我不习惯(高效)C++数据结构.我需要一个数据结构来保存多个元素,如图所示struct element.在集合中,字段id应该是唯一的.

我想执行像在集合论比较集时即例如非常快的设置比较{x1,x2,x3}{x4,x5}欲确定交集{x5}(或{x2}它们在这种情况下相等)和套.减去从其它组如例如{x1,x2,x3} \ {x5} = {x1,x3}.

在C++世界中是否存在......"集合理论"数据结构?

struct element {
int id;
float value;
};

struct element x1 = {1, 1.0};
struct element x2 = {2, 2.0};
struct element x3 = {3, 3.0};

struct element x4 = {3, 3.1};
struct element x5 = {2, 2.0};
Run Code Online (Sandbox Code Playgroud)

c++ set-theory data-structures

2
推荐指数
1
解决办法
1873
查看次数

在javascript数组中执行Set计算

我有2个数组让我们说:

A = [1,2,3,4,5] and B = [1,2,3,6,7]
Run Code Online (Sandbox Code Playgroud)

我想执行以下'设置计算':

C = (A ? B)
D = A - (A ? B)
E = B - (A ? B)
Run Code Online (Sandbox Code Playgroud)

实质上:

C = [1,2,3]
D = [4,5]
E = [6,7]
Run Code Online (Sandbox Code Playgroud)

有没有一种聪明的方法来做到这一点,或者我将不得不用循环和ifs交叉检查每个数组成员?我不能使用外部库(如math.js或w/e).

提前致谢.

javascript arrays union set-theory intersection

2
推荐指数
1
解决办法
734
查看次数

是否可以在 Ocaml 中实现罗素悖论?

我最近在朴素集合论中了解了罗素悖论,在考虑所有不属于其自身的集合的集合时,该集合似乎是其自身的成员,当且仅当它不是其自身的成员,这就产生了悖论。我想知道一个询问集合是否是其自身成员的函数是否可以用 Ocaml 这样的函数式语言来实现,因为罗素悖论本身没有明确的答案,如果是这样,希望有任何关于如何解决这个问题的提示问题。此外,我有兴趣了解这些数学悖论是否可以普遍实现。

ocaml functional-programming set-theory

2
推荐指数
1
解决办法
398
查看次数

是否有Swift一线从数组中删除元素(如果存在)并追加(如果不存在)的元素?

这是我遇到的很多东西。在Swift中有一种单行的好方法吗?

我可以为此编写一个扩展,但是我感觉好像有一种“显而易见的”高阶函数/集合理论技术正在被我所忽略。

if array.contains(element) {
    array.removeObject(object: element)
}
else {
    array.append(element)
}
Run Code Online (Sandbox Code Playgroud)

我认为解决方案本身并不一定会更好,这只是我每次必须编写此文件时都会考虑的事情。

set-theory higher-order-functions swift

1
推荐指数
1
解决办法
56
查看次数

如何在 python 中使用并集、交集和求反来简化集合表达式

是否有任何内置的 python 库可用于生成简化的集合表达式?

\n

例如,假设我们有一个集合表达式(A\xe2\x88\xa9B)U(A\xe2\x88\xa9C)。这可以简化为A\xe2\x88\xa9(BUC)

\n

同样(A\xe2\x88\xa9B)U(A\xe2\x88\xa9!B)可以简化为A

\n

我正在寻找在 python 中实现这个逻辑。我发现它sympy可以用来简化代数表达式,x**2 + 2*x + 1但我不确定它是否可以处理集合表达式。

\n

python set-theory sympy

1
推荐指数
1
解决办法
322
查看次数

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

我尝试从一组中释放元素,这些元素存在于Clojure中的不同序列中.但clojure.set/difference似乎没有像我期望的那样起作用.我的错误在哪里?

一些例子:

删除空序列

(difference #{3 2} '())
Run Code Online (Sandbox Code Playgroud)

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

删除一些元素

(difference #{3 2} '(3))
Run Code Online (Sandbox Code Playgroud)

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

删除集合中不存在的元素

(difference #{3 2} '(1))
Run Code Online (Sandbox Code Playgroud)

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

删除所有元素

(difference #{3 2} '(2 3))
Run Code Online (Sandbox Code Playgroud)

结果:( #{}如预期的那样)

删除更多存在的元素

(difference #{3 2} '(1 2 3))
Run Code Online (Sandbox Code Playgroud)

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

预期结果: #{}

所以看起来,clojure.set/difference当结果是空集并且要删除的元素集具有比原始集更高的基数时,函数失败.但问题是:为什么这不起作用?我希望这是一个合法的应用程序clojure.set/difference.

set-theory clojure set

0
推荐指数
1
解决办法
83
查看次数

在C++中n = {0,1,...,n-1}

自然数n的形式定义(在集合论中)如下:

  • 0是空集
  • 1 = {0}
  • n = {0,1,...,n-1}

我认为这会使一些C++代码更简单,如果我被允许这样做:

for (int n : 10)
    cout << n << endl;
Run Code Online (Sandbox Code Playgroud)

它打印的数字从0到9.

所以我尝试执行以下操作,但不编译:

#include <iostream>
#include <boost/iterator/counting_iterator.hpp>


    boost::counting_iterator<int> begin(int t)
    {
        return boost::counting_iterator<int>(0);
    }

    boost::counting_iterator<int> end(int t)
    {
        return boost::counting_iterator<int>(t);
    }



int main() 
{
    for (int t : 10)
        std::cout << t << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一目标的任何建议?我用clang ++得到以下错误:

main.cpp:22:20: error: invalid range expression of type 'int'; no viable 'begin' function available
        for (int t : 10)
                ^ ~~
Run Code Online (Sandbox Code Playgroud)

但我想我应该被允许这样做!:)

编辑:我知道如果我在for循环中添加"range"(或其他一些单词)这个词,我可以"伪造"它,但我想知道是否可以不使用它.

c++ set-theory c++14

0
推荐指数
1
解决办法
1103
查看次数

是0到1之间的实数集真的无限无限?

康托尔的可数无限和无数无限无限的集合

您可能知道并且您可能已经证明0到1之间的实数集是无穷无尽的.意味着我们无法映射不同自然数上的每个数字.

我得到了一种技术,通过该技术,我可以在不同的自然数上映射0到1之间的所有实数.技术很简单用1替换小数点并在该数字上映射原始数据使得10003上的地图0.0003和103上的0.03

通过使用这种技术,我们将能够在自然数上映射0到1之间的所有实数.所有这些自然数将从1开始,所以我们将有其他数字,其中没有数字将被映射为2或211或79所以这意味着一组自然数是格雷特然后实数在0和1之间.因此0到1之间的实数集是可数无限的.

什么是Ur意见?

math set-theory set infinite countable

-4
推荐指数
1
解决办法
1万
查看次数

罗素的悖论

设X是不包含自身的所有集合的集合.X是X的成员吗?

math paradox set-theory

-7
推荐指数
1
解决办法
1230
查看次数