您好,欢迎光临有路网!
程序员数学从零开始
QQ咨询:
有路璐璐:

程序员数学从零开始

  • 作者:孙博(@我是8位的)
  • 出版社:北京大学出版社
  • ISBN:9787301168554
  • 出版日期:2020年08月01日
  • 页数:336
  • 定价:¥79.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    本书从人们身边常见的整数讲起,逐步深入,介绍了数论、计数、图论、机器学习等领域的一些典型算法及其原理,尤其是算法背后的数学原理,可以让读者对这些算法有更深入的理解。 本书分为11章,涵盖的主要内容有整数的素因子分解、辗转相除、更相减损、扩展欧几里得算法和Karastuba算法; 密码体制和RSA体制的加密原理;递归与分治算法、动态编程技术、特征方程和特征根;算法复杂度分析、大O和大Θ的意义;穷举法、深度优先搜索、广度优先搜索、贪心策略;A∗搜索算法;遗传算法;网络流、增广路径*流算法;*小二乘法的原理、线性回归、非线性回归;基于正态分布的异常检测、局部异常因子算法;P/NP问题。 本书内容通俗易懂,案例丰富,实用性强,立足于详细解释算法的原理,尤其是算法背后的数学原理,适合于有一定 编程基础和算法基础的读者进阶阅读,也适合 Python程序员、Java程序员等其他编程爱好者阅读。
    文章节选
    第1章重新认识整数(整数分解) 整数的概念来源于计数,它带有很多朴素、自然的性质。本章从整数分解的角度重新看待整数,详解了整数的素因子分解及其应用,并通过欧几里得算式介绍了辗转相除法、更相减损术和Karastuba算法的原理。
    整数的概念来源于计数,它带有很多朴素、自然的性质。结绳记事(图11)大概是整数*早的应用,它发生在语言产生以后、文字出现之前的漫长岁月里。《周易·系辞》云:“上古结绳而治”;《春秋左传集解》云:“古者无文字,其有约誓之事,事大大其绳���事小小其绳,结之多少,随扬众寡,各执以相考,亦足以相治也。”
    再看汉字中的“数”,从娄从攴(图12)。攴是以手持杖,娄是打了很多绳结的木棍,合起来就是拿着手杖去数绳子上有多少个绳结。数者,结绳而记之也。
    图11结绳记事图12古汉字中的“数”
    可以毫不夸张地说,整数奠定了数学的基石。19世纪的数学家克罗内克(Kronecker)曾经说过:“上帝创造了整数,其余都是人做的工作。”整数的定义如此简单自然,以至于总是让人忘记它背后的复杂。本章将从分解的视角重新认识整数。
    1.1学生的代码和老师的代码
    编程总是充满趣味,在学习了判断和循环后就可以编写一些有趣的代码。记得我初学编程时,老师曾出过一个题目:找出两个数的*大公约数。当时我在黑板上写下了自己的实现方式。
    代码11学生的代码01def gcd_stu(a, b):02if a < b:03a, b = b, a04result = \[i for i in range(1, b 1) if b %i == 0 and a %i == 0\]05return result.pop()运行结果是正确的。回到座位上,我为此高兴了2分钟。
    后来老师写出了另一个实现。
    代码12老师的代码01def gcd_teacher(a, b):02if a < b:03a, b = b, a04return a if b == 0 else gcd_teacher(b, a %b)我的**反应是:“嗯?”
    遗憾的是,我当时并没有深究这段代码,只是简单地记住了这种方法,反正都是交给计算机计算,何必在乎快慢呢?
    后来学了数据结构,知道了用大O评估算法效率,我这才开始重新审视那段寻找*大公约数的代码——它实际上使用了传说中的“辗转相除”,要真正弄清楚其来龙去脉,还要从整数说起……
    1.2整除和余数
    我们都曾经用笨拙的声音从1数到10,这大概是人生中**次接触数学,稍大一点后懂得了零的概念,再后来知道了还有负数……这些美好的记忆都有整数相伴左右。随着年龄的增长和知识的扩充,我们知道了更多关于整数的知识,其中就包括整除和余数。
    1.2.1欧几里得算式
    数学中是以数轴分段的方式定义整除的,如果n是一个正整数,那么可以用n的倍数将数轴分成很多段,如图13所示。
    图13用n的倍数将数轴分成很多段
    如果将另一个整数m放在数轴上,那么m将正好位于qn和(q 1)n之间,其中q也是一个整数,如图14所示。
    图14m位于qn和(q 1)n之间
    如果m正好是n的整数倍,那么m=qn;否则可以写成m=qn r的形式,其中qn是位于m左侧*近的n的整数倍,r是qn到m的整数距离。如果把两种情况合并,那么对于任意整数m和n,且n≠0,总是可以写成下面的形式:
    m=qn r,0≤r<n,n≠0
    对于特定的n来说,m的表达是**的,这种表达式叫作欧几里得算式,也叫作除法算式。
    看上去很复杂,其实欧几里得算式有更常见的描述:如果m和n都是整数,且n≠0,那么总是存在整数q和r,0≤r<n,使得:
    m÷n=q……r
    其中q是商,r是余数,如果r=0,则称m能够被n整除,或称n能整除m,记作n|m,其中“|”是整除符号。可见,欧几里得算式只不过是从代数上解释了整除和余数。
    乘法和除法互为逆运算,把欧几里得算式写成乘法就变成了m的**的表达式:
    m=qn r
    示例11找出q和r(1)m=10,n=3;
    (2)m=3,n=10;
    (3)m=-11,n=5。
    前两个比较简单。
    (1)10=3×3 1,q=3,r=1。
    (2)3=10×0 3,q=0,r=3。
    图15在计算机
    上计算-11%5第三个可能会出点差错。
    (3)-11=5×(-2)-1,q=-2,r=-1。
    在计算机上计算-11%5,结果如图15所示。
    看来计算机认为是另一种答案:-11=5×(-3) 4,q=-3,r=4。
    整除的定义终于显现出作用了,余数的取值范围是0≤r<n,在(3)中,r=-1不满足这个条件,所以(3)的正确答案是q=-3,r=4。
    1.2.2整除的性质
    如果a、b、c都是整数,则有以下3个被人们熟知的关于整除的性质。
    性质1.1 如果a|b且a|c,则a|(b c)。
    性质1.2 如果a|b,则a|cb。
    性质1.3如果a|b且b|c,则a|c。
    注:由于0不能作为除数,所以a|b包含的默认条件是a≠0。
    此外,还有一个推论:如果a、b、c都是整数,当a|b且a|c时,对于任意整数m和n,都有a|(mb nc)。
    除法和乘法互为逆运算,这些性质和推论其实都是根据乘法的分配律和结合律推导而来的,以性质1.1为例:
    ab and acb=pa,c=qa
    b c=pa qa=(p q)a
    p q是一个整数,根据欧几里得算式对整除的定义,得出a|(b c)。
    目录
    第1章重新认识整数(整数分解) 1.1学生的代码和老师的代码2 1.2整除和余数3 1.3素数5 1.4整数分解8 1.5*大公约数11 1.6青蛙约会16 1.7*小公倍数20 1.8哥德巴赫猜想猜的是什么?22 1.9整数比自然数更多吗?23 1.10全体实数比±1之间的实数更多吗?23 1.11大整数的乘法24 1.12小结29 第2章密码疑云(数论) 2.1密码简史31 2.2被窃听与被冒充33 2.3密码体制34 2.4数字签名38 2.5数字证书40 2.6RSA体制40 2.7攻破心的壁垒49 2.8来自量子计算的挑战50 2.9小结51 第3章递归的逻辑(计数) 3.1递归关系式54 3.2不断繁殖的兔子——递归关系模型54 3.3递归关系的基本解法57 3.4递归算法61 3.5动态编程62 3.6递归与分治64 3.7打印一棵二叉树69 3.8分形之美73 3.9米诺斯的迷宫78 3.10小结87 第4章O和大Θ(算法复杂度) 4.1算法分析89 4.2运行比较法91 4.3数学分析法91 4.4大O 96 4.5大Θ101 4.6二分查找有多快?103 4.7跨床大桥能完成吗?105 4.8冒泡排序真的慢吗?108 4.9小结112 第5章搜索的策略(搜索算法) 5.1盲目搜索114 5.2八皇后问题115 5.3贪心策略122 5.4小偷的背包122 5.5骑士旅行126 5.6觐天宝匣上的拼图134 5.7小结142 第6章*短路径(A搜索) 6.1A搜索144 6.2通往基地的捷径147 6.3再战觐天宝匣162 6.4小结170 第7章退而求其次(遗传算法) 7.1小偷又来了172 7.2遗传算法172 7.3椭圆中的*大矩形184 7.4宿管员的烦恼189 7.5小结211 第8章网络流(图论) 8.1基本概念和术语213 8.2寻找*大流218 8.3补给线上的攻防战227 8.4姜子牙的粮道232 8.5缓解拥堵的高速公路234 8.6**飞行员的匹配236 8.7小结239 第9章拟合的策略(*小二乘法) 9.1问题的源头241 9.2*小二乘法242 9.3线性回归249 9.4非线性问题252 9.5中国人口总量的线性拟合260 9.6正态分布的拟合曲线264 9.7小结267 第10章异常检测(半监督学习和无监督学习) 10.1监督学习不灵了269 10.2基于一元正态分布的异常检测270 10.3基于多元正态分布的异常检测276 10.4局部异常因子算法285 10.5小结295 第11章浅谈P/NP问题(非确定性问题) 11.1水浒英雄卡的故事297 11.2这些奇怪的名字298 11.3如何面对NP问题301 11.4如果P=NP305 11.5小结306 附录 A同余和模运算307 B切割图片的代码308 C拉格朗日乘子法310 D多元线性回归的推导过程311 E多元函数的泰勒展开314 F*大似然原理315

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外