Пример #1
0
def test_iterative_deepening_best_first_search():
    """
    Without heuristic it is basically the same as iterative_deepening_search.
    (here is the case where we use graph search).
    """
    for goal in range(1,10):
        p = AnnotatedProblem(EasyProblem(0, extra=goal))
        sol = next(iterative_deepening_best_first_search(p, search=graph_search))
        assert sol.state == goal
        assert p.nodes_expanded == sum([i*2 for i in range(1,goal+2)])-2
        assert p.goal_tests == sum([i+1 for i in range(1,goal+1)])+1
Пример #2
0
def test_iterative_deepening_best_first_search():
    """
    Without heuristic it is basically the same as iterative_deepening_search.
    (here is the case where we use graph search).
    """
    for goal in range(1, 10):
        p = AnnotatedProblem(EasyProblem(0, goal))
        sol = next(iterative_deepening_best_first_search(p, graph=True))
        assert sol.state_node.state == goal
        assert p.nodes_expanded == sum([i * 2 for i in range(1, goal + 2)]) - 2
        assert p.goal_tests == sum([i + 1 for i in range(1, goal + 1)]) + 1
Пример #3
0
def test_iterative_best_first_tree_search():
    """
    Test iterative deepening tree search. When there is a perfect heuristic the cost is increased
    until the heuristic is included, then search proceeds directly to the solution.
    """
    for goal in range(1,10):
        p = AnnotatedProblem(HeuristicEasyProblem(0, extra=goal))
        sol = next(iterative_deepening_best_first_search(p, search=tree_search))
        assert sol.state == goal
        assert p.nodes_expanded == goal*2 
        assert p.goal_tests == goal+1
Пример #4
0
def test_iterative_best_first_tree_search():
    """
    Test iterative deepening tree search. When there is a perfect heuristic the
    cost is increased until the heuristic is included, then search proceeds
    directly to the solution.
    """
    for goal in range(1, 10):
        p = AnnotatedProblem(HeuristicEasyProblem(0, goal))
        sol = next(iterative_deepening_best_first_search(p, graph=False))
        assert sol.state_node.state == goal
        assert p.nodes_expanded == goal * 2
        assert p.goal_tests == goal + 1