1. A distributed data processing system employing negotiation among autonomous agents for allocation of resources and comprising: a communications network for passing messages between computers connected thereto; a plurality of computers connected to said network for running programs thereon including at least first and second autonomous agents; each said agent receives a graph associated therewith and wherein the graph represents for the associated agent what resources that agent has and what task or tasks that agent may perform and each said agent employs the associated said graph to determine what resource or resources are needed by that agent to carry out the task or tasks to be performed by that agent; and, said agents negotiate with each other for the resources needed to carry out the task or tasks to be performed by said agents.