笛卡尔积请具体解释一下.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笛卡尔积请具体解释一下.相关的知识,希望对你有一定的参考价值。

本人学文,现自学数据库,如题,看到这儿不明白,请哪位仁兄指点一下.
D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}其中每一个元素(d1,d2,....dn)叫做一个n元组或简称元组.元素中的每个值di(i=1,2,....n)叫做一个分量,
请举例说明什么啥是元组,啥是分量.谢谢.

参考技术A 数据库中的数据都是以二维表的形式存放的,元组就是表格的行,分量就是其中的每个字段,字段就是这一行的 每一的小的标题.笛卡儿积就是把两个表中的不同的行相乘,笛卡儿积的结果的表格的行数就是两个相乘的表格的的行数的乘积,分量的数目就是两个表格的分量数目相加.
比如 1 2 3 3 6 2
1 5 9 和 0 3 1相乘
4 8 3 3 6 1
则结果就是 1 2 3 3 6 2
1 2 3 0 3 1
1 2 3 3 6 1
1 5 9 3 6 2
1 5 9 0 3 1
1 5 9 3 6 1
4 8 3 3 6 2
4 8 3 0 3 1
4 8 3 3 6 1
就是这样,我说的很浅显,希望能帮上你。
参考技术B 说白了,就是一个集合里的每一个元素和另一个集合的每一个元素“交配”一下的结果。哈哈
例如集合A1=1,2,3,集合A2=4,5,6
A1*A2(*表示笛卡尔集合)=(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(2,4),(3,5),(3,6)
如果还有A3=(7,8)
那么A1*A2*A3=((1,4),7)。。。。
注意(1,4)是A1*A2的元素,再和A3的元素7结合起来的,因此要((1,4),7)
参考技术C 名称定义
假设集合A=a,b,集合B=0,1,2,则两个集合的笛卡尔积为(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

笛卡儿积的运算性质
由于有序对<x,y>中x,y的位置是确定的,因此A×B的记法也是确定的,不能写成B×A.
笛卡儿积也可以多个集合合成,A1×A2×…×An.
笛卡儿积的运算性质. 一般不能交换.
笛卡儿积,把集合A,B合成集合A×B,规定
A×B=<x,y>½xÎAÙyÎB

推导过程
给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}
所有域的所有取值的一个组合不能重复
例 给出三个域:
D1=SUPERVISOR = 张清玫,刘逸
D2=SPECIALITY=计算机专业,信息专业
D3=POSTGRADUATE=李勇,刘晨,王敏
则D1,D2,D3的笛卡尔积为D:
D=D1×D2×D3 =

{(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }

这样就把D1,D2,D3这三个集合中的每个元素加以对应组合,形成庞大的集合群。
本个例子中的D中就会有2X2X3个元素,如果一个集合有1000个元素,有这样3个集合,他们的笛卡尔积所组成的新集合会达到十亿个元素。假若某个集合是无限集,那么新的集合就将是有无限个元素。

序偶与笛卡尔积
在日常生活中,有许多事物是成对出现的,而且这种成对出现的事物,具有一定的顺序。例如,上,下;左,右;3〈4;张华高于李明;中国地处亚洲;平面上点的坐标等。一般地说,两个具有固定次序的客体组成一个序偶,它常常表达两个客体之间的关系。记作〈x,y〉。上述各例可分别表示为〈上,下〉;〈左,右〉;〈3,4〉;〈张华,李明〉;〈中国,亚洲〉;〈a,b〉等。
序偶可以看作是具有两个元素的集合。但它与一般集合不同的是序偶具有确定的次序。在集合中a,b=b,a,但对序偶〈a,b〉≠〈b,a〉。
设x,y为任意对象,称集合{{x},{x,y}}为二元有序组,或序偶(ordered pairs),简记为<x,y> 。称x为<x,y>的第一分量,称y为第二分量。
定义3-4.1 对任意序偶<a,b> , <c, d > ,<a,b> = <c, d > 当且仅当a=c且b = d 。
递归定义n元序组 <a1,… , an>
<a1,a2> ={{a1},{a1 , a2}}
<a1 , a2 , a3 > = { {a1 , a2},{a1 , a2 , a3}}
= < <a1 , a2 > , a3 >
<a1,…an> = <<a1,…an-1>, an>
两个n元序组相等
< a1,…an >= < b1,…bn >Û(a1=b1) ∧ …∧ (an=bn)
定义3-4.2 对任意集合 A1,A2 , …,An,

(1)A1×A2,称为集合A1,A2的笛卡尔积(Cartesian product),定义为
A1 ×A2={x | $u $v(x = <u,v>∧u ÎA1∧vÎA2)}={<u,v> | u ÎA1∧vÎA2}

(2)递归地定义 A1 × A2× … × An
A1 × A2×… × An= (A1× A2 × …× An-1)×An
例题1 若A=α,β,B=1,2,3,求A×B,A×A,B×B以及(A×B)Ç(B×A)。
解 A×B=〈α,1〉,〈α,2〉,〈α,3〉,〈β,1〉,〈β,2〉,<β,3〉
B×A=〈1,α〉,〈1,β〉,〈2,α〉,〈2,β〉,〈3,α〉,〈3,β〉
A×A=〈α,α〉,〈α,β〉,〈β,α〉,〈β,β〉
B×B=〈1,1〉,〈1,2〉,〈1,3〉,〈2,1〉,〈2,2〉,〈2,3〉,〈3,1〉,〈3,2〉,〈3,3〉
(A×B)Ç(B×A)=Æ
由例题1可以看到(A×B)Ç(B×A)=Æ
我们约定若A=Æ或B=Æ,则A×B=Æ。
由笛卡尔定义可知:
(A×B)×C=〈〈a,b〉,c〉|(〈a,b〉∈A×B)∧(c∈C)
=〈a,b,c〉|(a∈A)∧(b∈B)∧(c∈C)
A×(B×C)=〈a,〈b,c〉〉|(a∈A)∧(〈b,c〉∈B×C)
由于〈a,〈b,c〉〉不是三元组,所以
(A×B)×C ≠A×(B×C)
定理3-4.1 设A, B, C为任意集合,*表示 È,Ç或 – 运算,那么有如下结论:
笛卡尔积对于并、交差运算可左分配。即:
A×(B*C)=(A×B)*(A×C)

笛卡尔积对于并、交差运算可右分配。即:
(B*C) ×A=(B×A)*(C×A)

¤ 当*表示 È时,结论(1)的证明思路:(讨论叙述法)
先证明A×(B È C)Í(A×B) È (A×C) 从<x,y>∈A×(BÈC)出发,推出<x,y>∈(A ×B) È (A×C)
再证明(A×B) È (A×C) Í A×(B È C)
从<x,y>∈(A×B) È (A×C)出发,推出<x,y>∈A×(BÈC)
当*表示 È时,结论(2)的证明思路:(谓词演算法) 见P-103页。¤
定理3-4.2 设A, B, C为任意集合,若C ≠ F,那么有如下结论:
AÍBÛ(A×C ÍB×C) Û (C×AÍC×B) ¤

定理前半部分证明思路 :(谓词演算法)
先证明AÍB Þ (A×CÍB×C)
以AÍB 为条件,从<x,y>∈A×C出发,推出<x,y>∈B×C
得出(A×CÍB×C)结论。
再证明(A×C ÍB×C) Þ AÍB
以C≠F为条件,从x∈A出发,对于y∈C,利用Þ附加式,推出x∈B
得出(AÍB)结论。 见P-103页。 ¤
定理3-4.3 设A, B, C, D为任意四个非空集合,那么有如下结论:
A×B Í C×D的充分必要条件是AÍ C,BÍ D

¤证明思路:(谓词演算法)
先证明充分性: A×B Í C×D Þ AÍ C,BÍ D
对于任意的x∈A、y∈B,从<x,y>∈A×B出发,利用条件A×BÍ C×D, <x,y>∈C×D,推出x∈C, y∈D。
再证明必要性: AÍ C,BÍ D ÞA×BÍ C×D
对于任意的x∈A、y∈B,从<x,y>∈A×B出发,推出<x,y>∈C×D。

笛卡尔(Descartes)乘积又叫直积。设A、B是任意两个集合,在集合A中任意取一个元素x,在集合B中任意取一个元素y,组成一个有序对(x,y),把这样的有序对作为新的元素,他们的全体组成的集合称为集合A和集合B的直积,记为A×B,即A×B=(x,y)|x∈A且y∈B。

参考资料:http://baike.baidu.com/view/79382.htm

本回答被提问者采纳
参考技术D 百度,百科,这样的概念问题去那里找

ContextMenu的使用具体解释

二话不说,先上图:

技术分享

能够非常easy看到这是一个类似于Dialog悬浮在活动上的控件,它是由被注冊的view长按所触发的。

当然啦,也有其它的实现方式,这里就先介绍一下系统的ContextMenu:(先剧透一下,使用方式和Menu是一样的)

Step1:

this.registerForContextMenu(listView);
在onCreate里为listView注冊ContextMenu。

Step2:

覆写onCreateContextMenu来初始化。这里被打上凝视的是动态载入menuItem,静态载入和OptionsMenu是一样的

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);//上下文菜单的呼出每一次都会被调用
       /* menu.setHeaderTitle("文件操作");
        menu.add(0, 1, Menu.NONE, "发送");//第一个是组别。第二个是数字是该组里的条目序号
        menu.add(0, 2,Menu.NONE, "删除");*///静态加入菜单项
        getMenuInflater().inflate(R.menu.menu_main, menu);//资源id易于管理,google推荐
    }

