常用算法

分治法:对于一个规模为n的问题,若该问题可以容易地解决则直接解决,否则将问题分解成k个规模较小的子问题,

              这些子问题相互独立且与原问题形式相同,递归的地解决子问题,然后将子问题的解合并得到原问题的解。

    凡涉及到分组解决的都是分治法(如二分查找、归并排序、快速排序等)。

 

回溯法:有“通用的解题法”之称,可以系统地搜索一个问题的所有解或任一解。在包含问题的所有解的解空间树中,

              按照深度优先的策略,从根节点触发搜索解空间树。搜索至任一结点时,总是先判断该结点是否肯定不包含问题的解,

              如果不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先的策略进行搜索。

              一般用于解决迷宫类的问题。

 

动态规划法:在求解问题中,对于每一步决策,列出各种可能的局部解,再依据某种判定条件,

                     舍弃哪些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解。

                     本质也是将复杂的问题划分成一个个子问题,与分治法不同的是每个子问题间不是相互独立的,并且不全都相同。

                     常用于求解具有某种最优性质的问题。此算法会将大量精力放在前期构造表格上面,其会对每-步,列出各种可能的答案,

                     这些答案会存储起来,最终要得出某个结果时,是通过查询这张表来得到的。动态规划法不但每一步最优,全局也最优

 

贪心法:   总是做出在当前来说是最好的选择,而并不从整体上加以考虑,它所做的每步选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。

               由于它不比为了寻找最优解而穷尽所有可能解,因此其耗费时间少,一般可以快速得到满意的解,但得不到最优解
               局部贪心,只针对当前的步骤取最优,而非整体考虑。
               判断此类算法,就看算法是否是每一步都取最优,并且整体题意没有透露出最终结果是最优的。

posted @ 2020-09-30 14:59  一只小小的寄居蟹  阅读(147)  评论(0)    收藏  举报