精华内容
下载资源
问答
  • 写一个程序,用于验证集合的包含关系
  • 本程序用于离散数学中验证集合的包含关系运算。。。
  • 论文研究-DEA模型中生产可能性集合的包含关系.pdf, 研究了生产可能性集合的公理性假设对生产可能性集合包含关系的影响 ,证明了满足不同公理性假设的生产可能性集合之间...
  • 包含关系:A⊆B包含关系:A\subseteq B包含关系:A⊆B 方法1:定义:任取x∈A,再演绎地证出x∈B成立方法1:定义:任取x\in A,再演绎地证出x\in B成立方法1:定义:任取x∈A,再演绎地证出x∈B成立 方法2:传递性:...

    AB包含关系:A\subseteq B
    1xA,xB方法1:定义:任取x\in A,再演绎地证出x\in B成立
    2TAT,TB方法2:传递性:找到集合T,A \subseteq T,T \subseteq B
    3AB=BAB=AAB=Φ方法3:等价定义:A \cup B=B 或 A\cap B=A 或 A-B=Φ
    A=B相等关系:A=B
    1ABBA方法1:A\subseteq B且B\subseteq A

    展开全文
  • p{ font-family:Verdana, "Times New Roman", Times...#1 每行数据代表一个集合,如何判断集合的包含关系? -- 集合的数据仅在有限范围内。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 a --24...

    #1 每行数据代表一个集合,如何判断集合的包含关系? -- 集合的数据仅在有限范围内。

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23       a --24个元素
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24     b --24个元素

    最容易想到的是蛮力运算,计算前还应该知道谁元素多,对吧?不过还好,我耍了个花招,在读取数据时已经把数组元素数目存入数组第0号元素。

    1 for each element x in a
    2     if (!setContain(b , x))
    3        return false;
    4 
    5 return true;    

    #2 数据在31以内,考虑用无符号数编码数组
    例如 1 2 3 4 用 0x00000000 00000000 00000000 00001111编码,也就是1用第一个bit,2用第二个bit,依此类推...
    但是数据里面有0,也好说,0用第一个bit,1用第二个bit,依此类推...
    这样1 2 3 4 最终形式 0x00000000 00000000 00000000 00011110
    这么一来要判断要简单多了,只需要

    1 unsigned src //代表较多元素数组的编码
    2 unsigned dst //代表较少元素数组的编码
    3 if (src & dst == dst)
    4     return true;
    5 
    6 return false;

    但是且慢,如何将1 2 3 4等元素存入 src 之类变量?
    So, 手工加工的 table登场

     1     unsigned int table[32] = {
     2         0x000000010x000000020x000000040x00000008
     3         0x000000100x000000200x000000400x00000080,
     4         0x000001000x000002000x000004000x00000800
     5         0x000010000x000020000x000040000x00008000,
     6         0x000100000x000200000x000400000x00080000,
     7         0x001000000x002000000x004000000x00800000,
     8         0x010000000x020000000x040000000x08000000,
     9         0x100000000x200000000x400000000x80000000
    10     };

    只需要每数组扫描一遍即可实现目标。

    1 src = 0;
    2
    3 for each element x in a
    4     src = src + table[x];

    问题基本解决。

    #3 考虑如下数组:如何扩展至64位

    25 26 27 28 29 30 31 32 33 34 35 36 37 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
    26 27 28 29 30 31 32 33 34 35 36 37 38 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

    可按下图来考虑

    number      bit
    0           1
    .           .
    .           .
    .           .
    31          32


    32 -- 0     1
    .           .
    .           .
    .           .
    63 -- 31    32

    再构造数组

    1 int cache = {032};
    2 unsigned int cacheManager[2][2];
    3 //用二维数组维护两个数组的编码,每行编码一数组

    方法如下,分别以16  , 63为例

    运算 (16 & 0x00000020) >> 5 得出  0,  然后 16 - cache[0] 得出 16,   16 存入cacheManager[?][ 0 ]

    运算 (63 & 0x00000020) >> 5 得出  1,  然后 63 - cache[1] 得出 31,    31存入cacheManager[?][ 1 ]

    #4 实际代码,利用此方法,程序运行时间缩短到原来1/3.

     1 int fillCacheManager(normalInt * index, Element (* dt)[ElementNumber], unsigned int (*cm)[cacheLine], unsigned int * table){
     2     int element;
     3     int cache[2] = {0 , 32};
     4     int serial;
     5 
     6     for( normalInt m=1; m<=index[0]; m++ ){
     7         normalInt t = index[m];
     8         cm[t][0] = 0;
     9         cm[t][1] = 0;
    10         for ( normalInt n=1; n<=dt[t][0]; n++  ){
    11             element = dt[t][n];
    12             serial = (element & 0x00000020) >>5;
    13             element = element - cache[serial];
    14             cm[t][serial] = cm[t][serial] + table[element] ;
    15         }
    16     }
    17 
    18     return 0;
    19 }
    20 
    21 
    22 int quickTableReducton(normalInt * index, Element (* dt)[ElementNumber], unsigned int (*cm)[cacheLine]){
    23     normalInt subset = index[0];
    24     if (subset == 0return -1;
    25     
    26     for (normalInt m=1; m<subset; m++ ){
    27         if (index[m] < 0continue;
    28         
    29         for(normalInt n=m+1; n<subset+1; n++){
    30             if(index[n] < 0continue;
    31             if(n == m) continue;
    32 
    33             normalInt src = index[m];
    34             normalInt dst = index[n];
    35             normalInt QQ = dst;
    36             bool swaped = false;
    37             if (dt[src][0] < dt[dst][0]){
    38                 swaped = true;
    39                 QQ = src;
    40             }
    41 
    42             if (  (cm[src][0] & cm[dst][0]) == cm[QQ][0]    &&   (cm[src][1] & cm[dst][1]) == cm[QQ][1]  ){
    43                 int t = m;
    44                 if (swaped) t = n;
    45                 index[t] = -2
    46                 index[0] = index[0]-1;
    47                 if (swaped == falsebreak;            
    48             }
    49         }
    50     }
    51 
    52     normalInt idx[indexCount];//indexOver
    53     normalInt len=1;
    54     for (normalInt m=1; index[m]!=indexOver; m++)//m<=index[0]
    55         if (index[m] > -1){
    56             idx[len] = index[m];
    57             len++;
    58         }
    59 
    60     for (normalInt m=1; m<len; m++) index[m] = idx[m];
    61     index[len] = indexOver;
    62 
    63     return 0;
    64 }

    #5 STL bitset : better choice?

    转载于:https://www.cnblogs.com/servo/archive/2012/10/05/2712577.html

    展开全文
  • 集合包含关系的快速算法 - simcity - 博客园 集合包含关系的快速算法 2012-10-05 22:18 by simcity, 751 阅读, 0 评论, 收藏, 编辑 #1 每行数据代表一个集合,如何判断集合的包含关系? -- 集合的数据仅在有限...

    集合包含关系的快速算法 - simcity - 博客园

        集合包含关系的快速算法
        2012-10-05 22:18 by simcity, 751 阅读, 0 评论, 收藏, 编辑

        #1 每行数据代表一个集合,如何判断集合的包含关系? -- 集合的数据仅在有限范围内。

        0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23       a --24个元素
        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24     b --24个元素

        最容易想到的是蛮力运算,计算前还应该知道谁元素多,对吧?不过还好,我耍了个花招,在读取数据时已经把数组元素数目存入数组第0号元素。
        1 for each element x in a
        2     if (!setContain(b , x))
        3        return false;
        4
        5 return true;   

        #2 数据在31以内,考虑用无符号数编码数组
        例如 1 2 3 4 用 0x00000000 00000000 00000000 00001111编码,也就是1用第一个bit,2用第二个bit,依此类推...
        但是数据里面有0,也好说,0用第一个bit,1用第二个bit,依此类推...
        这样1 2 3 4 最终形式 0x00000000 00000000 00000000 00011110
        这么一来要判断要简单多了,只需要
        复制代码
        1 unsigned src //代表较多元素数组的编码
        2 unsigned dst //代表较少元素数组的编码
        3 if (src & dst == dst)
        4     return true;
        5
        6 return false;
        复制代码

        但是且慢,如何将1 2 3 4等元素存入 src 之类变量?
        So, 手工加工的 table登场
        复制代码
         1     unsigned int table[32] = {
         2         0x00000001, 0x00000002, 0x00000004, 0x00000008,
         3         0x00000010, 0x00000020, 0x00000040, 0x00000080,
         4         0x00000100, 0x00000200, 0x00000400, 0x00000800,
         5         0x00001000, 0x00002000, 0x00004000, 0x00008000,
         6         0x00010000, 0x00020000, 0x00040000, 0x00080000,
         7         0x00100000, 0x00200000, 0x00400000, 0x00800000,
         8         0x01000000, 0x02000000, 0x04000000, 0x08000000,
         9         0x10000000, 0x20000000, 0x40000000, 0x80000000
        10     };
        复制代码

        只需要每数组扫描一遍即可实现目标。
        1 src = 0;
        2
        3 for each element x in a
        4     src = src + table[x];

        问题基本解决。

        #3 考虑如下数组:如何扩展至64位

        25 26 27 28 29 30 31 32 33 34 35 36 37 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        26 27 28 29 30 31 32 33 34 35 36 37 38 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

        可按下图来考虑
        复制代码
        number      bit
        0           1
        .           .
        .           .
        .           .
        31          32


        32 -- 0     1
        .           .
        .           .
        .           .
        63 -- 31    32
        复制代码

        再构造数组
        1 int cache = {0, 32};
        2 unsigned int cacheManager[2][2];
        3 //用二维数组维护两个数组的编码,每行编码一数组

        方法如下,分别以16  , 63为例

        运算 (16 & 0x00000020) >> 5 得出  0,  然后 16 - cache[0] 得出 16,   16 存入cacheManager[?][ 0 ]

        运算 (63 & 0x00000020) >> 5 得出  1,  然后 63 - cache[1] 得出 31,    31存入cacheManager[?][ 1 ]

        #4 实际代码,利用此方法,程序运行时间缩短到原来1/3.
        复制代码
         1 int fillCacheManager(normalInt * index, Element (* dt)[ElementNumber], unsigned int (*cm)[cacheLine], unsigned int * table){
         2     int element;
         3     int cache[2] = {0 , 32};
         4     int serial;
         5
         6     for( normalInt m=1; m<=index[0]; m++ ){
         7         normalInt t = index[m];
         8         cm[t][0] = 0;
         9         cm[t][1] = 0;
        10         for ( normalInt n=1; n<=dt[t][0]; n++  ){
        11             element = dt[t][n];
        12             serial = (element & 0x00000020) >>5;
        13             element = element - cache[serial];
        14             cm[t][serial] = cm[t][serial] + table[element] ;
        15         }
        16     }
        17
        18     return 0;
        19 }
        20
        21
        22 int quickTableReducton(normalInt * index, Element (* dt)[ElementNumber], unsigned int (*cm)[cacheLine]){
        23     normalInt subset = index[0];
        24     if (subset == 0) return -1;
        25    
        26     for (normalInt m=1; m<subset; m++ ){
        27         if (index[m] < 0) continue;
        28        
        29         for(normalInt n=m+1; n<subset+1; n++){
        30             if(index[n] < 0) continue;
        31             if(n == m) continue;
        32
        33             normalInt src = index[m];
        34             normalInt dst = index[n];
        35             normalInt QQ = dst;
        36             bool swaped = false;
        37             if (dt[src][0] < dt[dst][0]){
        38                 swaped = true;
        39                 QQ = src;
        40             }
        41
        42             if (  (cm[src][0] & cm[dst][0]) == cm[QQ][0]    &&   (cm[src][1] & cm[dst][1]) == cm[QQ][1]  ){
        43                 int t = m;
        44                 if (swaped) t = n;
        45                 index[t] = -2;
        46                 index[0] = index[0]-1;
        47                 if (swaped == false) break;           
        48             }
        49         }
        50     }
        51
        52     normalInt idx[indexCount];//indexOver
        53     normalInt len=1;
        54     for (normalInt m=1; index[m]!=indexOver; m++)//m<=index[0]
        55         if (index[m] > -1){
        56             idx[len] = index[m];
        57             len++;
        58         }
        59
        60     for (normalInt m=1; m<len; m++) index[m] = idx[m];
        61     index[len] = indexOver;
        62
        63     return 0;
        64 }
        复制代码

        #5 STL bitset : better choice?
        分类: C/C++

    展开全文
  • 证明集合包含关系的5种方法

    千次阅读 2018-11-21 13:02:21
    ##证明集合包含关系的几种方法 #若证明 A⊆\subseteq⊆B,则 用定义 ∀\forall∀ x∈\in∈A,经过演绎推出 x∈\in∈B即可。 集合传递性 利用条件推出 A⊆\subseteq⊆T, T⊆\subseteq⊆B,利用传递性。 利用 若 ...

    证明集合包含关系的几种方法

    若证明 A\subseteqB,则

    1. 用定义
      \forall x\inA,经过演绎推出 x\inB即可。

    2. 集合传递性
      利用条件推出 A\subseteqT, T\subseteqB,利用传递性。

    3. 利用 若 A\cupB=B,A\capB=A,则A\subseteqB
      利用已知条件和集合的交,并,差,环和等运算证明

    4. 留空

    5. 利用反正法
      若 A\subsetneqB,经过演绎推出和已经条件矛盾

    展开全文
  • 问题场景: 有两个RDD数据集A和B以及一组关于这两个RDD数据映射关系,如下图所示: ...现要求映射对,使得在该映射关系下,B集合可以覆盖A值几何元素。如上结果应该为:(b, d)。因为A中以b为键...
  • 为什么80%码农都做不了架构师?>>> ...
  • 从list中求出一个集合, 里面元素彼此没有包含关系(去掉被包含) 比如上面元素123包含1, 那么取123; 123456包含123, 取123456 最后要的集合肯定只有两个元素, 就是123456和124 方案一: 思路: 迭代器拿到每一个...
  • 1: ...集合框架:是为了表示和操作集合而统一规定的一种统一的标准体系结构。... 包含三大块的内容:对外的接口、接口的是实现和对集合... ●接口:表示集合的抽象数据类型,在图1中用虚线框表示,下图绿色的:...
  • D. Pave the Parallelepiped题意:给定三个数A,B,C(1e5),这三个数分别选一个因数,a,b,c....并利用几何编号的关系判断集合的包含关系.#include&lt;bits/stdc++.h&gt; #define PI acos(-1....
  • 本文首先在中介公理集合论系统MS中构造出Peano自然数系统,以此为基础重新定义了MS中良集概念,证明了新定义良集满足经典公理集合论系统ZFC-(ZFC中去掉正则公理的集合论系统)全部公理,从而说明经典公理集合论...
  • 集合基本关系 观察以下几组集合,并指出它们元素间多的关系: A={1,2,3} , B={1,2,3,4,5} ; 很显然 A集合包含于B集合 A={x|x>1} , B={x|x>0} ; 由图可以看出 A集合包含于B集合 子集: ...
  • 注:要证明(P(X),⊆)是一个格,首先要证明(P(X),⊆)是一个偏序集poset,再证明(P(X),⊆)中任意两个子集都有最小上边界least upper bound和最大下边界greatest lower bound 关于A,B两个集合的最小上边界和最大下边界...
  • 字符串集合中相互包含关系算法

    千次阅读 2018-03-05 12:24:10
    字符串集合中相互包含关系算法 先介绍下使用场景,源文件是一个excel表格,要根据某一列值生成正则表达式,为保证正则表达式准确性,被包含数据肯定是不能直接生成正则表达式,例如,产科和妇产科,如果...
  • C#中判断list集合中元素的包含关系

    千次阅读 2018-01-06 14:37:19
    两个集合如下所示: string[] bigArr = new string[] { "a", "b", "c" };...//在大集合的基础上,根据小集合获取大集合的差集 var exceptArr = bigArr.Except(smallArr); //判断是否是子集 if(excep
  • 1. 空集 2. 全集 ...5. 集合的包含关系(子集和真子集) 6. 集合相等的定理(两个集合相等等价与两者相互包含) 7. n元集的子集的个数为2的n次幂 8. 集合的幂集 ...
  • //集合中有包含关系的字符串去重 public static List<String> dinstinct(List<String> words) { List<String> result = new ArrayList(); // 将集合安装字符串长度升序排序 StepComparator stepComparator = ...
  • 你需要判断这两个集合的关系:相等,包含,没有交集还是其他。 若真包含于,输出AisapropersubsetofB; 3123 输入 输出 你需要对两个集合的关系作出判断: ,集合中整数...
  • Swift APNS for Docker 是Docker一个集合包含在Swift中构建Apple Push Provider所需所有依赖关系
  • select 1 where 1 in (1, null) -- true select 1 where 1 in (2, null) -- false select 1 where 1 not in (1, ...select 1 where 1 not in (2, null) -- false其中最不好理解是第4句, 1 not in (2, null) 不...
  • item是个集合,装是ITEM对象。 数据都放在ITEM对象里面 服务端接收XML格式: <ITEM></ITEM> <ITEM></ITEM> <ITEM></ITEM> 5. 而其实服务端想要格式为 <ITEM></ITEM> <ITEM></ITEM> <ITEM></...
  • 图算法中,给定任意个数节点node{n1,n2...}和关系relation{r1,r2,...},要求去图中查询包含节点和关系的路径,查询包含node和relation最多路径并返回
  • 常用集合之间的关系

    2018-08-07 10:26:00
    常用集合之间的关系: 1:list子类 :list集合包含重复元素,并且有序(存储顺序和取出顺序一致); ArrayList: 底层是数组,线程不安全,查询快,增删慢,效率高; vector: 底层是数组,线程安全,查询快,...
  • ####1005 继续(3n+1)猜想 (25 分)——List集合,数组运用,包含关系的处理 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想时候,为了避免重复计算,可以...
  • 集合及二元关系关系的n次幂

    千次阅读 2018-10-05 15:28:05
    集合:具有共同性质的或合适一定条件的事物的全体,组成集合的这些个体成为元素。 集合之间常见的关系包含(⊆),真包含(⊂),相等(=)。 笛卡尔积:设A,B为集合,以A中元素为第一元素,B中元素为第二元素...
  • word2007集合运算符包含显示

    千次阅读 2017-07-20 10:45:39
    插入->公式->插入新公式->符号->运算符->常用关系运算符->包含

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,177
精华内容 2,070
关键字:

集合的包含关系