算法设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法的概念

1)算法是一个有穷规则的集合

2)算法是求解一个问题类的无二义性的有穷过程。

3)用与给定计算机通讯的语言编写的,并且可以在这种计算机上执行的过程叫做算法

4)算法是对所有有效输入都停机的图灵机

算法的五个特征

1)有穷性:计算步骤有限,且有一定的顺序,同时每一步骤都能在有限的时间内完成

2)确定性:每个计算步骤必须是确定的、无二义性

3)可终止性:运算能在有限的时间内完成,没有死循环4)输入:有零或多个输入

5)输出:有一个或多个输出

算法设计的步骤

一、问题的陈述

已知什么,求什么,提附加问题以帮助理解用户的要求二、模型的选定三、算法的详细设计四、算法的正确性五、算法的实现

1)完善子程序

2)选合适的数据结构

六、算法的分析七、程序的测试

算法的评价

1.正确性

2.执行时间最短

3.复杂性最小

这些因素与使用的机器、程序设计语言、程序员有关

算法的复杂性一般随问题规模的增长而增大。

算法复杂性= 算法所需要的计算机资源

顺序统计

问题:从n个元素中找出第k个最小元素(或最大元素) 。把n个元素排成非递减序,从中找出第K个最小元素O(nlog2n)

把这n个元素放在集合S中,从S中随机地选出一个元素a,a为界,把全体元素分成:

S1 S2 S3

{小于a} {等于a} {大于a}

再根据S1、S2、S3排中元素个数从某个子集中寻找。

先从S中找到中值元素m,再用m去划分S

矩阵乘法

方法三:Strassen的分治算法

令P=(A11+A22)(B11+B22), Q=(A21+A22)B11,R=A11(B12-B22), S=A22(B21-B11),T=(A11+A12)B22,U=(A21-A11)(B11+B12),V=(A12-A22)(B21+B22)

则C11=P+S-T+V, C12=R+T,C21=Q+S, C22=P+R-Q+U

T(n)=O(n log7)=O(n2.81)

大整数乘法方法二:设n=2r,将两个数都按位数划分成两段

即x=a2n/2+b, y=c2n/2+d 则:

xy=(a2n/2+b)(c2n/2+d)=ac2n+(ad+bc) 2n/2

+bd

T(n)=O(n2)

方法三:

xy=(a2n/2+b)(c2n/2+d)=ac2n+(ad+bc) 2n/2+bd

= ac2n+((a-b)(d-c)+ac+bd)2n/2+bd

T(n)=O(n log3)=O(n1.59

)

第三章动态规划

概念:动态规划方法涉及多级决策过程中的最优化问题。

它把求解的问题分成许多级或许多子问题,然后按顺序求

解各子问题;前一子问题的解为后一子问题的求解提供了

有用的信息;并且在求解任一子问题时,保留那些有可能

达到最优的局部解,丢弃其它局部解;依次解决各子问题,

最后一个子问题的解就是初始问题的解。

基本思想:分治思想和解决冗余。

重叠子问题:在用递归算法自顶向下解问题时,每次产生

的子问题并不总是新问题,有些子问题被反复计算多次。

最优子结构:当问题的最优解包含了其子问题的最优解

时,称该问题具有最优子结构性质。

最优性原理又称为最优子结构性质:

如果有一决策序列包含有非最优的决策子序列,则该

决策序列一定不是最优的。即一个最优策略的子策略总是

最优的。

解题步骤:

1、找出最优解的性质,并刻画其结构特征;

2、递归地定义最优值(写出动态规划方程);

3、以自底向上的方式计算出最优值;

4、根据计算最优值时记录的信息,构造最优解。

动态规划与分治法的区别和联系

相同之处:都是将原问题分解成若干个子问题,先求解子

问题,然后从这些子问题的解得到原问题的解。

区别:分治法中被分解的子问题之间相互独立;在动态规

划中,经分解的子问题往往不是互相独立的,各子问题必

须按顺序求解,前一子问题的解是求解下一子问题的条

件,已求解子问题的有用解保存起来,以免重复计算。

资源分配问题

)}

(

{

max

)

(

)}

(

)

(

{

max

)

(

....

..........

)}

(

)

(

{

max

)

(

1

1

1

2

1

2

2

2

1

1

2

x

G

x

f

x

x

f

x

G

x

f

x

x

f

x

G

x

f

a

x

x

a

x

x

n

n

n

n

a

x

x

n

n

-

=

-

+

=

-

+

=

单源最短路径问题

cost(i,j)=min{C(j,r)+cost(i+1,r)}

r∈V i+1

∈E

Procedure Fgraph

{ for i ←1 to n cost[i] ←0;

for j =n-1 step –1 to 1 do

{找顶点r,使 ∈E,且C(j,r)+cost[r]最小;

cost[j]←C(j,r)+cost[r];

D[j] ←r ;

}

P[1] ←1 ; P[k] ←n;

for j=2 to k-1 do P[j] ←D[P[j-1]]

}

资源分配问题

)}

(

{

max

)

(

)}

(

)

(

{

max

)

(

....

..........

)}

(

)

(

{

max

)

(

1

1

1

2

1

2

2

2

1

1

2

x

G

x

f

x

x

f

x

G

x

f

x

x

f

x

G

x

f

a

x

x

a

x

x

n

n

n

n

a

x

x

n

n

-

=

-

+

=

-

+

=

流水作业车间调度问题

算法设计:流水作业调度问题的Johnson算法

(1)令};

|

{

},

|

{

2

1i

i

i

i

b

a

i

N

b

a

i

N≥

=

<

=

(2)将N1中作业依a i的非减序排序;将N2中作业依b i的

非增序排序;

(3)N1中作业接N2中作业构成满足Johnson法则的最优调

度。

货郎担问题

算法设计:设T( i,S)是由结点i出发,经过结点集S中每

个结点各一次并回到初始结点1的一条最短路径长度,则

T(1,V-{1})就是一条最优的周游路线长度。动态规划模型:

T(1,V-{1})=min{d1k+T(k,V-{1,k})}

则,T( i,S)= d i,1,当S为空时;

T( i,S)=min{d ij+T(j,S-{j})} ,当S中有多于

一个元素时,

j ∈S,i ∉S

相关文档
最新文档