今日算法练习 (7-16)【1】

part one:

1. 哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近.    True 

2. 一棵哈夫曼树的带权路径长度等于其中所有叶结点的带权路径长度之和   True

3. (后序线索树)的遍历仍需要栈的支持

A : 前序遍历(中左右)、中序遍历(左中右)的最后访问的节点都是左或右叶节点, 叶节点是没有子树的,所以两个指针域空出来了,可以存放线索指针用于回溯。但是后续遍历(左右中),最后访问的是子树的根节点,子树根节点的两个指针域都指向子树了,所以不能空出来存放线索信息,只能借助栈存储。

4.一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到(108)个不同的码字

A:哈夫曼树并不是满二叉树,是正则二叉树(也叫正规二叉树),即其中只有度为0和度为2的结点 因为n0 = n2 + 1,n = n0 + n2; 所以 n = 2n0 - 1,即n0 = (n + 1) / 2;叶子结点n0对应的即是不同的编码。 至于满二叉树当然也是正则二叉树的特例。

5.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(Fast Binary Indexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的:TRIE树,寻找子节点开销:1次运算/每字符

A:注解:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。

6.在存储对称矩阵时,为了节省空间,通常可以用一个数组以行优先方式只存储上三角阵来实现。请问如果一个100*100的矩阵用上述方法来实现存储,在原矩阵中位置为选项中哪一项的元素可以通过访问数组下标为2017的位置来获得?(   )数组和矩阵下标均从0开始。 (70,22)

A:

7.

Hadoop的三种运行模式 :

          1.独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。

          2.伪分布式模式:  Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。

          3.完全分布式模式:Hadoop守护进程运行在一个集群上。

            注意:所谓分布式要启动守护进程 ,即:使用分布式hadoop时,要先启动一些准备程序进程,然后才能使用比如start-dfs.sh  start-yarn.sh。而本地模式不需要启动这些守护进程。

8. 算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。 Flase

A:算法描述是有很多种方式的,如自然语言,程序流程图,伪代码等。所以前半句是没有任何问题的,而后说到用高级语言描述,则算法就等同于程序。这里是有问题的。

程序=数据结构(数据对象【具有相同性质的若干数据元素的集合】+结构【数据元素之间的关系构成的集合】)+算法(算法是基于存储结构的运算实现的步骤或过程)

9. 旅行商问题是NP问题 True

10. 采用败者树进行K路平衡归并时,总的(包括访外)归并效率与K(有关)

11. 假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为______。(这里假定左节点的值小于右节点的值) 86,1011

       

12. 解决哈希冲突的链地址算法中,关于插入新数据项的时间表述正确的是:随装载因子线性增长

A1: 哈希表的装填因子

装填因子 = (哈希表中的记录数) /  (哈希表的长度)

装填因子是哈希表装满程度的标记因子。值越大,填入表中的数据元素越多,产生冲突的可能性越大。

A2: 链地址算法的基本思想是将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。插入新数据项的时间随装载因子线性增长。

A3:装载因子越大哈希表越满,新数据冲突可能性越大,加入同义的单链表的可能性越大,插入所花时间更长

13.把该题看成选择正确答案了,哈哈哈

A:关键活动组成了关键路径关键路径是图中的最长路径,关键路径长度代表整个工期的最短完成时间,关键活动延期完成,必将导致关键路径长度增加,即整个工期的最短完成时间增加,因此A正确。关键路径并不唯一,当有多条关键路径存在时,其中一条关键路径上的关键活动时间缩短,只能导致本条关键路径变成非关键路径,而无法缩短整个工期,因为其他关键路径没有变化,因此B项不正确。对于A,B两项要搞懂的是,任何一条关键路径上的关键活动变长了,都会使这条关键路径变成更长的关键路径,并且导致其他关键路径变成非关键路径(如果关键路径不唯一),因此整个工期延长。而某些关键活动缩短则不一定缩短整个工期。理解了A,B两项,C,D就很容易理解了。

14. 当一棵具有n个叶结点的二叉树的WPL值为最小时,称其树为哈夫曼树,且其二叉树的形状必是唯一的 False

15. 

A:

Dn+1=(4n-6)/n*Dn

D8=(4*7-6)/7 *D7

D7=(4*6-6)/6 *D6

D6=(4*5-6)/5 *D5

因为

D5=5

D8=132

A2:

卡特兰数是组合数学中一个常出现在各种计数问题中的数列。
卡特兰数的公式:h(0)=1,h(1)=1,h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)即
h(n)=h(n-1)*(4*n-2)/(n+1)即h(n)=C(2n,n)/(n+1);
卡特兰数可以运用的地方有:
1.括号化
矩阵连乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,
试问有几种括号化的方案;
2.出栈次序
一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列;
3.凸多边形三角划分
  在一个凸多边形中,通过若干条互不相交的对角线,把这个多边形划分成了若干个三角形。任务是
