笛卡尔乘积(所有的有序对组成的集合)

更新时间:2025-01-07 17:19:38 阅读: 评论:0

笛卡尔乘积(所有的有序对组成的集合)

笛卡尔乘积 (所有的有序对组成的集合) 次浏览 | 2022.08.25 14:34:59 更新 来源 :互联网 精选百科 本文由作者推荐 笛卡尔乘积所有的有序对组成的集合

在数学中,两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。A表示所有声母的集合,B表示所有韵母的集合,那么A和B的笛卡尔积就为所有可能的汉字全拼。

中文名

笛卡尔乘积

外文名

Cartesian product

表达式

A×B={(x,y)|x∈A∧y∈B}

提出者

笛卡尔

别称

直积

应用学科

数学

适用领域范围

运算

定义

设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.

笛卡尔积的符号化为:

A×B={(x,y)|x∈A∧y∈B}

例如,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,a),(2,b)}[1]

运算性质

1.对任意集合A,根据定义有

AxΦ=Φ,ΦxA=Φ

2.一般地说,笛卡尔积运算不满足交换律,即

AxB≠BxA(当A≠Φ∧B≠Φ∧A≠B时)

3.笛卡尔积运算不满足结合律,即

(AxB)xC≠Ax(BxC)(当A≠Φ∧B≠Φ∧C≠Φ时)

4.笛卡尔积运算对并和交运算满足分配律,即

Ax(B∪C)=(AxB)∪(AxC)

(B∪C)xA=(BxA)∪(CxA)

Ax(B∩C)=(AxB)∩(AxC)

(B∩C)xA=(BxA)∩(CxA)

相关案例

给出三个域:

D1=SUPERVISOR={张清玫,刘逸}

D2=SPECIALITY={计算机专业,信息专业}

D3=POSTGRADUATE={李勇,刘晨,王敏}

则D1,D2,D3的笛卡尔积为D:

D=D1×D2×D3=

{(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),

(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),

(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),

(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),

(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),

(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏)}

这样就把D1,D2,D3这三个集合中的每个元素加以对应组合,形成庞大的集合群。

本个例子中的D中就会有2X2X3个元素,如果一个集合有1000个元素,有这样3个集合,他们的笛卡尔积所组成的新集合会达到十亿个元素。假若某个集合是无限集,那么新的集合就将是有无限个元素。

程序代码C#源代码

using System;

using System.Collections;

using System.Collections.Generic;

using System.Text;

using System.Linq;

public class Descartes

{

public static void run(List>dimvalue,List result,int layer, string curstring)

{

if(layer<dimvalue.Count-1)

{

if (dimvalue[layer].Count==0)

run(dimvalue, result, layer+1, curstring);

el

{

for(int i =0; i < dimvalue[layer].Count; i++)

{

StringBuilder s1= new StringBuilder();

s1.Append(curstring);

s1.Append(dimvalue[layer][i]);

run(dimvalue, result, layer +1, s1.ToString());

}

}

}

el if(layer==dimvalue.Count-1)

{

if(dimvalue[layer].Count==0)result.Add(curstring);

el

{

for(int i = 0; i < dimvalue[layer].Count; i++)

{

result.Add(curstring+dimvalue[layer][i]);

}

}

}

}

}

程序使用说明

(1)将每个维度的集合的元素视为List,多个集合构成List> imvalue作为输入

(2)将多维笛卡尔乘积的结果放到List result之中作为输出

(3)int layer, string curstring只是两个中间过程的参数携带变量

(4)程序采用递归调用,起始调用示例如下:

List result=new List();

Descartes.run(dimvalue,result,0,"");

即可获得多维笛卡尔乘积的结果。

参考资料

本文发布于:2023-06-01 11:21:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/92/184011.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:笛卡尔乘积(所有的有序对组成的集合).doc

本文 PDF 下载地址:笛卡尔乘积(所有的有序对组成的集合).pdf

标签:笛卡尔   乘积
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|