算法设计与分析
文章平均质量分 75
算法设计与分析
h08.14
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Backtracking回溯
依照DFS算法思想遍历整个prossible 3-coloring graph 有边连接的节点颜色不能相同称为非法 非法在赋予颜色节点打× 如下图是求解一种合法解。x1=2相当于第一个皇后放在(1,2)第一行第二列 每次依次从xn=1一直到xn=n遍历n为行列数。同一行同一列同一斜线(对角线)都不能存在两个皇后。+3**n n为节点个数。与三色问题一样 依照DFS算法思路。原创 2024-05-20 15:57:06 · 751 阅读 · 0 评论 -
Graph Traversal
但是 当访问回根节点时 还没有访问完所有节点 此时挑选剩余节点中能往下走的起点开始 其先序为前面先序max加1 到底后(根据原有规则 先序一直加1)后序为根节点后序加1。到底后倒序 底部后序为1退到再次有分叉的地方 注意当节点相邻节点有未访问时 后序还未开始计算 到最后回到根节点时 没有访问过的边也要让两节点相连 不过以虚线相连。子代指向祖先的为back edge 直接祖先?直接看画出的序列图 通过实线直接或间接连接 就存在直接?方向为祖先指向子代的为forward edge。原创 2024-05-12 14:51:26 · 925 阅读 · 0 评论 -
The Greedy Approach
Consider the fractional knapsack problem defined as follows. Given n items of sizes s1, s2, . . . , sn, and values v1, v2, . . . , vn and size C, the knapsack capacity, the objective is to find nonnegative real numbers x1, x2, . . . , xn, 0 ≤ xi ≤ 1, that原创 2024-04-22 14:28:19 · 1115 阅读 · 0 评论 -
The 0-1 Knapsack Problem KNAPSACK
首先,对于每个物品 i,初始化一个二维数组 V,其中 V[i, j] 表示在考虑前 i 个物品,并且背包容量为 j 时可以获得的最大价值。最后,返回 V[n, C],即考虑了所有物品后,在背包容量为 C 时可以获得的最大价值。原创 2024-04-15 16:01:18 · 1141 阅读 · 0 评论 -
The All-Pairs Shortest Path Problem FLOYD
假设输入是一个 n x n 的矩阵,表示有向图中每条边的长度,其中矩阵的第 i 行第 j 列表示从节点 i 到节点 j 的边的长度。输出是一个矩阵 D,其中 D[i, j] 表示从节点 i 到节点 j 的最短路径长度。外层循环 k 从 1 到 n,表示允许经过节点 k 的路径。中间两层循环 i 和 j 分别表示起点和终点节点,计算经过节点 k 的路径和不经过节点 k 的路径哪个更短,更新矩阵 D。最后,矩阵 D 中的值就是从节点 i 到节点 j 的最短路径长度。首先,将输入矩阵复制到一个新的矩阵 D 中。原创 2024-04-15 15:18:30 · 589 阅读 · 0 评论 -
Multi-Stage Optimal Decision Problems
overlapsubproblemsimpler;;subproblemrecurrenecsubproblem。原创 2024-04-15 15:07:11 · 595 阅读 · 0 评论 -
Matrix Chain Multiplication
然后,对数组 C 进行填充。首先,将对角线上的元素初始化为 0。然后,对于每条对角线,从左上角开始,计算出对应位置的最小乘法次数。对于每个对角线 d,从第一行到倒数第二行,计算每个位置 (i, j) 的最小乘法次数。首先,初始化一个二维数组 C,其中 C[i, j] 表示从矩阵 i 乘到 j 所需的最小乘法次数。最后,返回 C[1, n],即第一个矩阵到最后一个矩阵相乘所需的最小乘法次数。这个算法的时间复杂度是 O(n^3),其中 n 是矩阵的个数。原创 2024-04-08 16:15:03 · 1039 阅读 · 0 评论 -
The Longest Common Subsequence Problem
最后,返回数组 L 的最后一个元素 L[n, m],即字符串 A 和 B 的最长公共子序列的长度。【[轻松掌握动态规划]5.最长公共子序列 LCS】 https://www.bilibili.com/video/BV1ey4y1d7oD/?首先,初始化一个二维数组 L,其中 L[i, j] 表示字符串 A 的前 i 个字符和字符串 B 的前 j 个字符的最长公共子序列的长度。原创 2024-04-08 15:31:57 · 431 阅读 · 0 评论 -
The Dynamic Programming Paradigm
fn)=fn-1)+fn-2),n>2;f(1)=1,f(2)=1.recomputeasubproblemf(knintfibonacciif(list.get(n-1)!=0)returnlist.get(n-1);list.add(n-1)+fibonacci(n-2));returnlist.get(n);subproblemeachsubproblemonlyonce.nfor(inti。原创 2024-04-08 15:11:43 · 344 阅读 · 0 评论 -
The Closest Pair Problem
coordinate of S[n/2]向下取整 . Thus, all points in。原创 2024-04-08 14:35:47 · 1069 阅读 · 0 评论 -
Matrix Multiplication
这种方法可以使用更少的乘法来计算两个复数的乘积,比标准方法(需要四次乘法)更高效。原创 2024-04-08 14:06:02 · 321 阅读 · 0 评论 -
Quicksort
这个算法的作用是将数组中小于分割元素的元素放在它的左边,大于它的元素放在右边,同时找到分割元素的正确位置。原创 2024-04-01 14:56:50 · 461 阅读 · 0 评论 -
Selection: Finding the Median and the kth Smallest Element
这个算法的关键在于选择合适的主元(这里是 mm,即中位数的中位数),以确保每次递归都能将数组分成大致相等的两部分,从而保证算法的期望时间复杂度为 O(n),其中 n 是数组的大小。原创 2024-04-01 14:18:31 · 658 阅读 · 0 评论 -
寻找最大值最小值
如果是,直接比较这两个元素的大小,返回一个包含最小值和最大值的元组。,表示在数组 A 中索引范围为 0 到 7 的子数组中查找最小值和最大值。现在我们想要找出数组 A 中索引范围为 0 到 7 的最小值和最大值。:由于索引范围不止一个元素,因此我们继续进行后续处理。,表示数组 A 中索引范围为 0 到 7 的最小值是。:如果待处理范围不止一个元素,则计算中间位置。:得到子范围的最小值和最大值后,分别用变量。然后,取这两个子范围的最小值。:最后,合并左右子范围的结果。,表示数组 A 中待处理的范围。原创 2024-03-27 00:00:00 · 975 阅读 · 0 评论 -
Binary Search 找特定数值及其所在位置
数组中间元素为 A[5] = 11,与目标元素 x = 11 相等,因此找到了目标元素,返回。:最终返回结果为 5,表示目标元素 x = 11 在数组 A 中的位置是索引 5。:如果递归过程找到了元素 x,则返回其索引位置;否则返回 0,表示未找到。现在我们要查找元素 x = 11 在数组 A 中的位置。,如果是,则表示找不到元素 x,返回 0。:输入包括一个数组 A 和一个元素 x。为 10(数组的长度为 10)。中,首先检查低位索引。,并判断数组中间元素。原创 2024-03-25 16:01:37 · 581 阅读 · 0 评论 -
Mergesort元素按非降序排序
如果不是,则表示数组已经是有序的,无需继续排序,直接返回。:递归调用结束后,数组 A 中的所有元素将会被排序。,然后分别对左半部分和右半部分进行递归调用。:算法接受一个数组 A 和数组的起始索引。来合并左半部分和右半部分。中,首先检查起始索引。,则计算数组的中间位置。:递归调用完成后,调用。原创 2024-03-31 00:00:00 · 787 阅读 · 0 评论 -
Generating Permutations全排列
generating12……Qnn!n!perm1takesnn!to outputNowIn theperm1mntimesperm1(2). WhenniterationsfnThe secondalgorithmxx x……xxputninPn −1P[2..nninPall then −P[1]andP[3..nninPthe firstn−P[1..2] andP[4。原创 2024-03-27 00:00:00 · 766 阅读 · 0 评论 -
Finding the Majority Element寻找主元素
遍历序列中的每个元素,统计它的出现次数,然后检查是否有任何一个元素的出现次数超过了 n/2。如果存在这样的元素,则返回该元素作为主要元素;第一阶段对序列进行遍历,对每个元素进行投票,候选主要元素的选取依赖于其出现的次数。第二次遍历序列,统计候选主要元素的出现次数。如果出现次数超过序列长度的一半,则候选主要元素就是主要元素;将候选主要元素设为序列中的第一个元素,计数器初始化为 1。遍历完整个序列后,得到的候选主要元素可能是主要元素,但还需要进行进一步验证。先对序列进行排序,然后检查中间元素是否为主要元素。原创 2024-03-18 15:30:11 · 515 阅读 · 0 评论 -
Induction or tail-recursion
comparisons 元素比较次数。原创 2024-03-18 15:00:55 · 443 阅读 · 0 评论 -
Solution of Divide-and-Conquer Recurrences分而治之的递归
原创 2024-03-18 14:35:47 · 444 阅读 · 0 评论 -
some elementary inhomogeneous recurrences that arise frequently in the analysis of algorithms基本不均匀递归
原创 2024-03-18 14:19:24 · 409 阅读 · 0 评论 -
Solution of linear homogeneous recurrences 线性同质递归的求解
fn) =afn −f(0).SincenLetr1andr2isHerec1andc2fn0) andfn0+ 1).原创 2024-03-17 17:11:51 · 491 阅读 · 1 评论
分享