NYU AI作业习题-活动安排问题 BFS+DFS Iterative deepening depth-first search
题目链接 http://cs.nyu.edu/courses/spring12/CSCI-GA.2560-001/prog1.html
题目大意:给定n个任务的时间、价值及先后序关系,求一个可行的任务子集,使得时间之和不大于deadline,价值之和不小于targetVaule,且不可出现逆序。
算法思路:题目已经给出算法,转化为状态空间搜索问题(tree-structured state space search problem),先对结点拓扑排序,存储前序的结点关系,然后先对状态搜索树进行BFS,可行的状态压入队列,到达到限制值后,再以队列中的状态为起点进行迭代深入搜索( Iterative deepening depth-first search)。迭代深入搜索算法就是从状态空间搜索树中某一结点如根结点开始,多次迭代DFS,每次DFS设置最大搜索深度depth,depth不断递增至搜索至树叶,伪代码如下
迭代深入搜索算法具体参见维基百科http://en.wikipedia.org/wiki/Iterative_deepening_depth-first_search
此题求解源代码如下
测试代码