摘要:
克鲁斯卡尔Kruskal算法同Prim算法一样,都是求最小生成树。Kruskal是不断的找最短边,加入集合,且不构成回路。 所以,我们可以给每个点定义一个集合,一边的起点和终点查看是否属于同一集合,如果是说明是回路,不成立,找下一条边。如果不属于同一集合,则成立,并把其中的一个集合的全部节点的集合改 阅读全文
摘要:
Prim与Dijistra算法有异曲同工之妙,只不过Dijistra是求最短路径,每次添加到集合中的是到固定起始点的最短距离,而Prim是求最小生成树,是整个图所有权重的最小和,每次添加到集合中的是到整个集合最短距离的点。 Prim算法具体如下所示: 阅读全文
摘要:
Huffman编码,权重越大,离根节点越大。所以就是不断的选取两个最小的树,然后组成一颗新树,加入集合,然后去除已选的两棵树。不断的循环,直到最后的树的集合只剩下一棵,则构建完成,最后输出Huffman编码即可。 具体代码如下: 阅读全文
摘要:
贪心算法的主要思想就是通过不断求解局部最优解,最后求出最优解或者最优解的近似值,不能保证一定为最优解。 Dijistra算法,选取没有选择过的点到已经选择过得点组成的集合中最短的距离的点。然后更新已选择的点到没有选择的点的距离。 已经选择的点是一个整体。 具体算法如下: 阅读全文