算法和数据结构练习题-下

本文深入探讨了Dijkstra算法寻找最短路径的原理,2-4树的插入操作,从2-3-4树中删除数据的步骤,动态规划的基本概念,基数排序的应用,哈希表的Chaining复杂度,完美哈希的实现,AVL树的插入和删除操作,以及Dijkstra和Bellman-Ford算法的区别。内容涵盖了图论、数据结构和算法等核心概念。
摘要由CSDN通过智能技术生成

接上文:
https://blog.csdn.net/Jifu_M/article/details/112956663

19. Dijkstra算法寻找最短路径

在这里插入图片描述
假设我们使用Dijkstra算法在上面面的图中找到顶点A的最短路径。顶点插入到Selected set的顺序是什么?

最短路径算法的介绍可以看我的这篇文章:
https://blog.csdn.net/Jifu_M/article/details/112909339

答:
A D E C B F

判断每个节点到A的最短路径,然后依次插入到Selected set即可。

下图位C,B,F的最短距离,
//F也可以是1+3。
在这里插入图片描述

20. 插入数据到2-4树中

向下图2-4树中插入6
在这里插入图片描述
答:
2-4树的介绍可以看我的这篇文章:
https://blog.csdn.net/Jifu_M/article/details/112841205
在这里插入图片描述
将6插到这里出现了5-node,不符合树的定义。
有两种方法解决5-node:

  1. 4升上去,3下来到2旁边。
  2. 7升上去,8下来到9旁边。

插入后的图为:

在这里插入图片描述

或者:
在这里插入图片描述
// 灵魂画手,希望你们能看懂。

21. 从2-3-4树中删除数据

在这里插入图片描述
删除1:

答:
首先,由于’ 1 ‘不在叶节点中,将’ 1 '与它后面紧跟着的2交换,使其进入叶节点。
在这里插入图片描述
1在叶节点了,直接删除1,1的那个叶节点因此变为空节点,不符合树的定义。因此,我们要把3降到这个节点,把右边的兄弟节点的4升上去:
在这里插入图片描述
大功告成!

22. 动态编程相关术语:

  1. Optimal substructure and overlapping subproblems
  2. Memoization
  3. Objective function

答:

  1. 最优子结构是通过构造重叠子问题的最优解来找到问题的最优解的性质。
  2. Memoization是一种技术,它将先前计算的值存储起来,以便这些值可以用于快速解决其他子问题。
  3. 目标函数是计算我们想要的XX最小化或最大化的结果。

23. 基数排序

基数排序是否适用于基于学生编号的学生记录排序?

答:
是的。
因为学号是整数,有固定的位数。

基数排序最适用于以下情况:

  1. 这些数字是由一组数字组成的,并且
  2. 每个数字都能装进单个单词的存储器中。

学号满足上述条件,因此基数排序是合适的。

24. 对单词进行基数排序

单词为:
COW, DOG, SEA, RUG, ROW, MOB, JOB, CAT.

答:
在这里插入图片描述
没什么好说的,最后基数排序的结果是由三层的排续后得出的。

比较一下直接对首字母排序和基数排序的结果区别即可理解。

25. Chaining的复杂度

假设我们将一组n个键存储到一个大小为m的哈希表中。使用Chaining,最坏情况下的搜索时间(复杂度)是多少?

答:
O(n)当所有哈希键都映射到同一个条目,从而产生一个包含所有数据的链表时,就会发生这种情况。

26. 完美哈希

完美哈希是可实现的吗?

答:
是的。
举个例子:
假设一个键可以用一系列符号来表示,其中总共有p个不同的符号。我们可以给每个符号分配一个从0到(p-1)的数字。
Word为[x1,x2,x3…xn]其中x1,x2,x3…xn是符号。
在这里插入图片描述
那么hash (x)就是一个完美的哈希函数。

27. 绘制AVL树

插入以下值:2、1、4、5、9、3、6。

答:
在这里插入图片描述

28. 在AVL树中删除值

删除53:
在这里插入图片描述
答:

删除节点53将使树的根节点处于不平衡状态。通过向右旋转根节点并将子树“12”重新附加到节点“14”,树被重新平衡。

在这里插入图片描述

29. Dijkstra’s最短路径算法

S到T使用Dijkstra’s最短路径算法经过的顶点:
在这里插入图片描述
答:
SACET

当Dijkstra的最短路径算法到达顶点C时,‘D’和‘E’的距离值分别为7和6。所以下一个选择的顶点是E然后是T。

29. 加权图最短路径

在一个加权图中,假设使用最短路径算法正确地计算出从源’s’到目标’t ’ '的最短路径。
如果我们将每条边的权值增加1,最短路径是否始终保持不变?

答:
否,最短路径会变

假设:
A-D权值为4
A-B-C-D的权值是1+1+1=3
最短路径为A-B-C-D。

如果每条边权值+1:
A-D权值为5
A-B-C-D的权值是2+2+2=6
最短路径变为A-D了。

30. Dijkstra算法和Bellman Ford算法

假设给定一个图,所有边的权值都为正,由Dijkstra算法和Bellman Ford算法得到的最短路径可能不同,但路径权值总是相同的。这个说法是否正确?

答:
是的。

两种算法都保证产生相同的最短路径权值,但如果有多个最短路径,Dijkstra会根据贪婪策略选择最短路径,Bellman-Ford会根据松弛顺序选择最短路径。因此,两个最短路径树可能是不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值