算法是指解决问题的准确方法或步骤。
算法的时间复杂度,是用来衡量算法的运行时间,记做O(f(N)),算法执行的时间的增长速度可以用f(N)表示。
贪心法就是在每一步选择中都做最好的选择,从而希望结果是最好的算法。
将一个难以解决的大问题,分割成多个较小的相同问题,逐个击破。
搜索算法是指利用计算机的高性能来有目的地穷举一个问题的部分或全部解决方法,从而求出问题的解。
递归是指在一个方法函数中直接或者间接的调用自身。
指对一个算法所需要的计算时间和存储空间的分析。
…
1.哈夫曼树
哈夫曼树指带权路径最短的二叉树,也叫做最优二叉树。
带权路径=根节点到该节点的路径*该节点的权值
例子:
节点ABCDE权值285107哈夫曼树构建过程:
1.先取出最小的两个节点,小的在左边,大的在右边
此时AC:7 2.继续以上步骤,去掉A和C,加入AC
选择AC和E组合
3.重复以上步骤
这次选择B、D
4.此时只剩BD和ACE两个,组合他们,这就是例子的哈夫曼树 路径长度就是该节点的层数-1,如E结点的路径长度为3-1=2
哈夫曼树的总带权路径长度用WPL表示,该哈夫曼树的WPL=2*7+3*2+3*5+2*8+2*10=71
2.哈夫曼编码
在哈夫曼树中。左边代表0,右边代表1,以上面的例子为例
此时A结点的哈弗曼编码就是000,B的是10,C的是001,D的是11,E的是01
1.Kruskal算法
算法思想: 根据边的权值从小到大排序,然后从最小的边开始一一检查,如果不会构成回路则添加进结果集。
2.Prim算法
算法思想:
选择任意一个顶点加入到集合A,其他顶点在集合B选择一个顶点在A一个顶点在B并且权值最小的边加入到最小生成树然后将该边的在B的顶点加入到集合A重复以上步骤,直到全部加入到集合A