浅谈算法学习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何计算 ? 如何计算第n个Fibonacci数,如果n非常 大呢,比如 n 1016 ? 如何计算 (3 5) 的整数部分, 如果n非常 大呢,比如 n 1016 ?
xn
n
算法学习资料
Beauty is the first test: there is no permanent place in the world for ugly mathematics. —— G. H. Hardy
Introduction to Algorithms by Thomas Cormen, Charles Leiserson, Ronald Rivest, and CliffordStein ( Dec 16, 2003)
Algorithm Design by Jon Kleinberg and É Tardos (Mar 26, 2005) va
Programming Pearls by Jon Bentley
Topcoder USACO training gateway
动态规划
◦ 背包问题
贪心算法
◦ Huffman编码 ◦ 最小生成树 ◦ Matroid(拟阵)
图论
◦ 图的搜索 ◦ 最短路径 ◦ 强连通构件
线性规划
◦ 单纯型算法 ◦ 椭球算法 网络流
◦ 最大流 ◦ 最小费用流 ◦ 二分图的匹配
数论
◦ ◦ ◦ ◦ 筛法求素数 Euclid算法 一次同余方程组的解法(Chinese Remainder’s theory) 大数素性检测的近似算法
历史——大衍求一术
这是现代数论中求解一次同余方程组问题。南宋数学家秦九韶 在《数书九章》(1247年成书)中对此类问题的解法作了系统 的论述,并称之为大衍求一术。德国数学天才高斯在1801年才 建立起同余理论。 民间流传有一首“孙子歌”,甚至远渡重洋,输入日本: “三人同行七十稀,五树梅花廿一枝, 七子团圆正半月,除百令五便得知。” 该诗正是“物不知数”问题的解答, 题的术文指出解题的方法: 三三数之,取数七十,与余数二相乘;五五数之,取数二十一, 与余数三相乘;七七数之,取数十五,与余数二相乘。将诸乘 积相加,然后减去一百零五的倍数。列成算式就是: x=70×2+21×3+15×2-2×105。
计算几何
◦ 凸包
搜索算法 NP-完全问题 ◦ NP-完全问题 ◦ 归约
◦ NP-完全问题的处理 穷举搜索 回溯 分支定界 近似算法
算法设计技巧
给定任意32位的整数,请你计算它的二 进制表示中1的个数。
在一牧场上有n(1 n 1000000)头牛, 第 i 头牛的坐标为 ( xi , yi ) 。这些牛只会 向东,西,南,北走,可以拐弯。所有 牛的速度相同。现在这些牛要开个会, 请你为它们找个会场的位置,使得所有 牛走到该会场所花时间之和最小。
Part of Babbage's difference engine, assembled after his death by Babbage's son, using parts found in his laboratory.
Ada Lovelace
Charles Babbage Turing 1937年的论文 改变了他的一生,让一 个腼腆而脆弱的男人更 多地被卷入到尘世中去 , 最终走向一个悲剧式的 结局。 —— “20世纪最伟大 的智者之一 Alan Turing” , 宋方敏
为什么要学习算法分析和设计?
◦ 提高问题分析和解决的能力; ◦ 了解什么问题容易解决,什么问题难解决 (P vs NP); ◦ 知识储备; ◦ 提供更高层级的术语 交流;
算法与我
来自百度文库
最早体会到算法的重要性,Java选修课的大作业:黑白棋 (othello)程序; 开始系统的学习算法,从大四下学期开始,先熟练掌握一门程 序设计语言; 学习经典算法教材,阅读论文; 数学基础的强化,数论,组合数学,图论,计算几何; 练习方法,教材所附习题,topcoder algorithm competition, USACO training gateway;
Alan Turing
算法的重要性
A computer is a storyteller and algorithms are its tales.
——“Algorithm:Idiom of Modern Science ”, Bernard Chazelle
真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能 用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而 这种思维和手段的最佳演绎就是“算法”。
算法的主要内容
算法分析
◦ 递归方程
归纳法 递归树 Master theorem
累计法(aggregate method) 会计法(accounting method) 势能法(potential method)
◦ 均摊分析(Amortized analysis)
分治算法
◦ 快排,归并排序 ◦ FFT(快速Fourier变换) ◦ 最邻近点对
Algorithms
引自etone师兄的书评:Umesh堪称计算机理 论界的第二名师(第一名师是他自己的导师 Manuel Blum),他带过的学生们犹如一个理论 计算机科学新生代的全明星队。另一个作者 Papadimitriou可算是理论界的第二名笔(第一非 Knuth莫属),他的书Computational Complexity 和Combinatorial optimization堪称理论计算机科 学最好读的专业书,他业余还写了本小说 "Turing"。第三个作者Dasgupta是个算法方向的研 究者,他最年轻,本身就是Umesh的学生,相比 前面二位也没什么噱头——可他注定要因这本 Algorithms而被载入计算机科学的史册。
这里
m m1...mk , m m j M j (1 j k ),
M j M 1 1(mod mj ),1 j k j
mj
以及
M 1 是满足 j
的一个整数(即是 M 对模
j
的逆)。
最早的机械计算机是什么? 最早的电子计算机是什么? 数字计算机(digital computer)的思想 由谁最先提出?
—— “算法的力量”, 李开复
Speed is fun. —— Thomas H. Cormen, one of the authors of “Introduction to Algorithms” The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it can be an aesthetic experience much like composing poetry or music. —— “The Art of Computer Programming”, Donald E. Knuth
历史——孙子定理
孙子定理(国际上称为中国剩余定理)
设 m1 ,..., mk是两两既约的正整数,那么,对任意整 数 a1,..., ak , 一次同余方程组
x a j (mod m j ),1 j k
必有解,且解数为1. 事实上,解是
x M1M11a1 ... M k M k1ak (mod m),
浅谈算法学习
钱一峰
Beauty is our business. —— Dijkstra
历史
在古代《孙子算经》中载有“物不知数” 问题: “今有物,不知其数, 三三数之余二, 五五数之余三, 七七数之余二, 问物几何?” 用现代数论符号表示: x ≡2(mod 3) x ≡3(mod 5) x ≡2(mod 7)