1. A method of routing a mobile software agent between a source node and a destination node in a network, said method comprising: causing the mobile software agent to move back and forth between the source node and the destination node via intermediate nodes in accordance with a predetermined set of rules; causing the mobile software agent to memorize a route between the source node and the destination node; and identifying other such mobile software agents when such mobile software agents are on the same intermediate node at the same time; wherein upon another such mobile software agent being identified, the thus identified mobile software agents exchange information with each other to optimize paths memorized by said mobile software agents.