![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计
文章平均质量分 73
进阶白小鑫
这个作者很懒,什么都没留下…
展开
-
算法设计-回溯法——0-1背包问题
算法介绍回溯法:回溯法又称试探法。回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。回溯算法的基本思想:从一条路往前走,能进则进,不能进则退回来,换一条路再试。问题实例问题描述:题目:给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.输入格式:输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。以后N行每行两个数Wi和Vi,表示物品的重量和价值输出格式:输出原创 2021-01-05 17:51:20 · 3781 阅读 · 2 评论 -
算法设计-贪心算法——最小生成树Prim和Kruskal算法
算法介绍贪心算法:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。即通过每次贪最优的情况,直到问题结束,是通过局部最优达到整体最优的解决问题的方法。问题实例问题描述:连通带权图G=(V,E) 其中V={1,2,3,4,5,6},E为10条边的集合,如上图。请编程求解该图G的一棵最小生成树分别使用Prim算法和Kruskal算法解决该问题(一)Prim算法贪心策略:每次选择到下一顶点权值最小的边伪代码:①将所有顶点放入集合V{}中,设最小生成树顶点集S{}原创 2020-12-07 14:47:35 · 3595 阅读 · 0 评论 -
算法设计-动态规划——0-1背包问题
算法介绍动态规划:动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的(自底向上求解,底层的解可作为上层解的基础 )。问题实例问题描述:题目:给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.原创 2020-12-08 16:48:01 · 1101 阅读 · 0 评论 -
算法设计-回溯法——8皇后问题
算法介绍回溯法:回溯法又称试探法。回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。回溯算法的基本思想:从一条路往前走,能进则进,不能进则退回来,换一条路再试。问题实例问题描述:题目:要求用回溯法求解 8-皇后问题,使放置在 8*8 棋盘上的 8 个皇后彼此不受攻击,即:任 何两个皇后都不在同一行、同一列或同一斜线上。请输出 8 皇后问题的所有可行解。问题分析在解决八皇后问题时,如果采用穷举法,则需要列举8^8种情形。采用回溯法,则是对解空间使用原创 2020-12-10 14:31:45 · 2224 阅读 · 2 评论 -
算法设计-动态规划——最长公共子序列
算法介绍动态规划:回溯法又称试探法。回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。回溯算法的基本思想:从一条路往前走,能进则进,不能进则退回来,换一条路再试。问题实例问题描述:题目:用回溯法编写一个递归程序解决如下装载问题:有 n 个集装箱要装上 2 艘载重分别为 c1 和 c2的轮船,其中集装箱 i 的重量为 wi(1≤ i ≤ n),且∑ ???????? ≤ ????1 + ????2 ???? ????=1 。问是否有一个合理 的装载方案原创 2020-12-15 20:11:06 · 2618 阅读 · 0 评论 -
算法设计-分支界限法——装载问题
算法介绍分支界限法:分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。与回溯法的区别:(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解原创 2020-12-27 10:18:35 · 5689 阅读 · 5 评论 -
算法设计-回溯法——装载问题
算法介绍回溯法:回溯法又称试探法。回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。回溯算法的基本思想:从一条路往前走,能进则进,不能进则退回来,换一条路再试。问题实例问题描述:题目:用回溯法编写一个递归程序解决如下装载问题:有 n 个集装箱要装上 2 艘载重分别为 c1 和 c2的轮船,其中集装箱 i 的重量为 wi(1≤ i ≤ n),且∑ ???????? ≤ ????1 + ????2 ???? ????=1 。问是否有一个合理 的装载方案可原创 2020-12-13 11:35:59 · 19968 阅读 · 5 评论 -
算法设计-分支界限法——单源最短路径问题
算法介绍分支界限法:分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。与回溯法的区别:(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解原创 2020-12-22 11:38:07 · 13060 阅读 · 3 评论