Multiagent systems provide a natural, intuitive model for a wide array of real world problems, where possibly heterogeneous components strive towards a common goal. Under the multiagent approach, these components can be implemented as independent agents. This ample flexibility has swayed a number of developers into adopting this scheme when dealing with industrial scale problems. On many of these systems, one can observe an striking phenomenon: the system as a whole is able to reach objectives beyond the individual capabilities of its members. For instance, suppose there are two roommates, and depict a large desk heavy enough to make changing its location an impossible task for either of them. However, the desk can be easily moved if they agree to coordinate their effort. This simple example underscores the important role of the interaction among agents in these systems. This interaction, when conducted in an orderly fashion, increases the potential of the system as a whole.