# Introduction to graphs with networkx

In this section, we will give a general introduction to graph theory. Moreover, in order to merge theoretical concepts with their practical implementation, we will enrich our explanation with code snippets in Python, using `networkx`

.

A **simple undirected graph** (or simply, a graph) *G* is defined as a couple *G=(V,E) *, where *V={**, .., **}* is a set of nodes (also called **vertices**) and *E={{**,** .., {**,**}}* is a set of two-sets (set of two elements) of edges (also called **links**), representing the connection between two nodes belonging to *V*.

It is important to underline that since each element of *E* is a two-set, there is no order between each edge. To provide more detail, *{**,* and *{**,* represent the same edge.

We now provide definitions for some basic properties of graphs and nodes, as follows: