📅  最后修改于: 2020-12-10 03:44:14             🧑  作者: Mango
以下是几种流行的设计方法的列表:
1.分而治之:这是一种自上而下的方法。遵循分而治之技术的算法包括三个步骤:
2.贪婪技术:贪婪方法用于解决优化问题。一个优化问题就是给我们提供一组输入值,这些输入值需要最大化或最小化(称为目标),即一些约束或条件。
3.动态编程:动态编程是一种自下而上的方法,我们先解决所有可能的小问题,然后将它们组合起来以解决更大的问题。
当复制子问题的数量成倍增加时,这特别有用。动态规划通常与优化问题有关。
4.分支和边界:在分支和边界算法中,一个不能约束的子问题必须被分成至少两个新的受限子问题。分支和边界算法是非凸问题中全局优化的方法。分支和边界算法可能很慢,但是在最坏的情况下,它们需要的工作量随问题的大小呈指数增长,但是在某些情况下,我们很幸运,而且方法的工作量也要少得多。
5.随机算法:随机算法定义为允许访问独立的,无偏的随机比特源的算法,然后允许使用这些随机比特来影响其计算。
6.回溯算法:回溯算法会尝试每种可能性,直到找到正确的可能性为止。这是对可能解决方案的深度优先搜索。在搜索过程中,如果替代方法不起作用,则返回到选择点,即提供不同替代方法的位置,然后尝试下一个替代方法。
7.随机算法:随机算法在计算过程中至少使用随机数一次。
示例1:在“快速排序”中,使用随机数选择枢轴。
示例2:尝试通过选择随机数作为可能的约数来分解大数。
这是一种证明技术。我们使用循环不变式来帮助我们理解为什么算法正确。为了证明关于循环的陈述S是正确的,请定义关于一系列较小陈述S 0 S 1 …. S k的S,其中,