精华内容
下载资源
问答
  • 哲学思考之矛盾分析法

    千次阅读 2017-11-18 15:41:01
    QQ技术交流群:129518033     一.为什么每个人都应该学点哲学 ...哲学不是成功学,但是它可以教你如何思考哲学对于你最大的意义,是让你想出来对你而言最有意义的答案,学会如何用理论支撑自己的观点...

    如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:129518033

     

     

    一.为什么每个人都应该学点哲学

    哲学是一种研究世界的方法,哲学的涉及面很广,但是其实哲学并不高深。说简单点哲学就是做人做事的道理和底线。

    哲学不是成功学,但是它可以教你如何思考。哲学对于你最大的意义,是让你想出来对你而言最有意义的答案,学会如何用理论支撑自己的观点,解释你为什么觉得自己的观点是对的。

     

     

    二.如何来做事

    开始做事情之前,要先分析事情。那么如果来分析事情呢?这里说明一种方法叫矛盾分析法。矛盾分析法是认识世界和改造世界的根本方法。 

    1.什么是矛盾?

    哲学中矛盾就是对立统一。例如,项目的交付和未交付就是矛盾的。

    2.矛盾的特点是什么?

    a.矛盾的统一性和斗争性

    矛盾双方的对立和统一,始终是不可分割的;

    矛盾双方对立统一的关系,既指事物内部存在的这种关系,也指事物之间存在的这种关系。

    b.矛盾的普遍性和特殊性

    矛盾的普遍性是指矛盾存在于一切事物的发展过程中,每一事物的发展过程中都存在着自始至终的矛盾运动,即所谓矛盾无处不在,无时不有。

    矛盾的特殊性是指具体事物在其运动中的矛盾及每一矛盾的各个方面都有其特点。矛盾的特殊性的方法论意义:用不同的方法解决不同的矛盾,也就是具体问题具体分析。

    例如,A项目和B项目都未交付,对于二者来说矛盾的普遍性就是都未交付,矛盾的特殊性就是二者都未交付的原因是不同的,A项目可能是时间太短,人手不够导致未交付,B项目可能是客户很难缠,商务上很难推动。我们运用矛盾的普遍性和特殊性来处理该问题,原则上是要解决项目交付问题,对于每个项目来说,又必须要具体项目具体分析,不可以生搬硬套其他的解决方法,也根据当前项目中存在的特殊性进行解决。

    c.矛盾的不平衡性

    C1.主要矛盾与次要矛盾

    主要矛盾指:在事物发展过程中处于支配地位,对事物发展起决定作用的矛盾;次要矛盾指:处于从属地位、对事物发展不起决定作用的矛盾;关系:主次矛盾相互依赖、相互影响,并在一定条件下相互转化。

    例如,由于项目中有很多的BUG导致项目无法交付,在这些BUG中对于项目交付起决定作用的就是主要矛盾,对于项目交付不起决定作用的就是次要矛盾。例如,程序启动后运行半小时就会崩溃,这就是主要矛盾,必须要解决。再例如,程序中按钮位置不合适,一般而言,这是次要矛盾。作为项目负责人,对于主要矛盾和次要矛盾一定要把握到位,否则可能出现项目无法交付的情况。

    C2.矛盾的主要方面与次要方面

    在一个矛盾中的两个方面,必有一方处于支配地位,起主导作用,此即矛盾的主要方面;而另一方则处于被支配地位,此即矛盾的次要方面。事物的性质主要是由主要矛盾的主要方面决定的。矛盾的主要方面与次要方面既相互排斥,又相互依赖,并在一定条件下相互转化。

    例如,项目的交付和未交付,一般而言都是项目交付时矛盾的主要方面,未交付时矛盾的次要方面。

    3.什么是矛盾分析法?

    “两点论”和“重点论”的统一是矛盾分析法的实质

    “两点论”就是要同时看到主次矛盾、矛盾的主次方面以及主次之间的辩证关系。

    “重点论”就是在看到主次矛盾和矛盾的主次方面的同时,必须分清主次,抓住主要矛盾和矛盾的主要方面,因为事物的性质主要是由主要矛盾的主要方面规定的,不能将主次等量齐观,更不能颠倒主次。

    4.矛盾分析法方法论的意义?

    我们看待一切问题、处理所有事情,既要树立全面观,统筹兼顾,又要善于抓住重点和主流,优先考虑。必须做到坚持“两点论”和“重点论”相统一。

     

    觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!


     

    如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:12951803

     

     

     

     

    展开全文
  • 一个程序员的哲学思考关于编程、关于人生)

    千次阅读 多人点赞 2012-12-17 00:07:11
    但也正因为时间跨度和来源比较杂,就没什么体系性了。 关于编程1.和世界格局一样,软件开发里也是多维力量(商业、公司政治、技术等)在冲突,单纯地斗争和避让其实都不太行。 2.很多时候人们争论是因为都不清楚...

    下面的文字,有的来自自己微博上的记录,有的来自散写的文章,但总的来看都是自身这些年来的一些思考。

    也许对喜欢思考的人有点意思,所以汇总下。

    但也正因为时间跨度和来源比较杂,就没什么体系性了。

     

    关于编程

    1.和世界格局一样,软件开发里也是多维力量(商业、公司政治、技术等)在冲突,单纯地斗争和避让其实都不太行。 


    2.很多时候人们争论是因为都不清楚问题自身。比如:软件工厂可能么?

    软件和工厂都是巨大且模糊的概念,A或B的理解中又为之注入了各自色彩,所以即使讨论激烈,却可能说的根本不是一个东西。

    这对脑子转数快的人有利,因为面对面讨论时,事实上他可以随便立论。 


    3.能否处理模糊的东西是判断力的关键。现代管理里老说用数据说话,就给人一种误解,以为数据是判断的基础,但其实不是。

    如果一切都可量化,判断就半点价值也没有,猪也能干,恰是因为有些东西无法量化,判断才有价值,人才有差异。

    软件里问题尤甚。


    4.如果说抽象是软件设计的核心,那么抽象不充分则是软件要面对的核心问题,可以说本质上讲OO,设计模式等要解决的首先是抽象不充分。

    但抽象本身并非毫无代价,比如:抽象充分的同时,概念数目、层次往往会增加,究到底在设计上追求的其实是最佳均衡点。 


    5.如果说软件是固化的思维,那软件就必然同时具备思维以及思维所承载之物之特质。 

    思维的特质是指:思维的澄清通常是渐进的,思维自身是不可度量的等等。 

    思维承载之物之特质是指:当思维的对象是数学的时候,思维就有数学的特质;当思维的对象是商业逻辑的时候,思维就具有商业逻辑的特质。 


    6.在软件这个江湖里,政治和技术是两个完全不同的维度,最怕的就是政治的问题用技术来解决或者技术的问题用政治来解决,两者十有八九都十分惨烈且结局悲催。 


    7.一个人从代码里看到什么大致取决于其心境。年青的时候往往只能看到技术,可看着看着,就看到了利益纠葛,人生无奈,世道人心。 


    8.对方法论而言,不只要描述方法自身,还要描述方法论自身的能力边界---除非你是对立统一这个级别的普遍真理。也许是因为人心狂妄,所以后者大多时候做的不好。


    9.在软件开发中,数字含义的模糊性会导致使用数字进行评价包含非常多的不公正,这种不公正会对工作意愿构成致命伤害。

    所以个人层面的量化管理在软件开发面前,必然崩溃。


    10人和项目特征决定了开发模型,而非反过来需要根据开发模型来调整人员配置等。这是因为在特定时空背景下,调整人和项目特征的可能性小。


    11.假如人和项目的变化是连续的,那么无疑绝对的瀑布和迭代之间程度的变化也是连续的。

    作为结果,最优的开发模型必然既不是绝对的瀑布,也不是绝对的迭代,而是一种具体情境下的选择,可能偏向于瀑布,也可能偏向于迭代。



    关于人生

    1.比神话像神话的其实是科学,据说宇宙是在那么一个时点突然间就从无到有的,据说人是从微生物一点点变来的,从这个角度看,幻想人长翅膀在天上飞,那是相当的现实了。 


    2.也许思维是神性的残留,在纯思的世界里更容易认知事物的本质,却也真的冰冷无情。

    相比之下,也许真的是诗词更有价值,可惜的是就搞这个的真没战斗力,很容易被KO。

    对个人而言倒是真适合在两者间找个均衡,惟其如此,才能既不失了智慧,也不失了情趣。 


    3.人是靠精神支撑的,所以心无所寄者必然在生活中无所作为,无聊度日。

    而功利来看,所谓寄托者实与道德没半点关系,这点与教科书不同,报效祖国之外,杀人放火也是寄托,只要它是心中一种真实的期望。 


    4.年纪小的时候很容易和人争论这,争论那,目的往往倒不是因为是非,而是单纯因为气盛。

    等真能心平气和听听别人意见,又不盲从时,大致是有点年纪了。等到听什么都如风过耳,保持冷淡时,没准是离挂不远了。 


    5.佛家有个题目叫“万法归一,一归何处”。

    后半句题目难做,大师可以用来消遣,我们不理它,但假如前半句成立,争议就可以分为:0.5和0.2的争议,1和0.5的争议。

    前者是都在盲人摸象,后者是高处不胜寒。 


    6.读书的关键前提是心里有”我“,否则读来读去,自身会脑子乱掉,变为矛盾体。

    想象一下一个人和马克思坐而论道,必然会输,所以信了马克思;再和凯恩斯坐而论道,必然也会输,所以信了凯恩斯。

    所以观点上会一会马克思,一会凯恩斯,但关键是这两个人某些想法可能是对冲的。这就会走火入魔,自废武功。 


    7.凡本质的必然抽象,而具体的则大多偶然。管理公司是具体的,管理学则是抽象的,但管理学更贴近于管理的本质。

    喜欢思考的人往往无视细节,这有助于追索本质,但言语就容易抽象。

    本质在大时间尺度下可以经受得住考验,但确实对成功影响不大,因为成功往往是种偶然。 


    8.一个人如果过度务实,那么就容易迷失于现实而找不到道路;一个人如果过度务虚,那么就容易飘的过高而无法落地。

    所以世上事,最难的往往是尺度的把握,而非一些可见的难度。 


    9.老有很有名的人讨论很奇怪的问题,比如:教管理的教授开的公司挂了是不是就说明理论没用,殊不知这类问题被讨论好几千年了,相当的初级。

    真的是:好多人自以为什么都不信,其实不过是三流哲学家的信徒。 


    10.如果把普通人的人生抽象为一个方程式,那么变量真的不多,10年时光足够把大部分偶然变量都打磨掉,而只剩下作为支撑的必然。

    所差别的只是当事人究竟以何种心态来面对。 


    11.社会大多时候是在灰色中前行。在灰色中看多了白的会乐观,看多了黑的则会悲观,但社会自身却只是一如既往。 

    ------------------------------------------------------------------------------------------------------------------------------------

    理想流 + 软件 = 《完美软件开发:方法与逻辑》
    理想流 + 人生 = ??
    理想流 + 管理 = ??
    理想流 = 以概念和逻辑推演本质,追求真理。


    展开全文
  • 哲学思考之否定之否定规律

    千次阅读 2017-11-18 15:54:47
    爱因斯坦(光电效应,对于时间的平均值,光表现为波动;对于时间的瞬间值,光表现为粒子性) 4.一切物质具有波粒二象性。德布罗意(物质波) 不确定性... 三.否定之否定规律方法论运用 否定之否定规律...

    如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:129518033

     

     

    一.什么是否定

     

     

    1.1.形而上学的否定

     

    形而上学的否定观认为否定是外在的、主观任意的否定;否定是绝对的否定,是不包含肯定的否定。他割断了事物的联系,使发展中断。

     

    肯定一切,就是只看到好的,看不到坏的,只能赞扬,不能批评。否定一切,则认为一切都不好,一无是处。这两种态度都混淆了是非界限,违背了实事求是的原则。

    1.2.辩证的否定

    1.辩证的否定是事物的自我否定,是事物内部矛盾运动的结果(外部矛盾(外因)是事物发展的必不可少的条件,内部矛盾(内因)是事物发展的根本动力)。

    2.辩证的否定是事物发展的环节。只有经过否定,旧事物才能向新事物转变(事物发展不可或缺的环节,逃避并不能躲过这个环节)。

    3.辩证的否定是新旧事物联系的环节,新事物孕育产生于旧事物,新旧事物是通过否定环节联系起来的(事物发展的不同过程之间是有联系的)。

    4.辩证否定的实质是“扬弃”,即新事物对旧事物既批判又继承,既克服其消极因素又保留其积极因素(取其精华,去其糟粕)。

    二.什么是否定之否定规律

    否定之否定规律,揭示了事物由肯定到否定,再到否定之否定的发展过程,它是事物完善自己、发展自己的一个有规律的过程,在这个过程中事物的发展表现出周期性,即每一个事物的发展都是从肯定到否定,再由否定到新的否定,似乎又回到了原来的起点,即完成了一个周期。在这一周期中,事物的发展经历了两次否定,每一次否定都不是简单的抛弃,而是把前阶段发展的一切成果中有用的成分保留了下来。因此,在事物发展的否定之否定即新的肯定阶段,并不是简单地再现原事物,简单地回到原来的出发点,而是形式的回复、内容的发展,是一个前进和上升的发展过程。

    事物发展的总趋势是前进的、上升的,而道路却是迂回曲折的。之所以说总趋势是前进的,正是因为否定不是“抛弃”,而是“扬弃”,是在肯定一部分的基础上再发展(在肯定中看到否定,在否定中看到肯定;取其精华,去其糟粕),是集中了前两个阶段的积极成果后的更加完善。而之所以说发展是曲折的,是因为事物的发展是事物内部矛盾斗争推动的,其中有暂时的停顿或倒退,但是经过曲折终将为事物的发展开辟道路。

     

    光的波粒二象性

    1.光是一种粒子。牛顿(光微粒说)

    2.光是一种波。惠更斯(光波动说)、托马斯·杨(双缝实验)、菲涅耳、麦克斯韦(麦克斯韦方程组)、赫兹(发射并接收到麦克斯韦预言的电磁波)

    3.光具有波粒二象性。爱因斯坦(光电效应,对于时间的平均值,光表现为波动;对于时间的瞬间值,光表现为粒子性)

    4.一切物质具有波粒二象性。德布罗意(物质波)

    不确定性...

    三.否定之否定规律方法论运用

    否定之否定规律揭示了事物发展的方向和道路。由于事物发展是前进性和曲折性的统一,我们必须承认事物最终是向前发展的,同时我们也必须承认事物发展过程是曲折的,因此我们就不能奢望什么事情都是一帆风顺的,也不能逃避事物发展过程中遇到的困难(事物发展的前进性决定了逃避是无法解决问题的,问题迟早还是会出现的),无论目前事物发展顺利或者不顺利,都要坚持辩证否定观来分析事物,这样才能最终开辟出前进的道路。 

    举例,善于听取他人的意见

    人最容易犯的错误,就是过于相信自我,听不进别人的意见。在团队中,一些人很容易产生这样的心理:工作经历差不多,业务能力差不多,年龄资历差不多,我为什么要听你的意见呢?

    “一个人所犯的错误首先会被别人看到,而在别人眼中,问题会显得更加客观和透彻。”基于这样的认识,我们大家没有任何理由拒绝别人的批评及建议。

    每个人的人认知不一样,你可能在这个领域认知高于他人,但是他人可能在其他领域认知高于你(否定之否定),所以别人的意见要听,至于采纳还是不采纳,要根据自身的情况进行客观的分析(矛盾的特殊性)

     

    觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!


     如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:12951803

     

    展开全文
  • 算法的哲学思考

    千次阅读 2012-02-19 13:07:15
    1 算法的哲学思考 算法在“在线新华字典”中的解释是“解题方案的准确和完整的描述。是一个有穷的动作步骤序列,只有一个初始态,每个动作只有一个后继动作,一步一步地直到序列结束。是解题从开始到结束的动作全...

    1       算法的哲学思考

    算法在“在线新华字典”中的解释是“解题方案的准确和完整的描述。是一个有穷的动作步骤序列,只有一个初始态,每个动作只有一个后继动作,一步一步地直到序列结束。是解题从开始到结束的动作全过程。”。“算”字的解释是“核计,计数”,“法”字的解释是“体现统治阶段的意志,国家制定和颁布的公民必须遵守的行为规则”。

    1.1  算法的定义

    算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。

    算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。   

    1.2  算法的特征

    一个算法应该具有以下七个重要的特征:   

    (1)     有穷性(Finiteness)

      算法的有穷性是指算法必须能在执行有限个步骤之后终止

    (2)     确切性(Definiteness)

      算法的每一步骤必须有确切的定义;

    (3)     输入项(Input)

      一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

    (4)     输出项(Output)

      一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

    (5)     可行性(Effectiveness)

      算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性);

    (6)     高效性(High efficiency)

      执行速度快,占用资源少;

    (7)     健壮性(Robustness)

      对数据响应正确。

    1.3  算法的复杂度

    同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。

    (1)     时间复杂度

    算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做T(n)=Ο(f(n))   

    因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

    (2)     空间复杂度

     算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

    1.4  算法设计与分析的基本方法

    (1)     递推法

    递推算法是一种用若干步可重复的简运算(规律)来描述复杂问题的方法.   递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。

    (2)     递归法

    程序调用自身的编程技巧称为递归( recursion)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。注意: (1) 递归就是在过程或函数里调用自身; (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

    (3)     穷举法

    穷举法,或称为暴力破解法,是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。例如一个已知是四位并且全部由数字组成的密码,其可能共有10000种组合,因此最多尝试10000次就能找到正确的密码。理论上利用这种方法可以破解任何一种密码,问题只在于如何缩短试误时间。因此有些人运用计算机来增加效率,有些人辅以字典来缩小密码组合的范围。

    (4)     贪心算法

    贪婪算法是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题, 通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯。 

    贪婪算法是一种改进了的分级处理方法。其核心是根据题意选取一种量度标准。然后将这多个输入排成这种量度标准所要求的顺序,按这种顺序一次输入一个量。如果这个输入和当前已构成在这种量度意义下的部分最佳解加在一起不能产生一个可行解,则不把此输入加到这部分解中。这种能够得到某种量度意义下最优解的分级处理方法称为贪婪算法。 对于一个给定的问题,往往可能有好几种量度标准。初看起来,这些量度标准似乎都是可取的,但实际上,用其中的大多数量度标准作贪婪处理所得到该量度意义下的最优解并不是问题的最优解,而是次优解。因此,选择能产生问题最优解的最优量度标准是使用贪婪算法的核心。 一般情况下,要选出最优量度标准并不是一件容易的事,但对某问题能选择出最优量度标准后,用贪婪算法求解则特别有效。最优解可以通过一系列局部最优的选择即贪婪选择来达到,根据当前状态做出在当前看来是最好的选择,即局部最优解选择,然后再去解做出这个选择后产生的相应的子问题。每做一次贪婪选择就将所求问题简化为一个规模更小的子问题,最终可得到问题的一个整体最优解。

    (5)     分治法

    分治法是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。   

    分治法所能解决的问题一般具有以下几个特征:(1) 该问题的规模缩小到一定的程度就可以容易地解决;(2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3) 利用该问题分解出的子问题的解可以合并为该问题的解;(4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。

    (6)     动态规划法

    动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。   

    动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。

    (7)     迭代法

    迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

    (8)     分枝界限法

    分枝界限法是一个用途十分广泛的算法,运用这种算法的技巧性很强,不同类型的问题解法也各不相同。分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索。该算法在具体执行时,把全部可行的解空间不断分割为越来越小的子集(称为分支),并为每个子集内的解的值计算一个下界或上界(称为定界)。在每次分支后,对凡是界限超出已知可行解值那些子集不再做进一步分支。这样,解的许多子集(即搜索树上的许多结点)就可以不予考虑了,从而缩小了搜索范围。这一过程一直进行到找出可行解为止,该可行解的值不大于任何子集的界限。因此这种算法一般可以求得最优解。 

    与贪心算法一样,这种方法也是用来为组合优化问题设计求解算法的,所不同的是它在问题的整个可能解空间搜索,所设计出来的算法虽其时间复杂度比贪婪算法高,但它的优点是与穷举法类似,都能保证求出问题的最佳解,而且这种方法不是盲目的穷举搜索,而是在搜索过程中通过限界,可以中途停止对某些不可能得到最优解的子空间进一步搜索(类似于人工智能中的剪枝),故它比穷举法效率更高。

    1.5  算法的表现形式

    描述算法可以使用自然语言、伪代码、流程图和PAD图等多种不同的方法来描述,其中最普遍的是流程图。

    1.6  算法的分类

    算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法。算法可以宏泛的分为三类:   

    (1)     有限的,确定性算法

    这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。   

    (2)     有限的,非确定算法

    这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。   

    (3)     无限的算法

    是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

     

    2       程序基本运算的认识

    算法=基本运算+运算轨迹+运算数据,即一个算法是由基本运算、运算轨迹

    和运算数据构成。基本运算是程序中的最小的不可分隔的运算原子活动,如付值运算、关系运算等;运算轨迹是指基本运算按顺序、分支、循环三个形式中的一个或几个组合而成的时间序;运算数据是指基本运算中要用到的变量、结构、数组等数据。

       程序中的基本运算包括赋值运算、关系运算、逻辑运算、位运算、位移运算、集合运算等。在程序中基本运算是由表达式构成。表达式由多个(两个或两个以上)标识符用各种运算符号连接起来而成,即表达式=标识符+运算符。  

    2.1  基本运算分类

    2.1.1       赋值运算

    赋值运算表达式=标识符+赋值运算符。赋值运算符分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类。

    2.1.2       算述运算

    算述运算表达式=标识符+算述运算符。算述运算符分为加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)等。

    2.1.3       关系运算

    关系运算表达式=标识符+关系运算符。关系运算符分为大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)等。

    2.1.4       逻辑运算

    逻辑运算表达式=标识符+逻辑运算符。逻辑运算符分为与(&&)、或(||)、非(!)等。

    2.1.5       位运算

    位运算表达式=标识符+位运算符。位运算符分为位与(&)、位或(|)、位非(~)、位异或(^)等。

    2.1.6       位移运算

    位移运算表达式=标识符+位移运算符。位移运算符分为左移(<<)、右移(>>)等。

    2.1.7       条件运算

    条件运算表达式=标识符+条件运算符。条件运算符是一个三目运算符,用于条件求值(?:)。

    2.1.8       特殊运算

    特殊运算表达式=标识符+特殊运算符。特殊运算符分为括号(),下标[],成员(.)等。

    2.2  基本运算的优先级和结合性

    运算符是有优先级的。在表达式中,优先级较高的先于优先级较低的进行运算。 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理。 语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合, 执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。

     

    3       程序中的精典算法

     

     

    4       JAVA语言中的基本运算

     

     

    5       JAVA语言的精典算法实例

     

     

     

     

     

    展开全文
  • 哲学的一些思考

    2016-10-13 22:14:29
    当我们愿意一起去探讨这些哲学问题的时候,说明我们经历了,成长了。奋斗了,领悟了。
  • 计算机的哲学思考

    千次阅读 2010-12-15 22:27:00
    哲学让人们去思考这个世界,没人见过神,但你能说神TA就不存在么?如果存在,那你又有证据么?或许哪天我们去“天堂”的时候就这道答案了,但这个答案已经没有任何的意义了。计算机科学它试着去解释这个世界,去模拟...
  • 语言自举的哲学思考

    千次阅读 2015-08-20 18:50:52
    宗教和哲学: 基督教: 上帝七天创造世界:用六天的时间创造物质的天地,先后创造光、大气、旱地、植物、天体和动物,和人(亚当和夏娃) 道家思想: 老子:道生一,一生二,二生三,三生万物 生物遗传学: 先有鸡...
  • 算法世界的哲学思考

    千次阅读 2011-05-12 15:51:00
    想体味下巧妙,你可以看下《啊哈,灵机一动》google黑板报的《数学之美》 系列,微软的《编程之美》等,大道至简,简单的道理抽象到了一定的高度就适应于任何事物,在我看来数学和哲学都是抽象到一定程度的事物,你...
  • 软件开发的哲学思考

    千次阅读 2004-07-03 12:55:00
    软件开发的哲学思考 来自:计算机世界 枣庄张伟 编译 译者注:这篇文章虽然年代久远(1996年写的,对于IT行业来说用‘久远’二字应该说 还是十分合适的),但读过之后还是为作者的才华所倾倒,这是不可多见的一篇...
  • 一部人类的历史,就是不断劳作以求...假如两者都是必需的,那么闲暇也比劳作更为可取,并是后者的目的,于是应思考,闲暇时人们应该做些什么。”他认为,哲学和科学就是人们在闲暇之时能够做、应该做的事情。我们现在使
  • 网络安全的哲学思考

    千次阅读 2005-01-17 02:58:00
    当然这是从万物有开始必有结束这个哲学的高度来说的。我们在技术的低层看到的是代码,我们从哲学的高度看到的是人性的弱点。从最基本的原理来说,安全是计算机这个物理层次和人这个精神层次的不一致造成的。两者之间...
  • 哲学家就餐问题(dinning philosophers problem): ...有五个哲学家每天都只做两件事情,吃饭(eating)和思考(thinking)。 专心的人做任何事情都会十分专注,哲学家作为一名wiser,自然也不例外,吃饭的时...
  • 哲学思考(多线程)

    千次阅读 2007-05-17 14:28:00
    该问题涉及到五个哲学家,他们交替地进行思考和进餐。他们分别坐在位于一个圆形餐桌周围的五把椅子上,圆桌中央是一碗米饭,餐桌上共有五根筷子,分别摆放在每两个相邻座位的中间。当哲学思考时,他不与其他人交谈...
  • 对于一个非技术用户,Unix哲学(只提供机制,不提供策略)提供了太多的选择,同时也意味着没有选择。例如GUI,有太多的观感可以选择,非技术用户反倒不知如何选择,非技术用户最关心的是如何完成手头上的任务,而不是...
  • 时间的本质 物质/能量/信息是宇宙的基本元素,时间不是,时间是在度量物质/能量/信息状态的变化时,提出的衍生概念。如果万物静止,没有声音,没有光,就没有时间。 秒在物理学中用铯元素的衰变周期来定义。 时间是...
  • Udacity调试课笔记之简化的哲学思考

    千次阅读 2013-10-01 20:17:41
    Udacity调试课笔记之简化的哲学思考  干货无几,水文续之。  嗯,作为一个完全没有哲学概念的人来说,写这么一篇笔记,那绝对比水文还水了。  接上一回简化失败,我们用 Delta 调试法从大堆沙子输入...
  • 关于哲学家进餐问题

    千次阅读 2015-10-20 16:51:26
    操作系统并发和互斥:哲学家进餐问题和理发师问题  1. 哲学家进餐问题:  (1) 在什么情况下5 个哲学家全部吃不上饭?  ...考虑两种实现的方式,如下:  ... /*哲学家正在思考*/  take_fork(i)
  • 哲学思考:不管世界如何变化,拥有什么样的能力才能顺利度过一生。 最近在思考一个问题,随着时间的变迁,污染也许越来越厉害,世界也许会越来越乱,也许美元会消失,国家会消失,也许会战乱,也许房屋会倒塌...
  • 哲学 对人生的思考所涉及的书籍大部分都是在大学期间所读
  • 对计算机科学中的哲学价值的一点思考 -----------从分析 设计和实现说起 任何一门具体科学都有着哲学的影子,计算机科学也不例外.不仅如此,计算机作为一门年轻的自然科学,从几十年前作为数学的一个分支,发展到...
  • 关于Java并发编程的总结和思考

    万次阅读 多人点赞 2015-03-27 10:36:10
    编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常...本文是对并发编程的一点总结和思考,同时也分享了Java 5以后的版本中如何编写并发代码的一点点经验。
  • 站在哲学角度去思考:自组织

    千次阅读 2007-08-06 17:20:00
    本世纪最后30年对关于自组织机制的研究从不同的角度对于这一使人困惑的问题给出了理论上的解释:   耗散结构理论 认为一个远离平衡态的非线性、开放系统通过与外界交换物质和能量,可以提高自身的有序度,降低 熵 ...
  • 哲学

    千次阅读 2011-12-08 05:12:42
    哲学的意蕴就在于它以简单明了的词句表达深刻的意义,人的一生就是哲学的体现和体验。 ------------------------------------------------------- 思想不是你要它来它便来,而是由它自己决定它的来去。 ——...
  • 关于自省的思考

    千次阅读 2008-02-09 11:34:00
    这位朋友提到了自己有时间就在琢磨一些事情。我也是经常在大脑中思考一些问题,很多时候觉得豁然开朗,就是想通了的感觉。但是也有很多时候就陷入一种问题越来越复杂的地步,难以解决。其实自省是一种进步的表现,也...
  • 关于prometheus设计的一些思考

    千次阅读 2017-05-08 07:43:26
    其实设计一套完整的监控系统是挺复杂的,既要考虑的通用性,也要考虑的对各种指标和监控对象的特殊性,业内也并没有规范可言,还有考虑的数据的存储和持久化。prometheus的设计初衷就...下面针对它的设计理念的一些思考
  • 哲学家进餐问题

    千次阅读 多人点赞 2018-04-03 22:06:33
    五个哲学家共用一张圆桌,分别坐在周围的五...经分析可知:放在桌子上的筷子是临界资源,在一段时间内只允许一位哲学家使用,为了实现对筷子的互斥访问,可以用一个信号量表示筷子,由这五个信号量构成信号量数组。s...
  • Unix哲学基础

    千次阅读 2009-02-28 23:43:00
    转自http://blog.chinaunix.net/u2/87718/showart_1838217.html --摘自《UNIX编程艺术》Unix哲学起源于Ken Thompson早期关于如何设计一个服务接口简洁、小巧精干的操作系统的思考,随着Unix文化在学习如何尽可能...
  • 一个关于概率的问题的思考

    千次阅读 2016-10-19 00:00:46
    在解决这个问题的过程中,我认识到这是一个概率相关的问题,即使在过去我曾经设计过类似转盘抽奖这样的应用程序,可我并不认为我真正搞清楚了这个问题,所以想在这篇文章中说说我对概率问题的相关思考。首先,我们来...
  • 哲学家就餐问题

    千次阅读 2015-06-04 15:42:55
    哲学家只有两个动作:要么就餐,要么思考。而且他们之间从不交谈。 当一个哲学家饿了的时候,就拿起盘子左右两边的筷子开始就餐(不能同时拿起两只筷子)。就餐完以后,就把筷子放回盘子左右,继续思考。 由于他们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,877
精华内容 12,350
关键字:

关于时间的哲学思考