1. A method for solving at least one computationally significant problem on a distributed basis by means of a peer to peer network of associated and interconnected agent computers, wherein each agent computer may be in a parent relationship with one or more other agent computers (“parent computer”) and in a child relationship with one or more other agent computers (“child computer”) comprising the steps of: (a) defining a computationally significant problem for solving at one or more of the agent computers as a series of sub-problems, such one or more agent computers being the first computer(s); (b) providing a distributed processing management utility at each of the plurality of associated agent computers for enabling distributed solution of the problem; (c) defining, by operation of the first computer's distributed processing management utility, one or more sub-trees for the problem using a branch and bound algorithm; (d) recursively assigning each sub-tree to one of the agent computers, each agent computer being operable to solve the sub-tree and to define, by operation of its distributed processing management utility, one or more further sub-trees that are each assigned to one of the other agent computers for solving or defining of yet further sub-trees as required; and (e) recursively: (i) returning the result of each sub-tree solution to the agent computer that assigned the corresponding sub-tree; and (ii) aggregating the sub-tree solutions on the agent computer that assigned the corresponding sub-trees to provide a solution to the sub-tree assigned to that agent computer; until the first computer(s) aggregates the sub-tree solutions to provide a solution to the problem; wherein each agent computer, depending on the distributed solution, communicates with its one or more parent computers and its one or more child computers; each agent computer (whether a parent computer or child computer) can perform a sub-problem; and using the distributed processing management utility each agent computer (whether a parent computer or child computer) can determine whether to assign sub-problems to other child computers and assign the sub-problems based on this determination.