精华内容
下载资源
问答
  • 主要介绍了PHP实现数组的笛卡尔积运算,结合实例形式分析了php数组的笛卡尔积运算相关实现与使用技巧,需要的朋友可以参考下
  • 笛卡尔积运算

    千次阅读 2020-09-23 17:29:03
    自己领悟吧。

     自己领悟吧。

    展开全文
  • JavaScript 笛卡尔积运算

    千次阅读 2019-07-15 00:07:00
    笛卡尔积的函数 ... * @param specs 二维数组,需要做笛卡尔积运算的数组 * @returns {Array} */ function multiCartesian(specs) { // 判断是否传递了参数,是否是空数组 if (!specs || specs.length =...

    笛卡尔积的函数

    /**
         * 二维数组的笛卡尔积
         * @param specs 二维数组,需要做笛卡尔积运算的数组
         * @returns {Array}
         */
        function multiCartesian(specs) {
            // 判断是否传递了参数,是否是空数组
            if (!specs || specs.length == 0) {
                return [];
            } else {
                return joinSpec([[]], specs, 0, specs.length - 1);
            }
    
            // prevProducts 和 specs 两个数组做笛卡尔积
            // i 是索引,表示原始数组遍历的位数
            // max 是原始数组最大的长度
            function joinSpec(prevProducts, specs, i, max) {
                var currentProducts = [], currentProduct, currentSpecs = specs[i];
                if (i > max) {
                    return prevProducts;
                }
                // 前面的数组 和 紧跟着后面的数组 做笛卡尔积
                prevProducts.forEach(function (prevProduct) {
                    currentSpecs.forEach(function (spec) {
                        currentProduct = prevProduct.slice(0);
                        currentProduct.push(spec);
                        currentProducts.push(currentProduct);
                    });
                });
                // 递归处理,前面笛卡尔积之后的结果作为前面的数组,然后循环往前推进1位
                return joinSpec(currentProducts, specs, ++i, max);
            }
        }
    
        var originArray = [[111,222,333],['aaa','bbb','ccc'],['*****','++++++']];
    
        console.dir(multiCartesian(originArray))
    

    结果

    [[111,"aaa","*****"],[111,"aaa","++++++"],[111,"bbb","*****"],
    [111,"bbb","++++++"],[111,"ccc","*****"],[111,"ccc","++++++"],
    [222,"aaa","*****"],[222,"aaa","++++++"],[222,"bbb","*****"],
    [222,"bbb","++++++"],[222,"ccc","*****"],[222,"ccc","++++++"],
    [333,"aaa","*****"],[333,"aaa","++++++"],[333,"bbb","*****"],
    [333,"bbb","++++++"],[333,"ccc","*****"],[333,"ccc","++++++"]]
    
    展开全文
  • sql 如何避免出现笛卡尔积运算

    万次阅读 2012-08-14 11:22:59
    如何避免出现笛卡尔积运算. 如何避免出现笛卡尔积运算.  两表关联的时候通过最小的粒度关联 SQL>create volatile MULTISET TABLE tb_test_01 ( statis_month number(6) ,area_code varchar2(5) ) ; ...

    如何避免出现笛卡尔积运算.

    如何避免出现笛卡尔积运算.
      两表关联的时候通过最小的粒度关联
    SQL>create volatile MULTISET TABLE   tb_test_01
    (
    statis_month number(6)
    ,area_code varchar2(5)
    )
    ;
    insert into tb_test_01 values(200902,'A2101');
    insert into tb_test_01 values(200902,'A2102');


    SQL>create volatile MULTISET TABLE   tb_test_02
    (
    statis_month number(6)
    ,area_code varchar2(5)
    )
    ;
    insert into tb_test_02 values(200902,'A2101');
    insert into tb_test_02 values(200902,'A2102');
     
    测试1:表tb_test_01和tb_test_02的最小粒度是area_code,这里我们使用statis_month关联两表
    看出来的记录数是多少.
    select a.statis_month,a.area_code
    from tb_test_01 a
    inner join tb_test_02 b
    on a.statis_month = b.statis_month
    ;
    200902 A2101
    200902 A2102
    200902 A2101
    200902 A2102
    这里输出的记录数是2(表tb_test_01的两条记录) X 2(表tb_test_2的两条记录) = 4,产生了笛卡尔积运算,显然这不是我们想要的结果.

    测试2:通过最小粒度area_code关联

    select a.statis_month,a.area_code
    from tb_test_01 a
    inner join tb_test_02 b
    on a.area_code = b.area_code
    ;
    STATIS_MONTH AREA_CODE
    ------------ ---------
    200902 A2101
    200902 A2102
    这里通过最小的粒度关联,达到我们想要的结果.
    总结:在实际应用过程中通过关联表的最小粒度关联,可以避免产生笛卡尔积.这里的最小粒度可以理解为表中的唯一性约束的字段值.

     

    展开全文
  • 传统的集合运算(并,差,交和笛卡尔积运算) (1)并 关系R和关系S的所有元组合并,再删去重复的元组,组成一个新的关系,记为RUS,例子如下 (2)差 由属于关系R而不属于关系S的所有元组组成的集合,即关系R中删去...

    传统的集合运算(并,差,交和笛卡尔积运算)

    (1)并
    关系R和关系S的所有元组合并,再删去重复的元组,组成一个新的关系,记为RUS,例子如下
    (2)差
    由属于关系R而不属于关系S的所有元组组成的集合,即关系R中删去与关系S相同的元组,组成一个新的关系,记为R-S,例子如下
    (3)交
    由既属于关系R又属于关系S的元组组成得集合,组成一个新的关系,记为R∩S

    前面三种要求关系的属性个数要相同

    (4)笛卡尔积
    两个分别为n目和m目的关系R和关系S的笛卡尔积是一个(m+n)列的元组的集合,元组的前n列是关系R的一个元组,厚m列是S的元组,如果R有K个元组,S有j个元组,则他们的笛卡尔积有K*J个元组,详情请看下面例子

    在这里插入图片描述

    展开全文
  • 数据库笛卡尔积运算

    千次阅读 2014-08-05 20:20:00
    笛卡尔积老是忘记怎么运算,R*S 即R的每一行和S的每一行连接。 转载于:https://www.cnblogs.com/starxingyun/p/3893092.html
  • * 笛卡尔积生成规格 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @datetime 2019-09-22T00:33:48+0800 * @desc description * @param {[array]} arr1 [要进行笛卡尔积的二维数组] * @param {[array...
  • 笛卡尔积运算 笛卡尔积运算就是把两个集合中的元素重组一个大的一一对应的集合。 例如,A={a,b}, B={0,1,2},则 A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)} B×A={(0, a), (0, b), (1, a), (1, b), (2...
  • 笛卡尔积运算: function[D]=cartesian_product(A,B) [m1,n1]=size(A); [m2,n2]=size(B); if m1m21 C=A’; for i=1:n1 for j=1:n2 if C(i,1)<B(1,j) D(i,j)= C(i,1); else D(i,j)= B(1,j); end end end else ...
  • 分组原理(GROUP BY子句)5:分组集的笛卡尔积及其他运算 若觉得本文写得还可以,请多多...1、分组集是分组的集合,在SQL Server中,支持对分组集的笛卡尔积运算,比如,集合A的属性集为(a1, a2, a3),集合B的属性集...
  • 主要介绍了PHP基于自定义函数生成笛卡尔积的方法,结合具体实例形式分析了php使用数组运算模拟集合实现笛卡尔积运算的相关操作技巧,需要的朋友可以参考下
  • 正文如下: 各种运算符如下: ...数据库的传统集合运算包括:并、差、交、笛卡尔积运算。这四种运算都与数学上的同名运算概念相似。 并: 差: 交: 笛卡尔积: 广义笛卡尔积(Extended Cartes...
  • 主要介绍了Python2.7基于笛卡尔积算法实现N个数组的排列组合运算,涉及Python笛卡尔积算法及排列组合操作相关实现技巧,需要的朋友可以参考下
  • 这篇文章主要介绍了PHP基于自定义函数生成笛卡尔积的方法,结合具体实例形式分析了php使用数组运算模拟集合实现笛卡尔积运算的相关操作技巧,需要的朋友可以参考下本文实例讲述了PHP基于自定义函数生成笛卡尔积的方法...
  • 关系数据库 一、关系数据结构及形式化定义 1.关系 单一的数据结构----关系 现实世界的实体以及实体间的...1.2 笛卡尔积(Cartesian Product) 笛卡尔积: 给定一组域D1,D2,…,Dn,允许其中某些域是相同的。 D1,D
  • 本文实例讲述了Java笛卡尔积算法原理与实现方法。分享给大家供大家参考,具体如下:笛卡尔积算法的Java实现:(1)循环内,每次只有一列向下移一个单元格,就是CounterIndex指向的那列。(2)如果该列到尾部了,则这列...
  • 笛卡尔积 笛卡尔积之后 列数:R列数+S列数 行数:R列数×S列数 投影 主要从列的角度进行运算。 投影之后不仅取消了原关系中某些列,也可能取消某些元组(元组就是行,目的是为了避免重复行)。 选择 图片中,式...
  • 笛卡尔积

    千次阅读 2018-11-22 23:47:19
    对于两个集合定义一种乘积运算结果,就是集合的笛卡尔积
  • 笛卡尔积图解

    万次阅读 2018-09-14 15:50:11
    所谓笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合.  MySQL的多表查询(笛卡尔积原理) 先确定数据要用到哪些表。 将多个表先通过笛卡尔积变成一个表。 然后去除不符合逻辑的数据...
  • php实现笛卡尔积

    2018-10-19 22:48:26
    关于笛卡尔积的相关概念与运算规则可以参考百度百科笛卡尔积 可用于商品规格的设计当中,如下便列出代码: &lt;?php /** * 生成笛卡尔积的工具类 * Class Dika */ class Dika { /** * 多个数组的笛卡尔...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,307
精华内容 6,122
关键字:

笛卡尔积运算