算法设计技巧与分析
文章平均质量分 90
这波lucio来全学了
这个作者很懒,什么都没留下…
展开
-
【重拾算法】01-STL
做程序开发,广度和深度是同样重要的,也许现在的工作中不会直接用上,但是算法、设计模式等等这些底层的知识时候熟练掌握,是我们能不能走得更远的前提,我觉得是时候,再重拾起已经快遗忘的算法,为自己的下一个三年,储备更多的基础知识。原创 2021-12-30 12:38:32 · 950 阅读 · 0 评论 -
012-矩阵链相乘-动态规划-《算法设计技巧与分析》M.H.A学习笔记
给定一个矩阵序列M1M2...Mn,计算乘积M1M2...Mn。要求找出一个放置括号的方式,使得标量乘法的次数最小。原创 2016-06-27 17:35:31 · 2162 阅读 · 0 评论 -
013--Floyd算法-动态规划-《算法设计技巧与分析》M.H.A学习笔记
多源最短路:有向图,求从每个顶点到其他所有顶点的最短距离。原创 2016-06-28 12:10:33 · 1905 阅读 · 0 评论 -
014-背包问题-动态规划-《算法设计技巧与分析》M.H.A学习笔记
01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2……Wn,与之相对应的价值为P1,P2……Pn。求能获得的最大总价值。原创 2016-06-28 12:18:21 · 2785 阅读 · 0 评论 -
016-kruskal算法-贪心-《算法设计技巧与分析》M.H.A学习笔记
1. 对G的边按权重非降序排列。2. 一次取权重最小的边,如果把它放入T不会形成回路的话,则把它放入T中,否则将它丢弃。原创 2016-06-28 22:25:24 · 2103 阅读 · 1 评论 -
015-Dijkstra算法-贪心-《算法设计技巧与分析》M.H.A学习笔记
在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,注意该算法要求图中不存在负权边。原创 2016-06-28 19:30:33 · 1935 阅读 · 0 评论 -
017-Prim算法-贪心-《算法设计技巧与分析》M.H.A学习笔记
定义结点集合U, V (U表示已经选择加入MST的结点集合,V表示未选)1. 任选一个结点加入U2. 选择一条边权最小的边,他的两个结点分别属于U, V,并把属于V的那个结点加入U3. 重复执行2直到V空原创 2016-06-28 22:32:40 · 2661 阅读 · 1 评论 -
018-Huffman树-贪心-《算法设计技巧与分析》M.H.A学习笔记
Huffman树是完全二叉树,权重较大的节点距离根较近。Huffman编码是一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。原创 2016-06-28 22:37:50 · 3085 阅读 · 0 评论 -
019-dfs.bfs-图的遍历-《算法设计技巧与分析》M.H.A学习笔记
深度优先搜索DFS深搜框架:bool dfs(int loc) { 标记状态loc已访问; if (loc为目标状态) return true; for (每个可能的操作) { 对loc应用操作产生新状态nstat; if (nstat合法且未被访问) { if (dfs(nstat)) return true;原创 2016-06-28 23:01:53 · 2145 阅读 · 0 评论 -
020-寻找图的关节点-dfs-《算法设计技巧与分析》M.H.A学习笔记
在多于两个顶点的无向图G中,存在一个顶点v,如果有不同于v的两个顶点u和w,在u和w间的任何路径都必定经过顶点v,则称v为关节点。一种更形象的说法:关节点也叫割点,连通图中删去割点会被分割成几个连通分量。原创 2016-06-29 14:50:43 · 6096 阅读 · 0 评论 -
021-回溯法与深搜的关系-《算法设计技巧与分析》M.H.A学习笔记
在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。 若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。 而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。原创 2016-06-29 16:40:43 · 4475 阅读 · 0 评论 -
022-3着色问题-回溯法-《算法设计技巧与分析》M.H.A学习笔记
一个无向图G,用三种颜色给顶点着色,使得邻接的顶点颜色不相同。原创 2016-06-29 16:45:57 · 6502 阅读 · 0 评论 -
011-最长公共子序列-动态规划-《算法设计技巧与分析》M.H.A学习笔记
给出两个长度分别为n和m的字符串A和B,确定A和B中最长公共子序列的长度。朴素算法:列举A中所有的子序列2n个,并逐个判断其是否在B中(Θ(m)耗费)。时间复杂度为Θ(m2n)。利用动态规划可以在Θ(nm)的时间和Θ(min{m,n})的空间内解决最长公共子序列问题。原创 2016-06-27 17:25:55 · 1635 阅读 · 0 评论 -
023-8皇后问题-回溯法-《算法设计技巧与分析》M.H.A学习笔记
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。原创 2016-06-30 16:33:46 · 1756 阅读 · 0 评论 -
010-最近点对问题-分治法-《算法设计技巧与分析》M.H.A学习笔记
设S是平面上n个点的集合,在S中找到两点p、q,使得他们的欧几里得距离d(p,q)是所有点对中最小的。朴素的算法是计算所有点对的距离,在求出最小的,需要Ω(n2)。采用分治法可以在Θ(nlogn)完成任务。原创 2016-06-27 17:19:56 · 6249 阅读 · 0 评论 -
009-矩阵乘法-分治法-《算法设计技巧与分析》M.H.A学习笔记
A、B是两个n*n的矩阵,计算C=A*B。原创 2016-06-27 17:01:39 · 9436 阅读 · 0 评论 -
008-大整数乘法-分治法-《算法设计技巧与分析》M.H.A学习笔记
设u和v是两个n位二进制整数,传统乘法算法需要Θ(n2)的时间来计算u和v的乘积。但我们还有一个Θ(n1.59)的改进算法。原创 2016-06-27 16:51:44 · 3851 阅读 · 1 评论 -
001-整数快速幂-归纳法-《算法设计技巧与分析》M.H.A学习笔记
计算x的n次幂的朴素算法复杂度为O(N),我们还有一种复杂度为O(log N)的快速幂方法。原创 2016-06-27 16:21:50 · 1375 阅读 · 0 评论 -
002-多项式求值(Horner规则)-归纳法-《算法设计技巧与分析》M.H.A学习笔记
Horner算法共进行了n次乘法和n次加法。原创 2016-06-27 16:25:03 · 2054 阅读 · 0 评论 -
003-生成排列-归纳法-《算法设计技巧与分析》M.H.A学习笔记
我们来生成1,2,3,...,n的全排列,这里只说两种与归纳法有关的算法,其他的算法还有几个,也有不是递归的算法,这里先不多讲。原创 2016-06-27 16:27:52 · 1606 阅读 · 0 评论 -
004-寻找多数元素-归纳法-《算法设计技巧与分析》M.H.A学习笔记
含有n个元素的序列,多数元素指出现次数多于n/2的元素。原创 2016-06-27 16:29:38 · 2336 阅读 · 0 评论 -
005-二分搜索-分治法-《算法设计技巧与分析》M.H.A学习笔记
二分搜索又称折半查找,用于在排序好的序列表中进行搜索,搜索效率高,可在最坏的情况下用O(log n)完成搜索任务。原创 2016-06-27 16:30:57 · 1185 阅读 · 0 评论 -
006-寻找最大值和最小值-分治法-《算法设计技巧与分析》M.H.A学习笔记
在一个含n个元素的数组中寻找最大值和最小值。采用分治法可能仅用3n/2-2次比较在数组中找到最大值和最小值。原创 2016-06-27 16:32:57 · 3409 阅读 · 0 评论 -
007-寻找第k小元素-分治法-《算法设计技巧与分析》M.H.A学习笔记
在n个元素的数组中查找第k小的元素。Θ(n)原创 2016-06-27 16:34:30 · 16687 阅读 · 6 评论