键盘上输入凸多边形的边数n,求不同划分的方案数f(n)?
  一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果她
从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
  在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数;
4.给定节点组成二叉搜索树
给定N个节点,能构成多少种不同的二叉搜索树;
5.n对括号正确匹配数目
给定n对括号,求括号正确配对的字符串数。

16. 求解最短路径的Floyd算法的时间复杂度为(O(n*n*n))

part two:

1. 算法分析的目的: 评价算法的效率

算法分析的两个主要方面就是分析算法的时间复杂度和空间复杂度,以考察算法的时间和空间效率;效率指的是空间和时间复杂度!

2. 线性表如果要频繁的执行插入和删除操作,该线性表采取的存储结构应该是链式存储。

A,散列更适合查找,不适合频繁更新

B,顺序存储插入和删除都需要移动大量元素

C,链式存储适合插入和删除操作

D,索引结构,每次插入和删除都需要更新索引,费时

3.KMP算法的最大特色是指示主串的指针不需回溯。 True

KMP算法是一种改进的字符串匹配算法,KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n).

4.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为\frac{n+1}{2}

5.哈夫曼树无左右子树之分 False

哈夫曼树是最优二叉树,而二叉树是一种树形结构,每个结点至多只有两棵子树,并且二叉树的子树有左右之分,次序不能任意颠倒。
6.采用二叉链表作为存储结构,树的前序遍历和其相应的二叉树的前序遍历的结果是一样的 True

                     

有:树的前序遍历对应二叉树的前序遍历,树的后序遍历和二叉树的中序遍历一致

7.串是一个是由任意个字符组成的序列。

8.关于图的说法有:

在有向图中,出度为0的结点称为叶子;用邻接矩阵表示图,容易判断任意两个结点之间是否有边相连,并求得各结点的度;若有向图G中从结点Vi到结点Vj有一条路径,则在图G的结点的线性序列中结点Vi,必在结点Vj之前的话,则称为一个拓扑序列;

错误说法:按深度方向遍历图和前序遍历树类似,得到的结果是唯一的。

9.设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动(n-i)个元素。

10.已知字符A、B、C、D的使用频率(权值)分别为22,7,9,27。对其进行HUFFMAN编码,各字符对应的编码为(  )

A(11) B(100)C(101) D(0)

11. 十字链表是无向图的一种存储结构    False

十字链表(Orthogonal List)是有向图的另一种 链式存储结构 。该结构可以看成是将有向图的 邻接表 和逆邻接表结合起来得到的。用十字链表来存储有向图,可以达到高效的存取效果。同时,代码的可读性也会得到提升。

12.设某散列表的长度为 100 ,散列函数 H(k)=k % P ,则 P 通常情况下最好选择 是97.

为减少发生冲突的可能性,取不大于散列表长度的素数时效果最好。

13.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要(14)长的二进制字符串?

                       

按照信息论的思路,总的信息熵为H=-(1/2)log(1/2)-(1/4)log(1/4)-2*(1/8)log(1/8)=1.75。也就说每一位的信息量为1.75bit,总共有8位,总的信息量为:1.75*8=14bit。编码压缩的极限就是14bit。

14.关键网络是AOE网络中:

从源点到汇点的路径长度最长的路径叫关键路径。

从开始顶点到达完成顶点的所有路径都是关键路径。一个AOE网的关键路径可以不止一条。

15.连通分量:在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图,否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。

16.前缀码:

设Q ={a1, a2, …, am}是一个0~1序列集合 . 如果Q中没有一个序列是另一个序列的前缀 , 则称Q为前缀码.

例如,{0,10,110}就是一个前缀码,而{0,10,101}就不是前缀码。

                                      

17.下面关于Z-Buffer算法的论断;

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值