随笔分类 - Algorithm
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-动态规划法最优二叉搜索树问题描述二叉搜索树运算有很好的平均时间复杂度(O(logn),但可能会产生退化的树形,是搜索时间变坏。二叉平衡树限制了输的高度,使搜索运算的最坏情况时间位O(logn)。以上...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-动态规划法矩阵连乘问题描述给定n个矩阵{A0,A1,⋯,An−1},其中Ai(i=0,⋯,n−1)的维数为pi×pi+1,并且Ai与Ai+1是可乘的。考虑这n个矩阵的连乘积A0A1⋯An−1,由于矩...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-动态规划法资源分配问题资源分配问题将n个资源分配给r个项目,已知如果把j个资源分配各第i个项目,可以收益N(i,j),0≤j≤n,1≤i≤r,求总收益最大的资源分配方案。这一问题可以用一个多段图来描...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)练习一逆序输出正整数的各位数(递归算法求解)#include //逆序输出正整数的各位数(递归算法求解)void print(unsigned int n){ printf("%d", n%10);//基础...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-动态规划法动态规划法动态规划算法是另一种求解最优化问题的重要算法设计策略。对于一个问题,如果能从较小规模的子问题的最优解求得较大规模同类子问题的最优解,最终得到给定问题的最优解,这就是最优解的最优子...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-贪心法单源最短路径问题描述单源最短路径问题是:给定带权的有向图G=(V,E)和图中结点s∈V,求从s到其余各结点的最短路径,其中s称为源点。这里所指的路径长度是指路径上的边所带的权值之和,并假定边上...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-贪心法最小代价生成树问题描述一个无向连通图的生成树是一个极小连通子图,它包括图中全部的结点,并且尽可能少的边。遍历一个连通图得到图的一颗生成树。一颗生成树的代价是树中各条边上的代价之和。一个网络的各...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-贪心法带时限的作业排序问题描述带时限得到作业排序问题:设有一个单机系统、无其他资源限制且每一个作业运行时间相等,假定每一个作业运行1个单位时间。现在有n个作业,每一个作业都有一个截止期限di>0,d...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-贪心法贪心法贪心法是一种求解最优化问题的算法设计策略。 贪心法是通过分步决策(stepwise decision)的方法来求解问题的。贪心法在求解问题的每一步上做出某种决策,产生n-元组解的一个分量...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分治法选择问题问题描述选择问题(select problem)是指在n个元素的集合中,选出某个元素值大小在集合中处于第k位的元素,即所谓的求第k小元素问题(Kth-smallest)。分治法求解如果...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分治法排序问题问题描述排序是将一个元素序列调整为按指定关键字值的递增(或递减)次序排列的有序序列。 分治法求解分治法求解排序问题思想:按某种方式将序列分成两个或多个子序列,分别进行排序,再将已排序的...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分治法二分搜索问题描述在有序表(已按关键字值非减排序)中搜索给定元素的问题。分治法求解设有一个长度为n的有序表(a0,a1,⋯,an−1),要求在表中搜索与给定元素x有相同关键字值的元素。若n=0,...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法设计策略-分治法分治法分治法的基本思想分治法就是分而治之,一个问题能够用分治法求解的要素是:第一,问题能够按照某种方法分解成若干个规模较小,相互独立且与原问题类型相同的子问题;第二,子问题足够小时可以直接求解...
阅读全文
摘要:参考书籍:算法设计与分析——C++语言描述(第二版)算法问题求解基础1. 算法概述算法(algorithm)是求解一类问题的任意一种特殊的方法。教严格的说法是,一个算法是对特定问题求解步骤的一种描述,它是指令的有限序列。 算法具有下面五个特征:输入(input):...
阅读全文