2013年2月19日

【转】递归与回溯

摘要: 回溯(backtracking)是一种系统地搜索问题解答的方法。为了实现回溯,首先需要为问题定义一个解空间(solution space),这个空间必须至少包含问题的一个解(可能是最优的)。下一步是组织解空间以便它能被容易地搜索。典型的组织方法是图(迷宫问题)或树(N皇后问题)。一旦定义了解空间的组织方法,这个空间即可按深度优先的方法从开始节点进行搜索。回溯方法的步骤如下:1) 定义一个解空间,它包含问题的解。2) 用适于搜索的方式组织该空间。3) 用深度优先法搜索该空间,利用限界函数避免移动到不可能产生解的子空间。回溯算法的一个有趣的特性是在搜索执行的同时产生解空间。在搜索期间的任何时刻,仅 阅读全文

posted @ 2013-02-19 21:14 joygpwan 阅读(2937) 评论(0) 推荐(0)

【转】递归函数时间复杂度分析

摘要: (1)递归执行过程例子:求N!。这是一个简单的"累乘"问题,用递归算法也能解决。n!=n*(n-1)!n>10!=1,1!=1n=0,1因此,递归算法如下:Java代码fact(intn){if(n==0||n==1)return1;elsereturnn*fact(n-1);}以n=3为例,看运行过程如下:fact(3)-----fact(2)-----fact(1)------fact(2)-----fact(3)------------------------------>------------------------------>递归回溯递归算法 阅读全文

posted @ 2013-02-19 21:08 joygpwan 阅读(265) 评论(0) 推荐(0)

导航