- 博客(10)
- 收藏
- 关注
原创 【算法导论学习笔记】多源最短路径 矩阵乘法解决 Floyd-Warshall算法解决
(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。这里讲的顶点对之间的最短路径是基于动态规划在图中的实现。表示法来表示一个图,因为相对邻接表来说,邻接矩阵表示要容易些,并且采用自底而下的算法来计算最短路径权重。从任意节点i到任意节点j的最短路径不外乎2种可能,1是直接从i到j,2是从i经过若干个节点k到j。
2023-04-17 19:36:38 389
原创 【算法导论学习笔记】 单源最短路径 Dijkstra算法 Bellman-Ford算法 SPFA算法
贝尔曼-福特算法(Bellman-Ford)是由理查德·贝尔曼(Richard Bellman)和莱斯特·福特创立的,求解单源最短路径问题的一种算法。
2023-04-17 19:35:38 493 1
原创 动态规划:子集和问题 石子堆合成问题
设桌上摆着n堆棋子(每个棋子完全相同,每堆棋子的数量为任意正整数),形成直线一排,现在计划将所有的棋子合并成一排,但每次只能选择相邻的两堆棋子合并成新的一堆,每次合并所耗费的力气为这两堆棋子的数量之和。,an}包含n个整数,s是一个正整数,采用动态规划的思想设计一个算法,判断集合A是否存在一个子集B,使B中的所有元素和为s,写出思想、伪代码,并分析算法的时间复杂度和空间复杂度。采用动态规划的思想:假设P(n,sum)表示A集合中包括前n个元素的集合中,是否存在一个子集B,使B中所有元素的和为sum。
2023-04-04 18:52:47 796
原创 算法导论-分而治之-最大子数组(含动态规划解法)
分治法把一个问题分成(同类的)几个子问题。递归地解决(征服)每个子问题。将子问题的解决方案组合成整体解决方案。通常的使用将大小为n的问题分成两个大小为n / 2的子问题。递归求解(攻克)两个子问题。将两个方案组合成整体方案。当子问题足够大以进行递归求解时,称其为递归情况(recursive case)一旦子问题变得很小,以至不再需要递归的程度,就说递归“结束(bottom out)”了,已经回到了基本情况(base case)
2023-03-28 21:06:36 1933
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人