·读书笔记」 具体数学

头脑一热,然后买了《具体数学》,差点还买了英文版后来觉得自己英文太烂,还是决定购买的中文版书是前几天到的,从2014.8.1号开始看,坚持每天看一点,学习一点.为了监督自己,决定在这里开一贴,记录我的学习路程。

时间:2014.8.1  地点:家里

今天阅读的是本书的第一章,讲的是递归问题,也是算法的基础,当然这里主要讲的是数学。但是没办法,我是一名ACMer,必须要和程序紧密联系在一起。我觉得明天还需要花一天时间来看这章,需要解决下后面的习题以及再加深点体会。
第一章 递归问题
1.1 汉诺塔1.2 平面上的直线1.3 约瑟夫问题

这里我重点看的是约瑟夫问题,,我想这个问题不用我多说了,基本上学过点数学或者是学过的算法的都知道.最原始的Josephus传说,是计算到最后存活的两个人(Josephus 和 他的朋友)而我们现在考虑的约瑟夫环问题,一般是考虑最后存活下来的人。约瑟夫问题首先给定N,N代表人数,然后给定K,代表每轮K个人,将其杀死。当然还有扩展,给定N,然后指定一个人开始计算,每个人有自己独立的Ki讨论一: N给定,K=2   J(n)代表N = n 时,最后幸存的人的编号 这是书上讨论的,具体的话可以最终推出一个公式 J(2^m + l) = 2*l + 1所以解决这类问题可以达到O(1)的复杂度讨论二: N给定,K给定解决这个问题(包括解决讨论一),都可以用模拟的方法,既可以用数组来模拟,也可以用循环链表来模拟但是时间复杂度为O(N*K)这里学习到了另外一个O(N)的数学解法。就是反向逆推。

具体数学上介绍并且推导了 k = 2 时候的约瑟夫环问题
当然还有当人数为K = M时的情况。
这里我们得到递推公式

假设 k = 3,N = 9,W = 0
第一个被杀的坑定是3(也就是k) W = 3
N 1 2 3 4 5 6 7 8 9         N 4 5 6 7 8 9 1 2
V S S X S S S S S S         V S S X S S S S S 

N 7 8 9 1 2 4 5             N 1 2 4 5 7 8
V S S X S S S S             V S S X S S S

N 5 7 8 1 2                 N 1 2 5 7
V S S X S S              V S S X S

N 7 1 2                     N 7 1
V S S X                     V X S

N 1
V S

再来考虑一般的情况

N 1 2 3 4 5 6 7 8 9         N 4 5 6 7 8 9 1 2
V S S X S S S S S S         V S S X S S S S S
第一次数值4的下标W1 = 3 (W从0开始)
第二次数值4的下标W2 = 0 W1 = ( W2 + 3 ) % 9 = (0 + 3) % 9 = 3  也就是W1 = ( W2 + k ) % N
第三次数值4的下标W3 = 5 W2 = ( W3 + 3)  % 8 = (5 + 3) % 8 = 0  也就是W2 = ( W3 + k ) % (N-1)
这就是一般情况,相邻的两个相同数的下标关系
最后一次,只剩下没有被杀的幸存者,下标必然是0
那么这里就可以考虑往前推了(从后往前推)
核心算法: int ans=0;  //存活人最后的序号W为0
for(i=2;i<=n;i++) ans = (ans+k)%i;
因为题目是下标为1开始,所以最后答案 + 1 即可

O(N)算法

理论联系实际,我做了几道和约瑟夫环有关系的题目,具体可以参看 暑期刷题

POJ 1781 - In Danger    ( K = 2)HDU 2925 - Musical Chair  ( 给定其他k )UVA 133 -  the Dole Queue  ( 双向模拟 )先总结到这里,以后有做题目或者新的体会一定会继续补充。对于平面上的直线问题,高中的时候大家肯定学过。就是问N条直线最多能把平面分成几块区域

这里想谈谈本章需要重点体会的证明方法--数学归纳法 ( 我只是想强调数学归纳法很重要 )

对的,就是我们高中学习的数学归纳法,非常有用
对于一个定理或者公式的证明,一般有反证法和数学归纳法
今天第一天看着本书,果断绝地数学归纳法确实NB强大V587

这里我直接引用Wiki:
最简单和常见的数学归纳法是证明当n等于任意一个自然数时某命题成立。
证明分下面两步:
骨牌一个接一个倒下,就如同一个值到下一个值的过程。

    证明当n = 1时命题成立。
    证明如果在n = m时命题成立,那么可以推导出在n = m+1时命题也成立。(m代表任意自然数)

这种方法的原理在于:首先证明在某个起点值时命题成立,然后证明从一个值到下一个值的过程有效。当这两点都已经证明,那么任意值都可以通过反复使用这个方法推导出来。把这个方法想成多米诺效应也许更容易理解一些。例如:你有一列很长的直立着的多米诺骨牌,如果你可以:

    证明第一张骨牌会倒。
    证明只要任意一张骨牌倒了,那么与其相邻的下一张骨牌也会倒。

