Because of the ubiquity of computer networks, computer systems are increasingly acting as elements in a complex, distributed community of people and systems, rather than solitary devices employed by a single person. Individuals in such communities may interact in various ways- competing, coordinating, or collaborating. This talk will focus on those multi-agent scenarios and applications in which groups of agents work together to accomplish a joint activity or to achieve a common goal; the agents collaborate. Many applications have been proposed that require such collaborative endeavors [1, 2, 5, 18, 21, inter alia].