算法设计与分析 例题 绘制Huffman树、循环赛、分治、最短路与动态规划

1.考虑用哈夫曼算法来找字符a,b,c,d,e,f 的最优编码。这些字符出现在文件中

的频数之比为 20:10:6:4:44:16。要求:

(1)(4 分)简述使用哈夫曼算法构造最优编码的基本步骤;

(2)(5 分)构造对应的哈夫曼树,并据此给出a,b,c,d,e,f 的一种最优编码。

解:1)、哈夫曼算法是构造最优编码树的贪心算法。其基本思想是,首先所

有字符对应n 棵树构成的森林,每棵树只有一个结点,根权为对应字符的频率。然后,重复

下列过程n-1 次:将森林中的根权最小的两棵树进行合并产生一个新树,该新树根的两个子

树分别是参与合并的两棵子树,根权为两个子树根权之和。

2)、根据题中数据构造哈夫曼树如下图所示。

由此可以得出 a,b,c,d,e,f 的一组最优的编码:01,0000,00010,00011, 1,001。

2.

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

每个选手必须与其他n-1名选手比赛各一次;每个选手一天至多只能赛一次;

循环赛要在最短时间内完成.
(1)(4分)循环赛最少需要进行( n-1 )天.

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

1

2

3

4

5

6

7

8

2

1

4

3

6

5

8

7

3

4

1

2

7

8

5

6

4

3

2

1

8

7

6

5

5

6

7

8

1

2

3

4

6

5

8

7

2

1

4

3

7

8

5

6

3

4

1

2

8

7

6

5

4

3

2

1

3.

 请用分治策略设计递归的归并排序算法,并分析其时间复杂性(要求:分别给出divide、conquer、combine这三个阶段所花的时间,并在此基础上列出递归方程,最后用套用公式法求出其解的渐进阶)。

答 : Template <class Type>

void MergeSort (Type a[ ], int left, int right)     

{ if (left<right)                            

           { int i=left+right/2;               

            MergeSorta, left, i;               

            MergeSorta, i+1, right;            

            Merge(a, b, left, right);               

            Copy(a, b, left, right);                 

           }

 }

     Divide 阶段的时间复杂性:    O(1)          

     Conquer阶段的时间复杂性:   2T(n)          

     Combine阶段的时间复杂性:  Θ(n)          

                                               

    用套用公式法:a=2, b=2, nlog ba = n , f(n)=n,   因为f(n)与nlog ba 同阶,

   T(n) =Θ(nlogn)  

     4.

对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的边。说明该算法的贪心策略和算法的基本思想,并简要分析算法的时间复杂度。

TE={(3,4), (2,3),(1,5),(4,6)(4,5)}   

贪心策略是每次都在连接两个不同连通分量的边中选权值最小的边。

基本思想:首先将图中所有顶点都放到生成树中,然后每次都在连接两个不同连通分量的边中选权值最小的边,将其放入生成树中,直到生成树中有n-1条边。

时间复杂度为:O(eloge)  

 5.

用动态规划策略求解最长公共子序列问题:

   (1)给出计算最优值的递归方程。

   (2)给定两个序列X={B,C,D,A},Y={A,B,C,B},请采用动态规划策略求出其最长公共子序列,要求给出过程。

(1)

                                        

                                        

                                       

                                          

  • 31
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《算法设计与分析基础》PDF是一本关于算法设计和分析的入门教材,它涵盖了算法的常用概念、基本思想和实际应用。本书第一章简要介绍了算法分析的基本方法和概念,包括时间复杂度和空间复杂度,为后续的章节打下了基础。 第二章通过实际例子引导读者如何设计和分析分治算法。该章节详细讲解了分治算法的基本概念和关键步骤,且对每个步骤都有具体的解释和示例,使读者能够更加深入地理解和应用分治算法。 第三章讨论了最基本的排序问题,包括冒泡排序、选择排序和插入排序等,每个排序算法都有详细的示例和伪代码。此外,该章还介绍并分析了几种高级排序算法,如快速排序和归并排序。 第四章涉及贪心算法。该章节详细讨论了贪心策略的基本要素,以及许多常见的贪心算法,如背包问题、最小生成Huffman等。 第五章介绍了动态规划算法。该章节分析了动态规划算法的基本思路和步骤,并且通过数个具体的例子说明了这种算法的应用。 除此之外,该书还讲解了回溯法、分支限界法等一些经典的算法方法,并对一些重要的算法问题如最短路径问题、最小费用流问题进行了详细解释,使读者能够更加深入地理解和应用这些算法。 总而言之,《算法设计与分析基础》PDF为算法学习者提供了扎实的基础知识,涵盖了算法设计和分析的基本概念、思想和实际应用,同时还提供了众多的例题和习题,方便读者巩固和深入理解所学知识。 ### 回答2: 《算法设计与分析基础》是一本关于算法的入门教材,内容包括算法基础知识、数据结构、排序算法、图论算法等。此书旨在帮助学生从算法的角度分析问题,掌握算法设计和分析的基本方法。 本书首先介绍了算法的基本概念,例如时间复杂度、空间复杂度、渐近符号等。然后,本书详细讲解了几种基本的数据结构,例如线性表、、图等,同时阐述了它们的实现方式和应用场景。此外,本书还介绍了几种常用的排序算法,这些算法在实际应用中非常重要。最后,本书讲解了图论算法,包括最短路算法、最小生成算法等。 该书目录清晰、内容详尽,每一章都有课后习题,可以帮助读者巩固所学的知识。此外,本书还提供了一些优秀的实例来帮助读者理解算法。对于初学者而言,本书提供了一个详细而且易于理解的学习路径,能够从基础概念开始,逐步加深对算法的理解。 《算法设计与分析基础》是一本应用广泛的经典教材,适用于计算机科学、数学、物理等专业的学生,以及对算法设计和分析有兴趣的人士。同时,本书的PDF版本也非常便于学习和阅读,比较适合使用电子设备进行学习。 ### 回答3: 《算法设计与分析基础》是一本讲解算法设计和分析的重要参考书,可以用来帮助学生和研究人员理解和掌握算法深度思考的关键概念。这本书介绍了算法的基本思想和概念,并提供了许多实用的算法实现,帮助读者在问题求解时更加高效和准确。 本书的主要内容包括:算法的基本概念,递归算法,排序和查找算法,贪心算法动态规划算法,图论算法,字符串算法以及数论算法等等。在这些章节中,书籍详细解释了该算法的原理、算法实现以及在何种情况下使用该算法的具体实例。 此外,这本书还着重讲解了算法的分析技巧,对于一个算法的时间复杂度、空间复杂度、稳定性等方面进行了详细解释,这有助于读者更好地评估和比较不同算法的优劣,以便在实际应用中选择最优算法。 总的来说,《算法设计与分析基础》是一本非常优秀的书,它对算法设计和分析的基础知识进行了深入浅出的讲解,既简洁明了又不失深度,并且提供了大量实例和练习题,非常适合计算机专业学生、算法工程师以及数据研究人员进行学习和参考。如果你对算法设计和分析感兴趣,那么这本书一定不容错过。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值