Hacker News new | ask | show | jobs
by hcarvalhoalves 4901 days ago
Very interesting, but the code example used in the documentation is pretty poor:

    from simpleai.search import SearchProblem, astar

    GOAL = 'HELLO WORLD'

    class HelloProblem(SearchProblem):
        def actions(self, state):
            if len(state) < len(GOAL):
                return list(' ABCDEFGHIJKLMNOPQRSTUVWXYZ')
            else:
                return []

        def result(self, state, action):
            return state + action

        def is_goal(self, state):
            return state == GOAL

        def heuristic(self, state):
            # how far are we from the goal?
            wrong = sum([1 if state[i] != GOAL[i] else 0
                        for i in range(len(state))])
            missing = len(GOAL) - len(state)
            return wrong + missing
Among other things, why create a class and hardcode the GOAL as a constant?
2 comments

It's just illustrative, to understand how you give the information needed to run one of the algorithms.

May be we can think of a better example, will try :)

besides, not always you want to find the goal state. Many problems are about findig the path of actions from the initial state to the goal state, both known.