算法概述

算法描述

算法定义: 是通过一个有限的指令序列集合对特定问题进行求解的一种计算执行描述。
算法特征:输入,输出,确定性,有限性,正确性,通用性
算法代价:使用规模的函数来表示
算法代价评估:使用最差时间,最好时间,平均时间来评估
算法系统模型分类:随机存储模型,并行模型
算法代价计算方法:数学归纳法,计分方法,拆分方法,估值方法,代价树方法,带入方 法,master公式等
算法涉及到的结构:线性结构,树结构(大小堆,排序树,红黑树,B和B+树,区间数,t-tree等等),图(单源最短路经,任意两点最短路经,工作安排,最小支撑树,树图关系等等一用)
算法分类:分治法,线性法,贪心法,分支有限法,动态规划法,回搠法,随即算法,并行算法等等

具体算法简介:
分治法:它是基于递归算法的一种算法。有三步:Divid, conqure,combine三部分。应用有归并算法。

动态规划思想

动态规划的思想实质是分治思想和解决冗余。 
与分治法类似的是,将原问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
与分治法不同的是,经分解的子问题往往不是互相独立的。若用分治法来解,有些共同部分(子问题或子子问题)被重复计算了很多次。
如果能够保存已解决的子问题的答案,在需要时再查找,这样就可以避免重复计算、节省时间。动态规划法用一个表来记录所有已解的子问题的答案。
这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表方式

动态规划求解步骤:
1、找出最优解的性质,并刻画其结构特征;
2、递归地定义最优值(写出动态规划方程);
3、以自底向上的方式计算出最优值;
4、根据计算最优值时记录的信息,构造最优解。

动态规划两个条件:
最优子结构 、 重叠子结构

举例:
多段图问题:
描述:
多段图G=(V, E)是一个有向图,且具有以下特征:
(1)划为k≥2个不相交的集合Vi, 1≤i≤k;
(2) V1和Vk只有一个结点s(源点)和t(汇点);
(3)若<u, v>∈E(G),u∈Vi ,则v∈Vi+1 1≤i≤k, 边上成本记c(u,v);若<u, v>∈E(G),边上成本记c(u,v)=∞;
问题:求由s到t的最小成本路径。

代码:
多段图G=(V, E)是一个有向图,且具有以下特征:
void MultiStageGraph(Type **e, int k, int n, int p[])
{//输入n个结点的k段图,假设顶点按段的顺序编号
//e是边集,p[1..k]是最小成本路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值