
算法学习
code_Yzhang
这个作者很懒,什么都没留下…
展开
-
算法设计与分析案例代码总结(四):分支界限法
分支界限法简单概述分支界限法类似与回溯法,也是在问题解空间中搜索问题解的一种算法。分支界限法与回溯法对比:1. 求解目标不同:回溯法可以用于求解目标是找出解空间树中满足约束条件的所有解,而分支界限法求解的目标通常是找出一个满足约束条件的解,或者最优解。2. 搜索方式不同:回溯法主要以深度优先的方式搜索解空间树,而分支界限法则主要以广度优先或者函数优先的方式搜索解空间树。基本思想在分支...原创 2019-12-17 21:11:46 · 2591 阅读 · 0 评论 -
算法设计与分析案例代码总结(三):回溯法
回溯法简单概述 回溯法(深度优先搜索),其实是蛮力搜索法的一种升级版本,它把问题的解空间转换为了图或者树的结构表示,然后使用深度优先策略进行遍历,遍历的过程寻找所有的最优解或可行解。 回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其...原创 2019-12-04 21:35:02 · 1626 阅读 · 0 评论 -
算法设计与分析案例代码总结(二):动态规划
动态规划 动态规划是一种使多阶段决策过程最优的通用方法。与分治法类似,其思想把求解的问题分成许多阶段或多个子问题,然后按顺序求解各子问题。但动态规划中分解得到的子问题往往不是相互独立的,但不同子问题的数目常常只有多项式级。所以在动态规划中,我们要保留已解决子问题的解,避免大量重复计算,从而提升算法效率。 以下是各种案例的原理代码总结:矩阵连乘问题问题描述:给定n个矩阵{A1,A2,…,A...原创 2019-11-16 21:30:40 · 611 阅读 · 0 评论 -
算法设计与分析案例代码总结(一):分治法
分治法代码是用java写的封装在类中的函数,具体调用测试还需要实现求集合的全排列实现原理: 对于不重复的一个序列集合进行全排列,以{a,b,c}为例:p{a,b,c}={a}p{b,c}+{b}p{a,c}+{c}p{a,b} 也就是说,对于n个元素的全排列,就是p(a1,a2,…,an}={a1}p{a2,a3,…,an}+{a2}p{a1,a3,…,an}+…+{an}p{a1,...原创 2019-11-05 19:30:53 · 1141 阅读 · 0 评论