Step3:

覆写onContextItemSelected,监听菜单点击事件

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        //获取到的是listView里的条目信息
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

        switch (item.getItemId()) {
            case R.id.mi1:
                Toast.makeText(this, "已发送" + info.id, Toast.LENGTH_SHORT).show();
                break;
            case R.id.mi2:
                Toast.makeText(this, "正在删除" + info.id, Toast.LENGTH_SHORT).show();
                break;
            default:
                return super.onContextItemSelected(item);
        }
        return true;
    }
当中我们能够通过item.getMenuInfo来获取item所相应的ListView里条目的信息,当中info.id即就是listView里的position


Step4:

去res/menu/xxx.xml里静态构建菜单,当然啦,动态的话是不须要这一步的

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <group android:id="@+id/group1">
        <item android:id="@+id/mi1"
            android:title="发送">
            <!--ContextMenu的嵌套。点击进去之后又是一个ContextMenu-->
            <menu>
                <item android:id="@+id/mi_display_setting"
                    android:title="发送邮件"
                    android:icon="@mipmap/ic_launcher"
                    />
                <item android:id="@+id/mi_network_setting"
                    android:title="发送短信"/>
                <!-- 别的菜单项 -->
            </menu>
        </item>

        <item android:id="@+id/mi2"
            android:title="删除"/>
    </group>
</menu>

***********有一个问题就是我临时还没发现改动ContextMenu窗口的大小风格,知道的博友还请不吝赐教***********

demo地址




以上是关于笛卡尔积请具体解释一下.的主要内容,如果未能解决你的问题,请参考以下文章

基于笛卡尔坐标点积的算法计算地理距离

由笛卡尔积现象分析数据库表的连接

笛卡尔积

工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)

工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)

受限笛卡尔积计算 - PHP