2017年4月19日
摘要: 像所有的新手一样,对一种算法思想的理解需要经历从肤浅(流于表面形式)到逐渐触摸到本质的过程。为什么说逐渐触摸到本质,是因为很多时候你并不确定一个解释是不是最本质的,有时候会有好几个等价的解释,各自在不同的场景下具有。 动态规划经典题集转]动态规划与排列组合,比如对动态规划(DP)的理解,一开始我理解 阅读全文
posted @ 2017-04-19 14:16 Solovon 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 终于来到了算法设计思想中最有趣的这部分,在去年的google笔试中,7道算法设计题有2道动态规划(Dynamic Programming)。看了这么久的算法,这部分也是唯一感觉到了比较难的地方,从这篇文章开始,将花连续的篇幅来讨论一些对动态规划的认识和其中的问题。这包括一些例子:计算二项式系数,Wa 阅读全文
posted @ 2017-04-19 14:10 Solovon 阅读(5114) 评论(0) 推荐(0) 编辑
摘要: 1、先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。 2、最长公共子串 其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:"ba 阅读全文
posted @ 2017-04-19 13:38 Solovon 阅读(10528) 评论(0) 推荐(0) 编辑
摘要: 前言 我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。 注意:如果你对于其中某一节已经了解并且不想阅读它,没关系,直接跳过它即可。 简介(入门) 阅读全文
posted @ 2017-04-19 13:34 Solovon 阅读(584) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出 阅读全文
posted @ 2017-04-19 13:31 Solovon 阅读(9623) 评论(1) 推荐(0) 编辑
摘要: 各种排序方法的性能比较: 排序法 平均时间 最坏情况 最好情况 稳定度 额外空间 备注 1.直接插入 O(n2) O(n2) O(n) 稳定 O(1) 大部分已排序时较好(简单) 1.希尔 O(nlogn) O(nlogn) 与步长相关 不稳定 O(1) n小时较好(较复杂) 2.冒泡 O(n2) 阅读全文
posted @ 2017-04-19 13:25 Solovon 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基 阅读全文
posted @ 2017-04-19 13:20 Solovon 阅读(519) 评论(0) 推荐(1) 编辑