算法
文章平均质量分 65
七七喝椰奶
基本功决定高度
展开
-
Huffman算法
求解最优二叉树问题通常使用动态规划算法中的一种称为"Huffman算法"或者"Huffman编码"。具体步骤如下:1. 首先,统计所有节点的频率或者权重,并按照频率或者权重对节点进行排序。2. 创建一个包含所有节点的森林(由单个节点组成的树)。3. 从森林中选择两个具有最小频率或者权重的节点,并创建一个新的父节点,频率或者权重等于这两个节点的频率或者权重之和。4. 将这两个节点作为新节点的左右子节点,并将新节点加入到森林中。原创 2023-10-18 16:30:54 · 360 阅读 · 0 评论 -
Kruskal算法
Kruskal算法是一种最小生成树算法,用于在带有权重的连通图中找到最小生成树。一个连通图由一组节点和连接这些节点的边组成,每条边都有一个权重。Kruskal算法的基本思想是:从边的权重从小到大进行排序,然后依次考虑每条边。在考虑每条边时,判断当前的边是否会形成环路,如果不会形成环路,则将该边加入最小生成树的边集合中。具体算法步骤如下:1. 初始化一个空的最小生成树边集合。2. 将所有边按照权重从小到大排序。原创 2023-10-18 16:17:13 · 271 阅读 · 0 评论 -
floyd算法
弗洛伊德算法(Floyd’s algorithm),也被称为弗洛伊德-沃舍尔算法(Floyd-Warshall algorithm),是一种用于解决图中所有节点对之间最短路径的动态规划算法。该算法可以在有向图或带权无向图中找到所有节点之间的最短路径。它的核心思想是通过所有中间节点逐步迭代来更新每对节点之间的最短路径。弗洛伊德算法的时间复杂度为O(n^3),其中n是节点的数量。它可以很好地处理带有负权边的图,但是如果图中存在负权环,该算法将无法工作。原创 2023-10-17 15:59:28 · 220 阅读 · 0 评论 -
Dijkstra算法
Dijkstra算法是一种用于解决最短路径问题的图算法,由荷兰计算机科学家Edsger W. Dijkstra在1956年提出。它可以找到两个节点之间的最短路径,但仅适用于没有负权边的有向图或无向图。原创 2023-10-13 17:22:39 · 216 阅读 · 0 评论