Graphs are the most common ‘abstract’ structures encountered in computer science. Any system that consists of discrete states or sites (called nodes or vertices) and connections between them can be modeled by a graph. In computer science, mathematics, engineering, and many other disciplines we often need to model a symmetric relationship between objects. The objects are represented by nodes and the connections between nodes of a graph are called edges (in case the connections are between ordered pair of nodes), or directed edges (in case the connections are between ordered pairs of nodes). Connections may also carry additional informations as labels or weights related to the interpretation of the graph. Consequently, ...