精华内容
下载资源
问答
  • 笛卡尔乘积介绍

    2020-09-05 07:44:26
    笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}
  • 笛卡尔积简单介绍

    千次阅读 2020-10-15 13:15:06
    title: 简单介绍笛卡尔积 date: 2020-10-13 20:26:18 tags: “离散数学????” categories: “2020/10” 简介 这个博客参考左孝陵先生的《离散数学》,会尽量简单的讲讲笛卡尔积,能够给大家一个更加具体的认识。 ...

    简介

    这个博客参考左孝陵先生的《离散数学》,会尽量简单的讲讲笛卡尔积,能够给大家一个更加具体的认识。

    什么是序偶

    要知道什么是序偶,先得弄明白序偶的作用,我觉得序偶就是带顺序的集合,用来表示一些集合表示不了的东西。比如在小学学的直角坐标系上,有两个点,(2,3)和(3,2),点的坐标就是序偶,因为它自带顺序,为什么每次一个点都先读x坐标再读y坐标?是因为规定了顺序,才能表示更多的点。坐标系如果用集合来表示坐标,那{2,3},{3,2}就是同一个点了。

    再举一个例子吧,老师对同学们说报出你们的身高体重,你有一米八,体重190斤。你如果说“190,180”老师会认为你是一米九,体重180斤,因为老师问的时候带了一个顺序,问的是序偶,身高到体重,如果你按体重到身高报,就完全错了

    什么是笛卡尔积

    令A和B是任意两个集合,若序偶的第一个成员是A的元素,第二个成员是B的元素,所有这样的序偶集合,称为集合A和B的笛卡尔乘积或直积,记做A X B

    如果觉得定义太抽象,也没有关系,让我们继续之前老师记身高体重的例子,再没有你这种反着来报体重身高的人后,老师很快就得到了全班同学的身高体重表格,

    身高体重
    170140
    180190
    190180
    …………

    看看这个表来源于什么,来源于全班同学的身高的集合A,体重的集合B。那么,全班同学的体重身高就可以表示为A X B,全班同学的体重身高就可以表示为B X A

    更加严谨的表达方式

    假设身高集合为A={a1,a2,a3,a4……an},体重集合为B = {b1,b2,b3,b4,b5……},那么A X B = {<a1,b1>, <a1,b2> ,<a1, b3>,……<a1,bn>,<a2,b1>,<a2,b2>……<an,bn> }

    具体特征是a永远在前面,b永远在后面,因为是A X B,一共有n X n 个元素,因为A,B数组的元素个数为n,n

    笛卡尔积与函数的联动

    有这样一个函数,定义域为x,值域为1,那么这个函数可以表示为 R X 1的子集,能不能画出这个题的图像呢?

    y = 1函数图像

    其实我根据定义域和值域就用y = 1来画这个题的图像是不严谨的,应该说,这题是运气好才能画出图像,但是不可能确定表达式,因为决定函数的是定义域和对应关系。比如这题的函数可以是

    但我想表达的是,函数的图像,不可能超过它定义域和值域的笛卡尔积,而是被包含在笛卡尔积的图像之中,我能准确的画出这个题的图像,是因为R X 1这个笛卡尔积,结果是一条直线,导致函数图像的可能性降低,所以能画出图像。

    如果我告诉你定义域为[-3,3],值域为[-3,3],是肯定画不出图像,确定不了函数的,但是我可以肯定的是,函数的图像一定在[-3,3] X [-3,3]的正方形图像当中

    原文来自我的博客,欢迎参观哦😯

    展开全文
  • 关于笛卡尔树及Treap的线性构造法

    千次阅读 2016-04-06 20:08:01
    现在将介绍笛卡尔树的线性构造法。线性构造维护笛卡尔树从根开始一直往右走的那一条链,这个用单调栈维护。 每次往栈顶的右儿子加点。 然后类似treap一样,就是模拟treap的旋转。 可以看代码理解。fo(i,1,n){ j=...

    前言

    大家到知道笛卡尔树。
    而且我们也可以把treap当作笛卡尔树。
    现在将介绍笛卡尔树的线性构造法。

    线性构造

    维护笛卡尔树从根开始一直往右走的那一条链,这个用单调栈维护。
    每次往栈顶的右儿子加点。
    然后类似treap一样,就是模拟treap的旋转。
    可以看代码理解。

    fo(i,1,n){
            j=0;
            while (top&&fix[i]<fix[sta[top]]){
                right[sta[top]]=j;
                j=sta[top];
                left[i]=sta[top];
                top--;
            }
            if (top) right[sta[top]]=i;
            sta[++top]=i;
        }

    由于我比较懒所以没有详细介绍。
    可以看这里,有图非旋转treap及可持久化

    展开全文
  • 勒内·笛卡尔(René Descartes,1596年3月31日-1650年2月11日),1596年3月31日生于法国安德尔-卢瓦尔省的图赖讷(现笛卡尔,因笛卡尔得名),1650年2月11日逝于瑞典斯德哥尔摩,法国哲学家、数学家、物理学家。...

    笛卡尔 (法国哲学家,数学家和科学家) 编辑 讨论20 上传视频
    勒内·笛卡尔(René Descartes,1596年3月31日-1650年2月11日),1596年3月31日生于法国安德尔-卢瓦尔省的图赖讷(现笛卡尔,因笛卡尔得名),1650年2月11日逝于瑞典斯德哥尔摩,法国哲学家、数学家、物理学家。他对现代数学的发展做出了重要的贡献,因将几何坐标体系公式化而被认为是解析几何之父。他还是西方现代哲学思想的奠基人之一,是近代唯物论的开拓者,提出了“普遍怀疑”的主张。他的哲学思想深深影响了之后的几代欧洲人,并为欧洲的“理性主义”哲学奠定了基础。
    笛卡尔最为世人熟知的是其作为数学家的成就。他于1637年发明了现代数学的基础工具之一——坐标系,将几何和代数相结合,创立了解析几何学。同时,他也推导出了笛卡尔定理等几何学公式。值得一提的是,传说著名的心形线方程也是由笛卡尔提出的。
    在哲学上,笛卡尔是一个二元论者以及理性主义者。他是欧陆“理性主义”的先驱。关于笛卡尔的哲学思想,最著名的就是他那句“我思故我在 ”。他的《第一哲学的沉思》(又名《形而上学的沉思》)至今仍然是许多大学哲学系的必读书目之一。
    在物理学方面,笛卡尔将其坐标几何学应用到光学研究上,在《屈光学》中第一次对折射定律作出了理论上的推证。在他的《哲学原理》第二章中以第一和第二自然定律的形式首次比较完整地表述了惯性定律,并首次明确地提出了动量守恒定律。这些都为后来牛顿等人的研究奠定了一定的基础。
    人物生平编辑
    童年
    1596年3月31日,勒内·笛卡尔出生在法国安德尔-卢瓦尔省的图赖讷拉海(现为笛卡尔)。他出身于地位较低的贵族家庭,父亲Joachim是雷恩的布列塔尼议会的议员,同时也是地方法院的法官。
    1岁多时母亲患肺结核去世,而他也受到传染,造成体弱多病 [1] 。笛卡尔因从小多病,但是家境富裕从而使学校允许他在床上早读。母亲去世后,父亲移居他乡并再婚,而把笛卡尔留给了他的外祖母带大,自此父子很少见面,但是父亲一直提供金钱方面的帮助,使他能够受到良好的教育,追求自己的兴趣而不用担心经济来源问题。也因此养成终生沉思的习惯和孤僻的性格。父亲见他颇有哲学家的气质,亲昵地称他为“小哲学家”。
    1606或1607年,父亲希望笛卡尔将来能够成为一名神学家,于是在笛卡尔八岁时将其送入欧洲最有名的贵族学校──位于拉弗莱什的耶稣会的皇家大亨利学院学习 [2] 。校方为照顾他孱弱的身体,特许他不必受校规的约束,早晨不必到学校上课,可以在床上读书 。因此,他从小养成了喜欢安静,善于思考的习惯。他在该校学习8年,接受了传统的文化教育,学习了古典文学、历史、神学、哲学、法学、医学、数学及其他自然科学。他学习到了数学和物理学,包括伽利略的工作 [3] 。但他对所学的东西颇感失望,因为在他看来教科书中那些微妙的论证,其实不过是模棱两可甚至前后矛盾的理论,只能使他顿生怀疑而无从得到确凿的知识,惟一给他安慰的是数学。
    这里有一段关于哲学家笛卡尔论星星的趣话。有一次笛卡尔坐在自己屋前的台阶上,正在凝视着落日后昏暗的地平线。一个过路人走近他的身旁,问道:“喂!聪明人,请问,天上有多少颗星星?”他回答道:“蠢人!谁也不能拥抱那无边无际的东西……” [4]
    青年
    1616年12月毕业后,他遵从他父亲希望他成为律师的愿望,进入普瓦捷大学学习法律与医学,对各种知识特别是数学深感兴趣,并获得业士学位和文凭 [5] 。毕业后笛卡尔一直对职业选择不定,又决心游历欧洲各地,专心寻求“世界这本大书”中的智慧。
    1618年,笛卡尔加入荷兰拿骚的毛里茨的军队。但是荷兰和西班牙之间签订了停战协定,于是笛卡尔利用这段空闲时间学习数学 [6] 。在军队服役和周游欧洲期间他继续注意“收集各种知识”,“随处对遇见的种种事物注意思考”。在笛卡尔的时代,拉丁文是学者的语言。他也如当时的习惯,在他的著作上签上他的拉丁化的名字——Renatus Cartesius(瑞那图斯·卡提修斯)。正因为如此,由他首创的笛卡尔坐标系也称卡提修坐标系。
    笛卡尔对结合数学与物理学的兴趣,是在荷兰当兵期间产生的。
    1618年11月10日,他偶然在路旁公告栏上,看到用佛莱芒语提出的数学问题征答。这引起了他的兴趣,并且让身旁的人,将他不懂的佛莱芒语翻译成拉丁语。这位身旁的人就是大他八岁的以撒·贝克曼(Isaac Beeckman)。贝克曼在数学和物理学方面有很高造诣,很快成为了他的导师 [7] 。4个月后,他写信给贝克曼:“你是将我从冷漠中唤醒的人……”,并且告诉他,自己在数学上有了4个重大发现。
    据说,笛卡尔曾在一个晚上做了三个奇特的梦。第一个梦是,笛卡尔被风暴吹到一个风力吹不到的地方;第二个梦是他得到了打开自然宝库的钥匙;第三个梦是他开辟了通向真正知识的道路。这三个奇特的梦增强了他创立新学说的信心。这一天是笛卡尔思想上的一个转折点,也有些学者把这一天定为解析几何的诞生日。
    1621年笛卡尔退伍回国,时值法国内乱,于是在1622年,时年26岁的笛卡尔变卖掉父亲留下的资产,用4年时间游历欧洲,其中在意大利住了2年,随后于1625年迁住于巴黎。因为在当时的法国教会势力庞大,不能自由讨论宗教问题。
    1628年笛卡尔移居荷兰,在那里住了20多年。在此期间,笛卡尔对哲学、数学、天文学、物理学、化学和生理学等领域进行了深入的研究且致力于哲学研究发表了多部重要的文集,并通过数学家梅森神父与欧洲主要学者保持密切联系。
    他的主要著作几乎都是在荷兰完成的。
    1628年,写出《指导哲理之原则》。
    1634年完成了以尼古拉·哥白尼学说为基础的《论世界》。书中总结了他在哲学、数学和许多自然科学问题上的一些看法。
    1637年,用法文写成三篇论文《屈光学》、《气象学》和《几何学》,并为此写了一篇序言《科学中正确运用理性和追求真理的方法论》,哲学史上简称为《方法论》(Discours de la méthode)(1637)。6月8日在莱顿匿名出版。
    《哲学原理》(les Principes de la philosophie)(1644)。
    《形而上学的沉思》(Méditations métaphysiques)(1641)等就此笛卡尔成为欧洲最有影响力的哲学家之一。
    离世
    1650年2月去世,享年54岁。终生未婚。由于教会的阻止,仅有几个友人为其送葬。死后还出版有《论光》(1664)等。
    1663年他的著作在罗马和巴黎被列入梵蒂冈教皇颁布的禁书目录之中。但是,他的思想的传播并未因此而受阻,笛卡尔成为17世纪及其以后对欧洲哲学界和科学家最有影响的巨匠之一。
    1740年,巴黎才解除了禁令,那是为了对当时在法国流行起来的牛顿世界体系提供一个替代的东西。
    1789年法国大革命后,笛卡尔的骨灰和遗物被送进法国历史博物馆。
    1819年,其骨灰被移入圣日耳曼德佩教堂中。
    他的哲学与数学思想对历史的影响是深远的。人们在他的墓碑上刻下了这样一句话:“笛卡尔,欧洲文艺复兴以来,第一个为人类争取并保证理性权利的人。”
    个人生活编辑
    笛卡尔的婚姻:与斯宾诺莎、牛顿、莱布尼茨一样,笛卡尔终身未婚,没有享受到家庭生活所带来的快乐。他有一私生女,但不幸夭折,为其终生憾事。
    宗教信仰编辑
    笛卡尔的宗教信仰在学术圈中一直被严格地争论着。他声称是虔诚的罗马天主教徒,以及“沉思”的目的是为了维护基督教信仰。但是在他自己的时代,笛卡尔被指控宣扬秘密的自然神论和无神论信仰。与他同时代的布莱兹·帕斯卡说,“我不能原谅笛卡尔;他在其全部的哲学之中都想能撇开上帝。然而他又不能不要上帝来轻轻碰一下,以便使世界运动起来;除此之外,他就再也用不着上帝了。” [8-9]
    斯蒂芬·高克罗格的笛卡尔传记中写到,“他作为一个天主教徒有着很深的宗教信仰,并一直保持到他死的那一天,并带着坚定的,热情的探索真理的渴望。” [10] 在笛卡尔死于瑞典后,克里斯蒂娜女王放弃了她的王位转信罗马天主教(瑞典法律要求统治者是新教教徒)。她一直联系的仅有的天主教徒就是笛卡尔,他曾是她的个人家庭教师。 [11]
    笛卡尔的主要数学成果集中在他的“几何学”中。当时,代数还是一门新兴科学,几何学的思维还在数学家的头脑中占有统治地位。在笛卡尔之前,几何与代数是数学中两个不同的研究领域。笛卡尔站在方法论的自然哲学的高度,认为希腊人的几何学过于依赖于图形,束缚了人的想象力。对于当时流行的代数学,他觉得它完全从属于法则和公式,不能成为一门改进智力的科学。因此他提出必须把几何与代数的优点结合起来,建立一种“真正的数学”。笛卡尔的思想核心是:把几何学的问题归结成代数形式的问题,用代数学的方法进行计算、证明,从而达到最终解决几何问题的目的。依照这种思想他创立了“解析几何学”。
    1637年,笛卡尔发表了《几何学》,创立了平面直角坐标系。他用平面上的一点到两条固定直线的距离来确定点的位置,用坐标来描述空间上的点。他进而又创立了解析几何学,解析几何的出现,改变了自古希腊以来代数和几何分离的趋向,把相互对立着的“数” 与“形”统一了起来,使几何曲线与代数方程相结合。笛卡尔的这一天才创见,更为微积分的创立奠定了基础,从而开拓了变量数学的广阔领域。最为可贵的是,笛卡尔用运动的观点,把曲线看成点的运动的轨迹,不仅建立了点与实数的对应关系,而且把形(包括点、线、面)和“数”两个对立的对象统一起来,建立了曲线和方程的对应关系。这种对应关系的建立,不仅标志着函数概念的萌芽,而且标明变数进入了数学,使数学在思想方法上发生了伟大的转折–由常量数学进入变量数学的时期。辨证法进入了数学,有了变数,微分和积分也就立刻成为必要了。笛卡尔的这些成就,为后来牛顿、莱布尼兹发现微积分,为一大批数学家的新发现开辟了道路。
    主要成就编辑
    法国邮票上的笛卡尔
    法国邮票上的笛卡尔
    笛卡尔在科学上的贡献是多方面的。笛卡尔不仅在哲学领域里开辟了一条新的道路,同时笛卡尔又是一勇于探索的科学家,在物理学、生理学等领域都有值得称道的创见,特别是在数学上他创立了解析几何,从而打开了近代数学的大门,在科学史上具有划时代的意义。
    但他的哲学思想和方法论,在其一生活动中则占有更重要的地位。他的哲学思想对后来的哲学和科学的发展,产生了极大的影响。
    哲学方面
    笛卡尔被广泛认为是西方现代哲学的奠基人之一,他第一个创立了一套完整的哲学体系。哲学上,笛卡尔是一个二元论者以及理性主义者。笛卡尔认为,人类应该可以使用数学的方法——也就是理性——来进行哲学思考。他相信,理性比感官的感受更可靠。(他举出了一个例子:在我们做梦时,我们以为自己身在一个真实的世界中,然而其实这只是一种幻觉而已,参见庄周梦蝶)。他从逻辑学、几何学和代数学中发现了4条规则:
    绝不承认任何事物为真,对于我完全不怀疑的事物才视为真理;
    必须将每个问题分成若干个简单的部分来处理;
    思想必须从简单到复杂;
    我们应该时常进行彻底的检查,确保没有遗漏任何东西。
    笛卡尔将这种方法不仅运用在哲学思考上,还运用于几何学,并创立了解析几何。
    由此,笛卡尔第一步认为怀疑就是出发点,感官知觉的知识是可以被怀疑的,我们并不能信任我们的感官。笛卡尔强调科学的目的在于造福人类,使人成为自然界的主人和统治者。他反对经院哲学和神学,提出怀疑一切的“系统怀疑的方法”。所以他不会说“我看故我在”、“我听故我在”。从这里他悟出一个道理:我们所不能怀疑的是“我们的怀疑”。意指:我们无法去怀疑的,是我们正在“怀疑”这件事时的“怀疑本身”,只有这样才能肯定我们的“怀疑”是有真实性的,并非虚假的产物。人们觉得理所当然或习以为常的事物,他却感到疑惑,由此他推出了著名的哲学命题——“我思故我在”(Cogito ergo sum)。强调不能怀疑以思维为其属性的独立的精神实体的存在,并论证以广延为其属性的独立物质实体的存在。
    他认为上述两实体都是有限实体,把它们并列起来,这说明了在形而上学或本体论上,他是典型的二元论者。笛卡尔将此作为形而上学中最基本的出发点,从这里他得出结论,“我”必定是一个独立于肉体的、在思维的东西。笛卡尔还试图从该出发点证明出上帝的存在。笛卡尔认为,我们都具有对完美实体的概念,由于我们不可能从不完美的实体上得到完美的概念,因此必定有一个完美实体——即上帝——的存在来让我们得到这个概念。即上帝是有限实体的创造者和终极的原因。从所得到的两点出发,笛卡尔继续推论出既然完美的事物(神)存在,那么我们可以确定之前的恶魔假设是不能成立的,因为一个完美的事物不可能容许这样的恶魔欺骗人们,因此借由不断的怀疑我们可以确信“这个世界真的存在”,而且经由证明过后的数学逻辑都应该是正确的。现实世界中有诸多可以用理性来察觉的特性,即它们的数学特性(如长、宽、高等),当我们的理智能够清楚地认知一件事物时,那么该事物一定不会是虚幻的,必定是如同我们所认知的那样。即笛卡尔将几何学的推理方法和演绎法应用于哲学上,认为清晰明白的概念就是真理,提出“天赋观念”。
    笛卡尔的自然哲学观同亚里士多德的学说是完全对立的。他认为,所有物质的东西,都是为同一机械规律所支配的机器,甚至人体也是如此。同时他又认为,除了机械的世界外,还有一个精神世界存在,这种二元论的观点后来成了欧洲人的根本思想方法。
    虽然笛卡尔证明了真实世界的存在,他认为宇宙中共有2个不同的实体,既思考(心灵)和外在世界(物质),两者本体都来自于上帝,而上帝是独立存在的。他认为,只有人才有灵魂,人是一种二元的存在物,既会思考,也会占空间。而动物只属于物质世界。
    笛卡尔强调思想是不可怀疑的这个出发点,对此后的欧洲哲学产生了重要的影响。我思故我在所产生的争议在于所谓的上帝存在及动物一元论(黑猩猩、章鱼、鹦鹉、海豚、大象等等都证实有智力),而怀疑的主要思想,确实对研究方面很有贡献。
    方法论
    笛卡尔本想在一本题为《世界》的书中介绍他的科研成果,但是当该书在1633年快要完稿时,他获悉意大利教会的权威伽利略有罪,因为他拥护哥白尼的日心说。虽然笛卡尔在荷兰未受到天主教权威的迫害,但是他还是决定谨慎从事,收书稿进箧入匣,因为在书中他捍卫了哥白尼的学说。但是在1637年他发表了最有名的著作《正确思维和发现科学真理的方法论》,通常简称为《方法论》。
    笛卡尔在《方法论》中指出,研究问题的方法分四个步骤:

    1. 永远不接受任何我自己不清楚的真理,就是说要尽量避免鲁莽和偏见,只能是根据自己的判断非常清楚和确定,没有任何值得怀疑的地方的真理。就是说只要没有经过自己切身体会的问题,不管有什么权威的结论,都可以怀疑。这就是著名的“怀疑一切”理论。例如亚里士多德曾下结论说,女人比男人少两颗牙齿。但事实并非如此。
    2. 可以将要研究的复杂问题,尽量分解为多个比较简单的小问题,一个一个地分开解决。
    3. 将这些小问题从简单到复杂排列,先从容易解决的问题着手。
    4. 将所有问题解决后,再综合起来检验,看是否完全,是否将问题彻底解决了。
      在1960年代以前,西方科学研究的方法,从机械到人体解剖的研究,基本是按照笛卡尔的《谈谈方法》进行的,对西方近代科学的飞速发展,起了相当大的促进作用。但也有其一定的缺陷,如人体功能,只是各部位机械的综合,而对其互相之间的作用则研究不透。直到阿波罗1号登月工程的出现,科学家才发现,有的复杂问题无法分解,必须以复杂的方法来对待,因此导致系统工程的出现,方法论的方法才第一次被综合性的方法所取代。系统工程的出现对许多大规模的西方传统科学起了相当大的促进作用,如环境科学,气象学,生物学,人工智能等等。
      “我思故我在”
      笛卡尔最著名的思想。出自《方法论》。拉丁语: Cogito ergo sum. 英语: I think,therefore I am. 法语:Je pense, donc je suis.
      字面意思:拉丁语原义: 我思考,所以我存在。
      深层意思:笛卡尔的哲学命题,采用所谓“怀疑的方法”,是在求证“知识”的来源是否可靠。我们可以怀疑身边的一切,只有一件事是我们无法怀疑的,那就是:怀疑那个正在怀疑着的“我”的存在。换句话说,我们不能怀疑“我们的怀疑”,因为只有这样才能肯定我们的“怀疑”。笛卡尔也就是从他的 “我思故我在”来证明“上帝的存在”。因为“我”这个思想的主体不能被“怀疑”,那么就有一个使“我”存在的更高“存在体”。换句话说,因为我存在,所以必须有一个使我存在的“存在者”,而那个使我存在的“存在者”,也必定是使万物存在的“存在者”。因此,能够使万物存在的“存在者”,就必然只有上帝才有可能了。
      这句被笛卡尔当作自己的哲学体系的出发点的名言,在17世纪前的东欧和21世纪的中国学界都被认为是极端主观唯心主义的总代表,而遭到严厉的批判。很多人甚至以“存在必先于意识”、“没有肉体便不能有思想”等为论据,认为笛卡尔是“本末倒置”、“荒唐可笑”。笛卡尔的怀疑不是对某些具体事物、具体原理的怀疑,而是对人类、对世界、对上帝的绝对的怀疑。从这个绝对的怀疑,笛卡尔要引导出不容置疑的哲学的原则。
      物理学方面
      笛卡尔靠着天才的直觉和严密的数学推理,在物理学方面做出了有益的贡献。
      从1619年读了约翰尼斯·开普勒的光学著作后,笛卡尔就一直关注着透镜理论;并从理论和实践两方面参与了对光的本质、反射与折射率以及磨制透镜的研究。他把光的理论视为整个知识体系中最重要的部分。笛卡尔坚信光是“即时”传播的,他在著作《论人》和《哲学原理》中,完整的阐发了关于光的本性的概念。笛卡尔运用他的坐标几何学从事光学研究,并在《屈光学》中首次对光的折射定律提出了理论论证。与荷兰的斯涅耳共同分享发现光的折射定律的荣誉。他认为光是压力在以太中的传播,他从光的发射论的观点出发,用网球打在布面上的模型来计算光在两种媒质分界面上的反射、折射和全反射,从而首次在假定平行于界面的速度分量不变的条件下导出折射定律;不过他的假定条件是错误的,他的推证得出了光由光疏媒质进入光密媒质时速度增大的错误结论。他还对人眼进行光学分析,解释了视力失常的原因是晶状体变形,设计了矫正视力的透镜。
      他还用光的折射定律解释彩虹现象,并且通过元素微粒的旋转速度来分析颜色。
      在力学方面,笛卡尔则发展了伽利略运动相对性的理论。例如在《哲学原理》一书中,举出在航行中的海船上海员怀表的表轮这一类生动的例子,用以说明运动与静止需要选择参考系的道理。
      笛卡尔在《哲学原理》第二章中以第一和第二自然定律的形式比较完整地第一次表述了惯性定律:只要物体开始运动,就将继续以同一速度并沿着同一直线方向运动,直到遇到某种外来原因造成的阻碍或偏离为止。这里他强调了伽利略没有明确表述的惯性运动的直线性。
      在这一章中,他还第一次明确地提出了动量守恒定律:物质和运动的总量永远保持不变。为能量守恒定律奠定了基础。
      笛卡尔发现了动量守恒原理的原始形式(笛卡尔所定义的动量是一绝对值,不是向量,因此他的动量守恒原理后来也被证明是错误的)。
      笛卡尔对碰撞和离心力等问题曾作过初步研究,给后来克里斯蒂安·惠更斯的成功创造了条件。
      天文学方面
      阿尔巴尼亚邮票上的笛卡尔
      阿尔巴尼亚邮票上的笛卡尔
      笛卡尔把他的机械论观点应用到天体,发展了宇宙演化论,形成了他关于宇宙发生与构造的学说。他认为,从发展的观点来看而不只是从已有的形态来观察,对事物更易于理解。他创立了漩涡说。他认为太阳的周围有巨大的漩涡,恒星。
      他认为天体的运动来源于惯性和某种宇宙物质旋涡对天体的压力,在各种大小不同的旋涡的中心必有某一天体,以这种假说来解释天体间的相互作用。笛卡尔的太阳起源的以太旋涡模型第一次依靠力学而不是神学,解释了天体、太阳、行星、卫星、彗星等的形成过程,比康德的星云说早一个世纪,是17世纪中最有权威的宇宙论。
      笛卡尔的天体演化说、旋涡模型和近距作用观点,正如他的整个思想体系一样,一方面以丰富的物理思想和严密的科学方法为特色,起着反对经院哲学、启发科学思维、推动当时自然科学前进的作用,对许多自然科学家的思想产生深远的影响;而另一方面又经常停留在直观和定性阶段,不是从定量的实验事实出发,因而一些具体结论往往有很多缺陷,成为后来牛顿物理学的主要对立面,导致了广泛的争论。
      他认为太阳的周围有巨大的漩涡,带动着行星不断运转。物质的质点处于统一的漩涡之中,在运动中分化出土、空气和火三种元素,土形成行星,火则形成太阳和恒星。
      他还发展了宇宙演化论、漩涡说等理论学说,虽然具体理论有许多缺陷,但依然对以后的自然科学家产生了影响。
      数学方面
      笛卡尔对数学最重要的贡献是创立了解析几何。在笛卡尔时代,代数还是一个比较新的学科,几何学的思维还在数学家的头脑中占有统治地位。笛卡尔致力于代数和几何联系起来的研究,并成功地将当时完全分开的代数和几何学联系到了一起。于1637年,在创立了坐标系后,成功地创立了解析几何学。他的这一成就为微积分的创立奠定了基础,而微积分又是现代数学的重要基石。解析几何直到现在仍是重要的数学方法之一。
      笛卡尔不仅提出了解析几何学的主要思想方法,还指明了其发展方向。在他的著作《几何》中,笛卡尔将逻辑,几何,代数方法结合起来,通过讨论作图问题,勾勒出解析几何的新方法,从此,数和形就走到了一起,数轴是数和形的第一次接触。并向世人证明,几何问题可以归结成代数问题,也可以通过代数转换来发现、证明几何性质。笛卡尔引入了坐标系以及线段的运算概念。他创新地将几何图形‘转译’代数方程式,从而将几何问题以代数方法求解,这就是今日的“解析几何”或称“坐标几何”。
      解析几何的创立是数学史上一次划时代的转折。而平面直角坐标系的建立正是解析几何得以创立的基础。直角坐标系的创建,在代数和几何上架起了一座桥梁,它使几何概念可以用代数形式来表示,几何图形也可以用代数形式来表示,于是代数和几何就这样合为一家人了。
      此外,现在使用的许多数学符号都是笛卡尔最先使用的,这包括了已知数a, b, c以及未知数x, y, z等,还有指数的表示方法。他还发现了凸多面体边、顶点、面之间的关系,后人称为欧拉-笛卡尔公式。还有微积分中常见的笛卡尔叶形线也是他发现的。
      笛卡尔坐标系
      在数学里,笛卡尔坐标系(Cartesian坐标系),也称直角坐标系,是一种正交坐标系。二维的直角坐标系是由两条相互垂直、0 点重合的数轴构成的。在平面内,任何一点的坐标 是根据数轴上 对应的点的坐标设定的。在平面内,任何一点与坐标的对应关系,类似于数轴上点与坐标的对应关系。
      采用直角坐标,几何形状可以用代数公式明确的表达出来。几何形状的每一个点的直角坐标必须遵守这代数公式。
      笛卡尔坐标系是由法国数学家勒内·笛卡尔创建的。1637年,笛卡尔发表了巨作《方法论》。这本专门研究与讨论西方治学方法的书,提供了许多正确的见解与良好的建议,对于后来的西方学术发展,有很大的贡献。
      为了显示新方法的优点与果效,以及对他个人在科学研究方面的帮助,在《方法论》的附录中,他增添了另外一本书《几何》。有关笛卡尔坐标系的研究,就是出现于《几何》这本书内。
      笛卡尔在坐标系这方面的研究结合了代数与欧几里得几何,对于后来解析几何、微积分、与地图学的建树,具有关键的开导力。
      轶事:蜘蛛织网和平面直角坐标系的创立
      据说有一天,笛卡尔生病卧床,病情很重,尽管如此他还反复思考一个问题:几何图形是直观的,而代数方程是比较抽象的,能不能把几何图形和代数方程结合起来,也就是说能不能用几何图形来表示方程呢?要想达到此目的,关键是如何把组成几何图形的点和满足方程的每一组“数”挂上钩,他苦苦思索,拼命琢磨,通过什么样的方法,才能把“点”和“数”联系起来。突然,他看见屋顶角上的一只蜘蛛,拉着丝垂了下来。一会功夫,蜘蛛又顺这丝爬上去,在上边左右拉丝。蜘蛛的“表演”使笛卡尔的思路豁然开朗。他想,可以把蜘蛛看作一个点。他在屋子里可以上,下,左,右运动,能不能把蜘蛛的每一个位置用一组数确定下来呢?他又想,屋子里相邻的两面墙与地面交出了三条线,如果把地面上的墙角作为起点,把交出来的三条线作为三根数轴,那么空间中任意一点的位置就可以在这三根数轴上找到有顺序的三个数。反过来,任意给一组三个有顺序的数也可以在空间中找到一点P与之对应,同样道理,用一组数(X,Y)可以表示平面上的一个点,平面上的一个点也可以用一组两个有顺序的数来表示,这就是坐标系的雏形。
      笛卡尔符号法则
      笛卡尔符号法则首先由笛卡尔在他的作品《La Géométrie》中描述,是一个用于确定多项式的正根或负根的个数的方法。
      如果把一元实系数多项式按降幂方式排列,则多项式的正根的个数要么等于相邻的非零系数的符号的变化次数,要么比它小2的倍数。如5,3,1或4,2,0。而负根的个数则是把所有奇数次项的系数变号以后,所得到的多项式的符号的变化次数,或者比它小2的倍数。
      特殊情况:注意如果知道了多项式只有实数根,则利用这个方法可以完全确定正根的个数。由于零根的重复度很容易计算,因此也可以求出负根的个数。于是所有根的符号都可以确定。
      欧拉-笛卡尔公式
      欧拉-笛卡尔公式,是几何学中的一个公式。
      该公式的内容为:在任意凸多面体,设V为顶点数,E为棱数,F是面数,则V−E+F=2。
      该公式最早由法国数学家笛卡尔于1635年左右证明,但不为人知。后瑞士数学家莱昂哈德·欧拉于1750年独立证明了这个公式。1860年,笛卡尔的工作被发现,此后该公式遂被称为欧拉-笛卡尔公式。
      笛卡尔叶形线
      笛卡尔叶形线是一个代数曲线,首先由笛卡尔在 1638年提出。
      笛卡尔叶形线的隐式方程为
      极坐标中方程分别为
      这个名字来自拉丁文的folium,意思是 “leaf”(叶子)。
      曲线的特征:利用隐函数的求导法则,我们可以求出y’:
      利用直线的点斜式方程,我们可以求出点( )处的切线方程:
      水平和竖直切线:当 时,笛卡尔叶形线的切线是水平的。所以:
      当 时,笛卡尔叶形线的切线是竖直的。所以:
      这可以通过曲线的对称来解释。我们可以看到,曲线有两条水平切线和两条竖直切线。笛卡尔叶形线关于y=x对称,所以如果水平切线有坐标( )的话,则一定有一个对应的竖直切线,坐标为( )。
      渐近线:曲线有一条渐近线:x+y+a=0
      这个渐近线的斜率是-1,x截矩和y截矩都是-a。
      笛卡尔与克里斯汀心形线(即心脏线)的故事
      心脏线
      克里斯汀心形线
      克里斯汀心形线
      未有严谨证据证明心脏线是由笛卡尔发明。
      心脏线是有一个尖点的外摆线。也就是说,一个圆沿着另一个半径相同的圆滚动时,圆上一点的轨迹就是心脏线。
      心脏线是外摆线的一种,其n为2。它亦可以极坐标的形式表示:r= 1 + cosθ。这样的心脏线的周界为8,围得的面积为 。
      心脏线亦为蚶线的一种。
      在曼德博集合正中间的图形便是一个心脏线。
      心脏线的英文名称“Cardioid”是 de Castillon 在1741年的《Philosophical Transactions of the Royal Society》发表的;意为“像心脏的”。
      在笛卡尔坐标系中:心脏线的参数方程为:

    其中r是圆的半径。曲线的尖点位于(r,0)
    在极坐标系中的方程为:
    ρ(θ)=2r(1-cosθ)
    面积:
    对于其在极坐标中的方程有待考察,此处仅供参考。
    四个朝向不同的心脏线
    四个朝向不同的心脏线
    《数学的故事》里面说到了数学家笛卡尔的爱情故事。笛卡尔于1596年出生在法国,欧洲大陆爆发黑死病时他流浪到瑞典,认识了瑞典一个小公国18岁的小公主克里斯蒂娜(Kristina),后成为她的数学老师,日日相处使他们彼此产生爱慕之心,公主的父亲国王知道了后勃然大怒,下令将笛卡尔处死,后因女儿求情将其流放回法国,克里斯汀公主也被父亲软禁起来。笛卡尔回法国后不久便染上黑死病,他日日给公主写信,因被国王拦截,克里斯汀一直没收到笛卡尔的信。笛卡尔在给克里斯汀寄出第十三封信后就气绝身亡了,这第十三封信内容只有短短的一个公式:r=a(1-sinθ)。国王看不懂,觉得他们俩之间并不是总是说情话的,大发慈悲就把这封信交给一直闷闷不乐的克里斯汀,公主看到后,立即明了恋人的意图,她马上着手把方程的图形画出来,看到图形,她开心极了,她知道恋人仍然爱着她,原来方程的图形是一颗心的形状。公主在纸上建立了极坐标系,用笔在上面描下方程的点,看到了方程所表示的心脏线,理解了笛卡尔对自己的深深爱意。这也就是著名的“心形线”。
    国王死后,克里斯蒂娜登基,立即派人在欧洲四处寻找心上人,无奈斯人已故,先她走一步了,徒留她孤零零在人间……
    据说这封享誉世界的另类情书还保存在欧洲笛卡尔的纪念馆里。
    在历史上,笛卡尔和克里斯蒂娜的确有过交情。但笛卡尔是1649年10月4日应克里斯蒂娜邀请才来到瑞典,而当时克里斯蒂娜已成为了瑞典女王。笛卡尔与克里斯蒂娜谈论的主要是哲学问题而不是数学。有资料记载,由于克里斯蒂娜女王时间安排很紧,笛卡尔只能在早晨五点与她探讨哲学。笛卡尔真正的死因是因天气寒冷加上过度操劳患上的肺炎,而不是黑死病 [12] 。
    解析几何
    笛卡尔几何
    笛卡尔几何
    文艺复兴使欧洲学者继承了古希腊的几何学,也接受了东方传入的代数学。利学技术的发展,使得用数学方法描述运动成为人们关心的中心问题。笛卡尔分析了几何学与代数学的优缺点,表示要去“寻求另外一种包含这两门科学的好处,而没有它们的缺点的方法”。
    在《几何学》(是《方法论》中的一部分)卷一中,他用平面上的一点到两条固定直线的距离来确定点的距离,用坐标来描述空间上的点。他进而创立了解析几何学,表明了几何问题不仅可以归结成为代数形式,而且可以通过代数变换来实现发现几何性质,证明几何性质。
    笛卡尔把几何问题化成代数问题,提出了几何问题的统一作图法。为此,他引入了单位线段,以及线段的加、减、乘、除、开方等概念,从而把线段与数量联系起来,通过线段之间的关系,“找出两种方式表达同一个量,这将构成一个方程”,然后根据方程的解所表示的线段间的关系作图。
    在卷二中,笛卡尔用这种新方法解决帕普斯问题时,在平面上以一条直线为基线,为它规定一个起点,又选定与之相交的另一条直线,它们分别相当于x轴、原点、y轴,构成一个斜坐标系。那么该平面上任一点的位置都可以用(x,y)惟一地确定。帕普斯问题就化成了一个含两个未知数的二次不定方程。笛卡尔指出,方程的次数与坐标系的选择无关,因此可以根据方程的次数将曲线分类。
    《几何学》一书提出了解析几何学的主要思想和方法,标志着解析几何学的诞生。此后,人类进入变量数学阶段。
    在卷三中,笛卡尔指出,方程可能有和它的次数一样多的根,还提出了著名的笛卡尔符号法则:方程正根的最多个数等于其系数变号的次数;其负根的最多个数(他称为假根)等于符号不变的次数。笛卡尔还改进了韦达创造的符号系统,用a,b,c,… 表示已知量,用x,y,z,…表示未知量。
    解析几何的出现,改变了自古希腊以来代数和几何分离的趋向,把相互对立着的“数”与“形”统一了起来,使几何曲线与代数方程相结合。笛卡尔的这一天才创见,更为微积分的创立奠定了基础,从而开拓了变量数学的广阔领域。
    正如恩格斯所说:“数学中的转折点是笛卡尔的变数。有了变数,运动进入了数学,有了变数,辩证法进入了数学,有了变数,微分和积分也就立刻成为必要了。”
    心理学方面
    笛卡尔在心理学上的观点和重大发现,对后来心理学颇有影响。
    他是近代二元论和唯心主义理论著名的代表。他的反射和反射弧的重大发现,为“动物是机器”的论断提供了重要依据。并提出,反应----刺激的假设。
    但是笛卡尔的反射概念是机械性的,他强调人和动物的区别,动物没有心灵,人是有心灵的,这样的推断是二元论的典型表现。另外,心神交感论也是笛卡尔在身心关系上二元论的又一典型表现,他认为,人的肉体是由物质实体构成的,人的心灵是由精神实体构成的。心灵和人体即可以相互影响、互为因果、相互作用。
    他认为人的原始情绪有六种:惊奇、爱悦、憎恶、欲望、欢乐和悲哀,其他的情绪都是这六种原始情绪的分支,或者组合。
    笛卡尔的二元论心理学思想虽然在理论上是错误的,但是在当时社会背景下,是非常具有推动和进步作用的,他利用二元论摆脱了神学对科学的绝对控制,将人们的思想引导至理性思维和具体研究上,所以,他对心理学的贡献是不可忽视的。
    对本能理论的贡献。自作家Thomas Aquinas(1225-1274)提出本能的概念,并相信动物具有本能,但是人类不具有本能。他主张,人类具有能双重的本性–物质的和非物质的,或身体的和精神的(智力的)–但是支配人类的物质本性的规律与支配动物的规律不同,这种区别的原因来自于“人是上帝创造的特殊产物”的观点。许多早起的科学家为了动物动机和人类动机之间意义深远的相似性而争论。表面上看,人类和动物都被相同的规律操纵着,但是,又似乎存在着差别。笛卡尔提出了能调和这两种观点的解释:在意志行动水平之下的身体行为,能够被机械地解释(本能),但是与诸如道德品行这样的事情有关的行为就在意志的控制之下,笛卡尔主张,身体和精神(意志、灵魂)相互作用,作用发生的位置就在松果腺。某种身体行为,例如性行为,就发生在精神的控制之下而不是一些机械的简单产物。这种双重的观点能够同时呼应科学家和天主教会的观点。在当时具有积极意义 [13] 。
    人物轶事编辑
    笛卡尔死后坟墓遭盗墓贼挖掘,其头骨几经易手现存于法国巴黎夏乐宫(Palais de Chaillot)人类博物馆(Musée de l’Homme)。
    笛卡尔坚决否认他与德国蔷薇十字会之间的关系,他所留下的相关文件中却有许多巧合,他不承认可能是因为当时的教会。
    笛卡尔将早期在整合几何与代数的研究与贝克曼一同分享,且曾说:“如果有机会,你不嫌弃用到我的研究或想法时,你大可表示那是你的想法。”这只是他过于客气与谦虚的态度罢了,但贝克曼却真的当作是自己的功劳。这使笛卡尔备受侮辱,所以他谴责贝克曼的“愚蠢和不学无术”。
    社会评价编辑
    笛卡尔在哲学上是二元论者,并把上帝看作造物主。但笛卡尔在自然科学范围内却是一个机械论者,这在当时是有进步意义的。
    笛卡尔是欧洲近代哲学的奠基人之一,黑格尔称他为“近代哲学之父”。他自成体系,熔唯物主义与唯心主义于一炉,在哲学史上产生了深远的影响。
    笛卡尔的方法论对于后来物理学的发展有重要的影响。他在古代演绎方法的基础上创立了一种以数学为基础的演绎法:以唯理论为根据,从自明的直观公理出发,运用数学的逻辑演绎,推出结论。这种方法和培根所提倡的实验归纳法结合起来,经过惠更斯和牛顿等人的综合运用,成为物理学特别是理论物理学的重要方法。作为他的普遍方法的一个最成功的例子,是笛卡尔运用代数的方法的来解决几何问题,确立了坐标几何学即解析几何学的基础。
    笛卡尔的方法论中还有两点值得注意。
    第一,他善于运用直观“模型”来说明物理现象。例如利用“网球”模型说明光的折射;用“盲人的手杖”来形象地比喻光信息沿物质作瞬时传输;用盛水的玻璃球来模拟并成功地解释了虹霓现象等。
    第二,他提倡运用假设和假说的方法,如宇宙结构论中的旋涡说。此外他还提出“普遍怀疑”原则。这一原则在当时的历史条件下对于反对教会统治、反对崇尚权威、提倡理性、提倡科学起过很大作用 。
    笛卡尔堪称17世纪及其后的欧洲哲学界和科学界最有影响的巨匠之一,被誉为“近代科学的始祖”。
    百度搜索:笛卡尔-----百度百科:笛卡尔(法国哲学家、数学家和科学家)

    展开全文
  • js 笛卡尔积算法的实现代码,据对象或者数组生成笛卡尔积,并介绍了一个javascript多重数组笛卡尔积的例子,以及java实现笛卡尔积的算法与实例代码。 一、javascript笛卡尔积算法代码 例子,根据对象或者数组生成...
  • 笛卡尔

    2016-01-03 20:57:40
    笛卡尔笛卡尔树又称笛卡儿树,在数据结构中属于二叉树的一种。 笛卡尔树结构由Vuillmin在解决范围搜索的几何数据结构问题时提出的,从数列中构造一棵笛卡尔树可以线性时间完成,需要采用基于栈的算法来找到在...

    笛卡尔树简单介绍

    笛卡尔树又称笛卡儿树,在数据结构中属于二叉树的一种。
    可以这么说:笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为key,一个为value。光看key的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的key都比它小,右子树都比它大;光看value的话,笛卡尔树有点类似堆,根节点的value是最小(或者最大)的,每个节点的value都比它的子树要小(或者大)。

    笛卡尔树定义

    无相同元素的数列构造出的笛卡尔树具有下列性质:
    1、结点一一对应于数列元素。即数列中的每个元素都对应于树中某个唯一结点,树结点也对应于数列中的某个唯一元素
    2、中序遍历(in-order traverse)笛卡尔树即可得到原数列。即任意树结点的左子树结点所对应的数列元素下标比该结点所对应元素的下标小,右子树结点所对应数列元素下标比该结点所对应元素下标大。
    3、树结构存在堆序性质,即任意树结点所对应数值大(或小)于其左、右子树内任意结点对应数值(即根节点为其子树的最值)
    根据堆序性质,笛卡尔树根结点为数列中的最大/小值,树本身也可以通过这一性质递归地定义:根结点为序列的最大/小值,左、右子树则对应于左右两个子序列,其结点同样为两个子序列的最大/小值。因此,上述三条性质唯一地定义了笛卡尔树。若数列中存在重复值,则可用其它排序原则为数列中相同元素排定序列,例如以下标较小的数为较小,便能为含重复值的数列构造笛卡尔树。

    笛卡尔树的实现

    O(N^2)算法实现

    ①排序之后直接构造笛卡尔树的方法:
    首先将节点序列按照key从小到大排序,然后按照顺序插入节点,注意到排序之后,插入的节点的key值一定是树中最大的,所以只需查找最右端的路径,找到一个节点A[i]的value大于待插入节点的value,同时A[i]->right的value小于待插入节点的value。找到之后,只需将A[i]的right指向待插入的节点,A[i]的right原来指向的节点赋值给待插入节点的left指针。注意到查找最右路径的方向,如果从下到上查找,复杂度比较容易分析O(N)(因为查找过的节点必然会旋转到某个节点的左子节点,因此每个查找过的节点只会被查找一次),如果从上倒下,比较复杂(和最右端的最终的路径长度有关吧),会超过N,甚至更高,可能为O(N^2)。
    ②利用排序加左旋的方法:
    就是一样先排序,然后使用treap插入节点,可以发现,所有的旋转都为左旋。这种方法也TLE了,这种方法有一个很重要的意义,就是分析了上个方法中从上到下扫描的复杂度。因为这两种方法的效率是等价的,都TLE。

    O(N)算法实现

    我们将要将A的元素依次插入笛卡尔树C。每次插入都可能使树的形态发生变化。为了在O(N)的时间内完成整个插入过程,考虑C的右链,即根结点、根结点的右儿子、根结点的右儿子的右儿子……组成的链。注意这些元素的下标和值都是递增的。下标最大,即将要插入的元素A[i]一定是新树右链的最后一个元素。原来的右链中,值比A[i]大的元素在新树中不再属于右链,这些元素组成的链成为A[i]的左子树的右链;原来右链中的其它元素加上A[i]组成了新的右链。初看起来,寻找分界点的最佳方法是O(logN)时间的二分查找;但是对于整个过程来说,O(NlogN)的时间复杂度不是最优的。关键在于一旦一个元素比A[i]大,它就从右链中被永久地移除了。如果按照从后到前的顺序判断一个元素是否大于A[i],则每次插入的时间复杂度为O(k+1),k为本次插入中移除的右链元素个数。因为每个元素最多进出右链各一次,所以整个过程的时间复杂度为O(N)。
    用一个栈结构维护右链元素的下标,上述过程可以很容易地实现。(见下面代码部分)

    笛卡尔树

    笛卡尔树又称笛卡儿树,在数据结构中属于二叉树的一种。

    笛卡尔树结构由Vuillmin在解决范围搜索的几何数据结构问题时提出的,从数列中构造一棵笛卡尔树可以线性时间完成,需要采用基于栈的算法来找到在该数列中的所有最近小数。由此可知,笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围top k查询(range top k queries)等问题上有广泛应用。它具有堆的有序性,中序遍历可以输出原数列。

    笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为key,一个为value。光看key的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的key都比它小,右子树都比它大;光看value的话,笛卡尔树有点类似堆,根节点的value是最小(或者最大)的,每个节点的value都比它的子树要大。

    构造笛卡尔树的过程:

    使用数据结构栈,栈中保存的始终是右链,即根结点、根结点的右儿子、根结点的右儿子的右儿子……组成的链
    并且栈中从栈顶到栈底key依次减小


    如果按照从后到前的顺序判断一个元素是否大于A[i],则每次插入的时间复杂度为O(k+1)
    k为本次插入中移除的右链元素个数。因为每个元素最多进出右链各一次,所以整个过程的时间复杂度为O(N)。

    从前往后遍历A[i],
    1.对于每一个A[i],从栈中找出(从栈顶往栈底遍历,或者从数组后往前遍历)第一个小于等于A[i]的元素
    2.如果找到,i.parent为sta[k],同时sta[k].r=i,即i为sta[k]的右子树,
    3.如果栈中存在比A[i]大的元素 这些元素肯定是出栈了,这个问题最后的代码统一表示。
    同时,sta[k+1].parent=i; i.l=sta[k+1] 即sta[K+1]为i的左子树
    4.最后i入栈,比i大的A[i]都自动出栈了。


    例子如下。
    0 1 2 3 4 5 6 7 8  9      .....key
    3 2 4 5 6 8 1 9 10 7      .....A,value

    stack
    0 1 2 3 4 5 6 7 8  ...num
    0
    1 2 3 4 5
    6 7 8
    6 9
    最后sta[0].parent=-1;  为根节点 即 6 为根节点。

    这里给出的是索引从0开始的[0,n-1] 
    如果题目给出的是[1,n],可以减一回到[0,n-1]上

    代码:

    #include <iostream>
    #include <queue>
    using namespace std;
    const int maxnum=10;
    
    int a[maxnum];
    struct node
    {
        int key;
        int parent;
        int l;
        int r;
    }tree[maxnum];
    
    
    void Init()
    {
        int i;
        for(i=0;i<maxnum;i++)
            tree[i].parent=tree[i].l=tree[i].r=-1;  //初始化
    }
    
    int Build_Tree()
    {
        int i,top,k;
        int stack[maxnum];
        top=-1;
        for(i=0;i<maxnum;i++)
        {
            k=top;
            while(k>=0 && a[stack[k]]>a[i])  //栈中比当前元素大的都出栈
                k--;
    
            if(k!=-1)  //find it,栈中元素没有完全出栈,当前元素为栈顶元素的右孩子
            {
                tree[i].parent=stack[k];
                tree[stack[k]].r=i;
            }
            if(k<top)    //出栈的元素为当前元素的左孩子
            {
                tree[stack[k+1]].parent=i;
                tree[i].l=stack[k+1];
            }
    
            stack[++k]=i;//当前元素入栈
            top=k;//top指向栈顶元素
        }
        tree[stack[0]].parent=-1;//遍历完成后的栈顶元素就是根
        return stack[0];
    }
    
    void inorder(int node)
    {
       if(node!=-1)
       {
           inorder(tree[node].l);
           cout<<tree[node].key<<endl;
           inorder(tree[node].r);
       }
    }
    
    void levelorder(int node)
    {
        queue<int> q;
        q.push(node);
        while(!q.empty())
        {
            int k=q.front();
            q.pop();
            cout<<tree[k].key<<endl;
            if(tree[k].l!=-1)
                q.push(tree[k].l);
            if(tree[k].r!=-1)
                q.push(tree[k].r);
        }
    }
    
    int main()
    {
        int i;
        Init();
        for(i=0;i<maxnum;i++)
        {
            cin>>a[i];
            tree[i].key=a[i];
        }
    
        int root=Build_Tree();
    
        //inorder(root);
        //levelorder(root);
        return 0;
    }
    
    /*
    3 2 4 5 6 8 1 9 10 7
    */


    展开全文
  • 笛卡尔(Descartes) 概要 笛卡尔(Descartes)是ROS-Industrial项目,用于对未定义的笛卡尔轨迹执行路径规划。 动机 当前的MoveIt / ROS接口专注于拾取pick和放置place应用。在典型的拾取和放置应用中,起始...
  • 笛卡尔树模板

    2019-09-07 20:40:09
    本文只介绍基础的建树,没有深入的东西。(你懂我意思吧) 笛卡尔树也是二叉树+堆 一、二叉树与堆的概念 可以看看我这篇,顺便把treap学了也可以,简单哒 二、笛卡尔树的结构 笛卡尔树可以按顺序插入一个数组...
  • 主要介绍了javascript笛卡尔积算法实现方法,实例分析了笛卡尔积算法的javascript实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 笛卡尔网格生成方法

    2014-08-06 14:53:15
    笛卡尔网格是CFD计算中最早使用,也是最易生成的一种网格,它不同于传统的贴体网格,笛卡尔网格中的单元基本按照笛卡尔坐标方向(X,Y,Z)排列,流场可以采用有限体积法进行模拟计算,在与模型表面相交的单元处需要...
  • 主要介绍了JavaScript 计算笛卡尔积实例详解的相关资料,这里附有实例代码,需要的朋友可以参考下
  • 主要介绍了PHP笛卡尔积实现算法,涉及php数组的递归、遍历、判断、拼接等相关操作技巧,需要的朋友可以参考下
  • 主要介绍了Python实现求笛卡尔乘积的方法,结合实例形式分析了Python计算笛卡尔乘积的原理与实现技巧,需要的朋友可以参考下
  • js 笛卡尔积算法的实现代码,据对象或者数组生成笛卡尔积,并介绍了一个javascript多重数组笛卡尔积的例子,以及java实现笛卡尔积的算法与实例代码。 一、javascript笛卡尔积算法代码 例子,根据对象或者数组生成...
  • 笛卡尔心形曲线

    2015-08-27 21:40:00
    1650年,斯德哥尔摩的街头,52岁的笛卡尔邂逅了18岁的瑞典公主克里斯汀。 那时,落魄、一文不名的笛卡尔过着乞讨的生活,全部的财产只有身上穿的破破烂烂的衣服和随身所带的几本数学书籍。生性清高的笛卡尔从来不...
  • 主要介绍了PHP实现数组的笛卡尔积运算,结合实例形式分析了php数组的笛卡尔积运算相关实现与使用技巧,需要的朋友可以参考下
  • 主要介绍了Java笛卡尔积算法原理与实现方法,结合实例形式较为详细的分析了笛卡尔积算法的原理及java定义与使用笛卡尔积算法的相关操作技巧,需要的朋友可以参考下
  • 本文给大家介绍JS实现的笛卡尔乘积之商品发布的相关内容,涉及到js笛卡尔积算法的相关知识,本文介绍的非常详细,具有参考价值,感兴趣的朋友一起学习吧
  • 关于笛卡尔积 理解: 1、 不写on肯定是笛卡尔积,on条件复杂的也会。有on条件,且简单的一般就避免了 2、 a join b on 条件 不加查询条件 肯定会出现笛卡尔积 避免方式就是加上条件 把不符合的去掉 3、介绍一款写SQL...
  • 主要介绍了PHP实现笛卡尔积算法的实例内容以及相关知识点总结,有需要的朋友们参考下。
  • 主要介绍了JavaScript笛卡尔积超简单实现算法,涉及javascript数组遍历、添加简单操作技巧,需要的朋友可以参考下
  • 模板:笛卡尔

    2021-08-24 23:53:43
    介绍 笛卡尔树是一种非常特殊的二叉搜索树。每个节点有两个信息x和y。如果只考虑 x,它是一棵二叉搜索树,如果只考虑 y,它是一个小根堆。 实现 按照y升序插入 显然应该插入到一条极右链上 但为了维护x二叉搜索树的...
  • 笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。 简单的说就是两个集合相乘的结果。...这篇文章主要给大家介绍了利用php计算多个集合的笛卡尔积的方法实例,需要的朋友可以参考借鉴,下面来一起看看吧。
  • 主要介绍了PHP基于自定义函数生成笛卡尔积的方法,结合具体实例形式分析了php使用数组运算模拟集合实现笛卡尔积运算的相关操作技巧,需要的朋友可以参考下
  • SQL笛卡尔积查询的典型应用

    千次阅读 2019-03-18 21:39:45
    简介: 介绍一个利用SQL笛卡尔积查询来简化代码的典型应用 我的日常工作中经常用到SQL,但没用过笛卡尔积查询,以前一直以为他只会出现在逻辑出错的时候,而且通常意味着大量的资源开销,不过今天有幸能够使用一...
  • 我已经问过一些有关视口计算和其他摄影机问题的问题,Aldream在此主题中对此进行了解释但是,我目前没有任何有用的值,我认为这取决于我对笛卡尔坐标空间的计算。我有几种不同的方法可以将纬度,经度和海拔高度转换...
  • SQL连接——笛卡尔

    2012-08-07 14:39:04
    最近在用几张表连接起来查询的时候发现有时会得到一模一样的数据,有时却不会,为了搞清楚这是怎么回事,特地学习了一下关于笛卡尔积与连接相关的知识。 所谓的笛卡尔积,也就是笛卡尔乘积,因此如果是普通的两张表...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,047
精华内容 7,218
关键字:

关于笛卡尔的介绍