Complex systems are systems that comprise many interacting parts with the ability to generate a new quality of collective behavior through self-organization, e.g. the spontaneous formation of temporal, spatial or functional structures. These systems are often characterized by extreme sensitivity to initial conditions as well as emergent behavior that are not readily predictable or even completely deterministic. The recognition that the collective behavior of the whole system cannot be simply inferred from an understanding of the behavior of the individual components has led to the development of numerous sophisticated new computational and modeling tools with applications to a wide range of scientific, engineering, and societal phenomena. Computational Complexity: Theory, Techniques and Applications presents a detailed and integrated view of the theoretical basis, computational methods, and state-of-the-art approaches to investigating and modeling of inherently difficult problems whose solution requires extensive resources approaching the practical limits of present-day computer systems. This comprehensive and authoritative reference examines key components of computational complexity, including cellular automata, graph theory, data mining, granular computing, soft computing, wavelets, and more.