zoukankan      html  css  js  c++  java
  • 好玩的数学--程序员篇

    Computer - ComMath

    第1章 0的故事--无即是有

    需求--问题:为什么我们需要发明计数法呢?

    数越大就越难处理,将大问题分解成小“单元”;

    方法论之一:“问题分解法”;

    数字本身即是容器,并无实际意义;真正有意义的在于使用者;

    进制

    2进制:机器数字;逢二进位;两种数字;

    10进制:阿拉伯数字;常用进制,适用我们使用手指个数;

    --60进制:罗马数字;逢60进位;实例:时间应用60进制;

    应用:进制数转换;

    0

    大多数机器对于0的处理都有自己的一套方法论,会进行特殊处理;

    指数--10的0次方是多少?0次方的意义,基数的几分之一;

    作用:占位--统一标准,简化规则;实例:吃药问题;

    第2章 逻辑--真与假的二元世界

    机器逻辑--布尔逻辑;

    AI逻辑--模糊逻辑;实例:偶尔;经常;非常频繁; 设计对应数值:0.1;0.5;0.9;

    需求--问题:为何逻辑如此重要?

    逻辑是消除歧义的工具;

    我们平时使用的语言--自然语言,是极易产生歧义的;

    规格说明书(记述如何编写程序的文件)一般都是用自然语言描述的;因此,程序员必须走出自然语言的歧义的迷宫,谨慎解读规格说明书,确定其正确的意义;

    “逻辑”是消除自然语言的歧义、严密准确的记述着事物的工具;假如尝试使用逻辑语言(逻辑表达式)来重新解释规格说明书,有时就会发现其中存在歧义或矛盾的地方;另外,借助逻辑还能够将复杂的规格说明书转换成简单易懂的形式;

    程序员处于人类和计算机的分界线上;只要做到逻辑性的思考和表达,就不会为常识和感情所困,从而写出符合要求的规格说明和程序;程序员应该努力将问题转化为程序,让计算机有活可干;

    乘车费用问题--兼顾完整性和排他性;
    学习逻辑的基本思路:兼顾完整性和排他性;

    命题及其真假--能够判断对错的陈述句叫做命题;

    命题正确时,该命题为“真”;反之,命题不正确时,称该命题为“假”;也将“真”称作 true ,“假”成为 false;

    有没有“遗漏”;
    有没有“重复”;
    画一根数轴辅助思考;
    确认没有“遗漏”和“重复”是相当重要的。在查看乘车费用规则这类说明时,在阅读文字的同时,最好像下面那样 画一根数轴;

    注意边界值
    通过数轴,我们可以看到边界值是需要注意的;

    兼顾完整性和排他性
    没有“遗漏”,即具备完整性;
    没有“重复”,即具备排他性;

    使用if语句分解问题
    逻辑的基本是两个分支;If-else;true or false

    真值表
    真值表没有遗漏和重复,兼顾了完整性和排他性;

    文氏图

    与 或 非 异或 蕴含 相等;

    德.摩根定律
    “非A”或者“非B”,和非“A与B” 是等价的;
    “非A”并且“非B”,和非“A或B” 是等价的;

    对偶性
    分别将true和false、A和非A、且和或进行互换,就能够得到该逻辑表达式的否定式;

    卡诺图

    包含未定义的逻辑
    true 真
    false 假
    undefined 未定义
    三值逻辑

    方法论之二:布尔逻辑;与或非;

    第3章 余数--周期性和分组

    运用余数,大数字的问题就能简化成小数字问题;

    第4章 数学归纳法--如何征服无穷数列

    1.基底的证明;

    2.归纳的证明;

    第5章 排列组合 --解决计数问题的方法
    加法法则
    乘法法则
    置换
    阶乘
    排列
    树形图
    组合
    置换和排列都要考虑顺序,不考虑顺序的方法--组合;

    第6章 递归 --自己定义自己
    递归和归纳的本质是相同的,都是“将复杂问题简化”;

    斐波那契数列
    F(0)=0 
    F(1)=1
    F(n)=F(n-1)+F(n-2) n>=2,n属于实数

    第7章 指数爆炸 --如何解决复杂问题
    指数爆炸是指数字呈爆炸式增长;

    二分法查找--利用指数爆炸进行查找;

    密码 --利用指数爆炸加密;
    现在使用的密码,是俗称“秘钥”的随机字节流来加密的;

    总结:

    If判断的语句块,用于形成的逻辑分支;

    for进行的语句块,用于解决重复性问题;

    方法论之一:“问题分解法”--数越大就越难处理,将大问题分解成小“单元”;

    方法论之二:逻辑--布尔逻辑;与或非;等等;模糊逻辑;

    参考文献

    --《程序员的数学》.(日)结城浩

    DedoChen (原创)仰望星空 砥砺前行; 如需转载,请注明出处,谢谢!
  • 相关阅读:
    【NLP-09】textCNN
    【NLP-08】textRNN
    【NLP-07】GloVe(Global Vectors for Word Representation)
    【NLP-06】fastText文本分类算法
    【NLP-05】Doc2vec
    mongo用户认证
    find直接copy大于某一个时间小于某一个时间的文件
    es的settings设置详解
    py笔记第一篇
    Linux inode节点使用率过大处理办法
  • 原文地址:https://www.cnblogs.com/DedoChen/p/8495619.html
Copyright © 2011-2022 走看看