那么便可以下结论:所有的骨牌都会倒下

数学归纳法

这点我也想强调很重要
找规律的题目或者是需要证明公式的题目,甚至说任何题目
都需要先从小的情形开始。
比如平面上的直线,就应该从0,1,2这样的小数字开始考虑并推断

先研究小的情形



·读书笔记」 具体数学,布布扣,bubuko.com

时间: 2024-10-07 05:02:37

·读书笔记」 具体数学的相关文章

3D数学读书笔记——向量运算及在c++上的实现

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 开始之前:接上上篇说的,张宇老师说过线性代数研究的就是向量.其实严谨的说,数学中专门研究向量的分之称作线性代数,线性代数是一个非常有趣并且应用广泛的研究 领域,但它与3D数学关注的领域并不相同.3D数学主要关心向量和向量运算的几何意义. 零向量:任何集合,都存在 the additive identity el

3D数学读书笔记——3D中的方位与角位移

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移的基本概念 什么是方位.角位移? 直观的说,我们知道,物体的"方位"主要描写叙述物体的朝向,然而,"方向"和"方位"并不全然一样.向量有"方向"但没有"方位",差别在于,当一个向量指向特定方向时,能够让向量自转

3D数学读书笔记——矩阵基础番外篇之线性变换

本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章讨论过多坐标系的问题.有的人可能会问我那么多坐标系,它们之间怎么关联呢?嘿嘿~这次的内容可以为解决这个问题打基础奥! 线性变换基础(3D数学编程中,形式转换经常是错误的根源,所以这部分大家要多多思考,仔细运算) 一般来说,方阵(就是行和列都相等的矩阵)能描述任意的线性变换,所以后面我们一般用方阵来变

3D数学读书笔记——矩阵基础

本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031 矩阵是3D数学的重要基础,它主要用来描述两个坐标系统间的关系,通过定义一种运算而将一个坐标系中的向量转换到另一个坐标系中. 在线性代数中,矩阵就是一个以行和列形式组织的矩形数字块.向量是标量的数组,矩阵则是向量的数组. 矩阵的维度和记法 矩阵的维度被定义为它包含了多少行和多少列,一个 r * c 矩阵有 r 行.

3D数学读书笔记——四元数

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 复数是由实数加上虚数单位 i 组成,其中 i2  = -1 相似地,四元数都是由实数加上三个元素 i.j.k 组成,而且它们有如下的关系: i2 = j2 = k2 = ijk = -1 每个四元数都是 1.i.j 和 k 的线性组合,即是四元数一般可表示为a + bi + cj + dk. 关于

《游戏人工智能编程案例精粹》读书笔记—数学和物理学初探

1.1.1 笛卡尔坐标系 在二维空间中,笛卡尔坐标系被定义成两个坐标轴成直角相交并且用单位长度标出.水平轴称为x 轴,而垂直轴称为y 轴,两个轴的交点称为原点,如图1.1 所示. 如图1.1所示,每个坐标轴端点的箭头表示它们在每个方向上无限延伸.假想有一张无限大的纸,上面有x 轴和y 轴,纸就表示 xy 平面,所有二维的笛卡尔坐标系中的点都可以给制在这个平面上.在2D 空间中的一个点可以用一对坐标(x,y) 表示.x 和y 的值代表沿着各自的轴上的距离. 为了表达三维空间,需要另外一个坐标轴z铀

&lt;&lt;什么是数学&gt;&gt; 读书笔记 第一章

<<什么是数学>> 读书笔记 第一章 如果你打开了这个web page,请忘记所有所学的数学知识,从零开始? 不!不止从0开始,把自己当做一个baby重新审视这个世界.看看伟大的数学家都做了神马 -------------------------------------------------------------------------------------------------------------------------- 数值的表示和计算 自然数或是正整数的数学理论

3D数学读书笔记——矩阵进阶

本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 终于要学习矩阵的平移了,通过平移可以处理很多问题,包括非坐标轴基准的变换问题,不同坐标系转换问题.嘿嘿! 行列式(其实行列式就是一种计算法则) 在任意矩阵中都存在一个标量,称作该方阵的行列式. 方阵M的行列式记作 |M| 或 det M .非方阵矩阵的行列式是未定义的. 2 * 2阶矩阵行列式的定义 3 * 3阶

TJI读书笔记15-持有对象

body, td { font-family: 微软雅黑; font-size: 10pt; } TJI读书笔记15-持有对象 总览 类型安全和泛型 Collection接口 添加元素 List 迭代器 LinkedList 栈 Set Map Queue Collection和Iterator Foreach与迭代器 总结 总览 It's a fairly simple program that only has a fixed quantity of objects with known l