找到 510 篇文章 算法

霍夫曼编码

Arnab Chakraborty
更新于 2019年8月5日 07:44:26

8K+ 次浏览

霍夫曼编码是一种无损数据压缩算法。在此算法中,为不同的输入字符分配可变长度的代码。代码长度与字符的使用频率相关。最常出现的字符具有最短的代码,而最不常出现的字符具有更长的代码。主要有两个部分。第一个是创建霍夫曼树,另一个是遍历树以查找代码。例如,考虑一些字符串“YYYZXXYYX”,字符 Y 的频率大于 X,而字符 Z 的频率最低。因此,Y 的代码长度小于 X,X 的代码... 阅读更多

所有节点对的最短路径

Arnab Chakraborty
更新于 2023年11月7日 03:20:32

70K+ 次浏览

所有节点对的最短路径算法也称为弗洛伊德-沃舍尔算法,用于查找给定加权图中所有节点对的最短路径问题。此算法的结果将生成一个矩阵,该矩阵将表示图中任何节点到所有其他节点的最小距离。首先,输出矩阵与给定的图的成本矩阵相同。之后,将使用所有顶点 k 作为中间顶点来更新输出矩阵。此算法的时间复杂度为 O(V3),其中 V 是图中顶点的数量。输入 - ... 阅读更多

单源最短路径,任意权重

Arnab Chakraborty
更新于 2020年7月2日 12:59:46

9K+ 次浏览

单源最短路径算法(对于任意权重正或负)也称为 Bellman-Ford 算法,用于查找从源顶点到任何其他顶点的最小距离。此算法与 Dijkstra 算法的主要区别在于,在 Dijkstra 算法中,我们无法处理负权重,但在这里我们可以轻松地处理它。Bellman-Ford 算法自底向上地找到距离。首先,它找到路径中只有一条边的那些距离。之后增加路径长度以找到所有可能的解决方案。输入 - 图的成本矩阵:0 6 ∞ 7 ∞ ∞ ... 阅读更多

单源最短路径,非负权重

Arnab Chakraborty
更新于 2020年7月2日 13:00:42

725 次浏览

单源最短路径算法(对于非负权重)也称为 Dijkstra 算法。给定一个图 G(V, E) 及其邻接矩阵表示,并且还提供了一个源顶点。Dijkstra 算法用于查找从源顶点到图 G 的任何其他顶点的最小最短路径。从起始节点到任何其他节点,找到最小的距离。在此问题中,图使用邻接矩阵表示。(为此目的,成本矩阵和邻接矩阵相似)。输入 - 邻接矩阵 - 0 3 6 ∞ ∞ ∞ ∞ 3 0 2 1 ∞ ∞ ... 阅读更多

Prim(最小生成树)MST 算法

Arnab Chakraborty
更新于 2020年7月2日 13:02:11

967 次浏览

给定一个连通图 G(V, E),并且给出了每条边的权重或成本。Prim 算法将从图 G 中找到最小生成树。它是一种增量树方法。此算法需要一个种子值来启动树。种子顶点被扩展以形成整个树。该问题将使用两个集合来解决。一个集合保存已选择的节点,另一个集合保存尚未考虑的项目。从种子顶点开始,它获取相邻顶点,基于最小边成本,因此它通过获取... 阅读更多

克鲁斯卡尔(最小生成树)MST 算法

Arnab Chakraborty
更新于 2020年6月11日 19:45:15

1K+ 次浏览

给定一个连通图 G(V, E),并且给出了每条边的权重或成本。克鲁斯卡尔算法将使用图和成本找到最小生成树。它是一种合并树方法。最初存在不同的树,此算法将通过获取成本最小的那些边并将它们合并成一棵树来合并它们。在此问题中,所有边都已列出,并根据其成本进行排序。从列表中,取出成本最小的边并添加到树中,并且每次都会检查该边是否形成循环,... 阅读更多

图的广度优先搜索或 BFS

Arnab Chakraborty
更新于 2019年8月5日 06:55:55

2K+ 次浏览

广度优先搜索 (BFS) 遍历是一种算法,用于访问给定图的所有节点。在此遍历算法中,选择一个节点,然后逐个访问所有相邻节点。完成所有相邻顶点后,它将进一步移动以检查另一个顶点并再次检查其相邻顶点。要实现此算法,我们需要使用队列数据结构。所有相邻顶点都添加到队列中,当所有相邻顶点完成后,从队列中删除一个项目并开始遍历该... 阅读更多

图的深度优先搜索或 DFS

Arnab Chakraborty
更新于 2019年8月5日 06:50:03

912 次浏览

深度优先搜索 (DFS) 是一种图遍历算法。在此算法中,给定一个起始顶点,并且当找到一个相邻顶点时,它首先移动到该相邻顶点并尝试以相同的方式遍历。它尽可能地遍历整个深度,之后它回溯以到达以前的顶点以找到新的路径。要以迭代方式实现 DFS,我们需要使用栈数据结构。如果我们想递归地执行它,则不需要外部栈,它可以在递归调用中使用内部栈。输入:邻接... 阅读更多

图及其表示

Arnab Chakraborty
更新于 2019年8月5日 06:43:27

7K+ 次浏览

图是一种非线性数据结构。它使用节点表示数据,并使用边表示它们之间的关系。一个图 G 有两个部分。顶点和边。顶点使用集合 V 表示,边使用集合 E 表示。因此,图表示法为 G(V, E)。让我们看一个例子来了解一下。在此图中,有五个顶点和五条边。这些边是有向的。例如,如果我们选择连接顶点 B 和 D 的边,则源顶点为 B,目标顶点为 D。因此,我们可以从 B 移动到 D,但不能从... 阅读更多

均摊复杂度

Arnab Chakraborty
更新于 2019年8月5日 06:38:15

3K+ 次浏览

均摊分析此分析用于偶尔的操作非常慢,但大多数执行频率非常高的操作都更快。在数据结构中,我们需要对哈希表、不相交集等进行均摊分析。在哈希表中,大多数情况下搜索时间复杂度为 O(1),但有时它会执行 O(n) 操作。当我们想要在哈希表中搜索或插入元素时,对于大多数情况,它都是常数时间完成任务,但是当发生冲突时,它需要 O(n) 次操作来解决冲突。聚合方法聚合方法用于... 阅读更多

广告