Complex systems are made of networks. Despite their central role in many early attempts to understand complexity, the nature and dynamics of real networks was largely unknown until the emergence of Network Theory at the end of the 20th century. The discovery of the small world structure of social webs and particularly the finding that the graphs of most complex systems are highly heterogeneous marked the beginning of a new way of looking at the Internet, ecosystems, language, technology, brains or cells, to mention just a few examples. 

Our Lab has been studying the origins of complexity in very diverse systems, trying to find regularities that -some day- might become laws of complexity. We are particularly interested in networks because they provide a powerful, quantitative way of measuring complexity in interconnected systems but specially because they also help us understanding their origins and evolution. We contributed to the early development of the field by studying the networks that connect words in language, species in ecosystems, electronic components in circuits, proteins in cells or packages within large software projects. Most of these systems were already part of our ongoing work in the previous decade, but the new conceptual framework made a big difference. 


 The main thread and major contribution of our work has been to show that a large number of structures, correlations and regularities that pervade network complexity can be obtained "for free" as a consequence of the ways many of them grow. In particular, we have shown that tinkering, i. e. the common mechanism used in evolution to build new structures from available ones, is capable -with no other additional requirements, such as function or selection- to generate complex networks displaying small world behaviour, heterogeneity and even modularity. The last feature is specially important, since modularity is typically considered a highly important and desirable property of evolvable, robust and complex systems. We propose that tinkering is, even in some technological systems, responsible for the amplification phenomena that can shape a large part of network complexity.

We also have studied CCNN using general methods from evolutionary programming and information theory. We also study the optimisation scenarios that can lead to interesting properties and what classes of networks can emerge by evolving them under multiple constraints.