1. A method to search for a solution to a problem in a domain, the method comprising: obtaining a plurality of agents each operable to produce one or more numerical bids and to propose one or more actions and a plurality of nodes each representing a state of said domain; automatically selecting a respective agent and a respective node based on bids from the plurality of agents; and automatically adding a new node representing a new state which is obtained by applying an action proposed by the selected agent to said state represented by the selected node.