算法分析与设计(耿国华第二版)

构造结果

目录

构造结果

1、矩阵连乘问题-矩阵连乘步骤P61

2、网球循环赛和羽毛球场地出租

3、实现回⽂识别的图灵机指令表,给出识别1001/010/0110/101序列。

4、考虑n=3的批处理作业调度实例

5、着色问题

6、0-1背包问题+背包(可分割)

7、合唱团队形问题【动态规划】(书本P57)

8、旅行商-周游路线问题

9、最长公共子序列问题

10、归并排序(mergesort)的时间复杂度

11、写出用分治算法MaxMin对下列实例寻找最大数和最小数的过程,数组A[]={48,12,61,3,5,19,32,7}

12、八数码问题求解(书本P148)


1、矩阵连乘问题-矩阵连乘步骤P61

【问题一】

设有四个矩阵A1、A2、A3、A4,它们的维数分别是:50x10,10x40,40x30,30x5考察这4个矩阵的连乘积A1×A2×A3×A4,问如确定计算阵连乘积的计算次序使得依此次序计算矩阵连乘积需要的数乘次数最少?

所以最小数乘次数为10500.最优计算次序为 A1(A2(A3 A4))。

【问题二】

【问题三】计算矩阵乘连乘M₁M₂M₃M₄,其中,M₁是30*40维,M₂是40*10维,M₃是10*8维,M₄是8*40维。用动态规划算法给出最优解表示。

解:动态规划解矩阵连乘

M1(30x40)  M2(40x10)  M3(10x8)  M4(8x40)

设m[i][j]是计算MixMi+1x...xMj的最小值,则有:

m[1][1]=m[2][2]=m[3][3]=m[4][4]=0

m[1][2]=30x40x10=12000

m[2][3]=40x10x8=3200

m[3][4]=10x8x40=3200

m[1][3]={   m[1][2]+30x10x8=12000+2400=14400

           m[2][3]+30x40x8=12800

m[2][4]={   m[2][3]+40xx8x10=3200+12800=16000

           m[3][4]+40x10x40=3200+16000=19200

m[1][4]={   m[1][3]+30x8x40=12800+9600=22400

           m[1][2]+ m[3][4]+30x10x40=12000+3200+12000=27200

m[2][4]+30x40x40=16000+48000=64000

建立矩阵连乘问题的递推的二维表如下:

m[1][1]=0         m[2][2]= 0         m[3][3]=0         m[4][4]=0

m[1][2]=12000     m[2][3]=3200      m[3][4]=3200

m[1][3]=12800     m[2][4]=16000     

m[1][4]=22400

由上可知,这4个矩阵连乘所用到的最小乘积次数是22400

最优计算次序是(M1(M2M3))M4)

2、网球循环赛和羽毛球场地出租

网球循环赛问题描述有:

设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表:

每个选手必须与其他n-1名选手比赛各一次:

每个选手一天至多只能赛一次;

循环赛要在最短时间内完成。

(1)如果n=2k,循环赛最少需要进行几天

(2)当n=23=8时,请画出循环赛日程表。

网球循环赛问题描述有:

3、实现回⽂识别的图灵机指令表,给出识别1001/010/0110/101序列。

4、考虑n=3的批处理作业调度实例

(1)用优先队列式的分支限界法解该问题,画出该问题的解空间树;

(2)若当前代价f>=当前最优解代价 bestf ,则剪枝

(3)剪枝结果如图

(4)最优解为:{3,2,1},最优值为25

5、着色问题

【问题一】

说明:层数代表各顶点,1,2,3代表不同的颜色

【问题二】

P239类似(下面是类似题答案)

6、0-1背包问题+背包(可分割)

【可分割】

7、合唱团队形问题【动态规划】(书本P57)

【问题一】

教材p57

1

2

3

4

5

6

7

8

180

175

155

163

166

178

182

160

最⼤上升⼦序列的长度表

i

1

2

3

4

5

6

7

8

F1(i)

1

1

1

2

3

4

5

2

最⼤下降⼦序列的长度表

i

1

2

3

4

5

6

7

8

F2(i)

4

3

1

2

2

2

2

1

结果表

i

1

2

3

4

5

6

7

8

ans

4

3

1

3

4

5

6

2

由结果表可以看出,应该以第 7 个同学为中⼼位置,需要 8-6=2 个学⽣出列,最终形成的

合唱队列为155,163,166,178,182,160

【问题二】

8、旅行商-周游路线问题

【问题一】

给定n=5,代价矩阵如下,用分支限界法给出其状态空间树,找出最小代价周游路线。

 

9、最长公共子序列问题

【问题一】

给定两个字符串X=(A,B,C,B,D,A,B)和Y=(B,D,C,A,B,A),利用动态规划方法求解这两个字符串的最长公共子序列。要求给出计算最优值的递归方程。求最长公共子序列过程。

10、归并排序(mergesort)的时间复杂度

11、写出用分治算法MaxMin对下列实例寻找最大数和最小数的过程,数组A[]={48,12,61,3,5,19,32,7}

12、八数码问题求解(书本P148)

【问题一】

在八数码问题中,设一个启发函数f(n)=d(n)+w(n),其中d(n)为搜索树中节点的深度(根在第0层),对应已经走过的路径长度;w(n)为当前结点n的状态描述中与目标状态相比较还没有到位的棋子数,近似对应将来还要走的路径长度。现采用优先队列式分支限界法来解决8数码问题,请画出解空间树。

初始布局和目标布局如下图所示:

答:仅为空格制定这左、上、右、下种走步,空格移动的唯一约束是不能移出棋盘。

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
国华是一本非常经典的数据结构教材,该书是用C语言来描述和实现各种数据结构的。数据结构是计算机科学中非常重要的一个领域,它研究如何组织和存储数据,以便能够高效地使用和操作。国华在书中详细介绍了各种数据结构的概念、特点以及它们之间的关系。 书中首先介绍了基本的数据结构,如数组、链表和栈等。然后,它深入讨论了高级数据结构,如队列、树、图和散列表。每种数据结构都用C语言来描述和实现,包括其基本操作,比如插入、删除和查找。通过各种实例和代码,读者可以深入理解每种数据结构的原理和应用。 除了描述和实现数据结构,国华还介绍了常见的算法和数据结构分析技术。这些技术可以帮助人们评估和比较不同数据结构的性能,以及设计高效的算法。书中通过一些经典的算法问题,如排序和搜索,阐述了这些技术的应用。 国华的优点在于其简洁明了的描述和清晰的代码实现。它适合初学者作为数据结构的入门教材,也适合有一定基础的读者进行进一步的学习和实践。无论是在学校的课程中还是在职业生涯中,国华都是一本不可缺少的参考书。它不仅为我们提供了理论基础,也给我们提供了实际应用的指导。总之,通过学习和理解《数据结构—c语言描述国华》,读者可以掌握数据结构的基本概念和C语言的实现技巧,为解决实际问题提供有效的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值