# 15: Basics of Networks

\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

- 15.1: Network Models
- We are now moving into one of the most recent developments of complex systems science: networks.

- 15.2: Terminologies of Graph Theory
- Before moving on to actual dynamical network modeling, we need to cover some basics of graph theory, especially the deﬁnitions of technical terms used in this ﬁeld. Let’s begin with something we have already discussed above: A network (or graph) consists of a set of nodes (or vertices, actors) and a set of edges (or links, ties) that connect those nodes.

- 15.3: Constructing Network Models with NetworkX
- Now that we have ﬁnished the above crash course on graph theoretic terminologies, it is time to begin with computational modeling of networks.

- 15.4: Visualizing Networks with NetworkX
- NetworkX also provides functions for visualizing networks. They are not as powerful as other more specialized software1, but still quite handy and useful, especially for small- to mid-sized network visualization. Those visualization functions depend on the functions deﬁned in matplotlib (pylab), so we need to import it before visualizing networks.

- 15.5: Importing/Exporting Network Data
- In most network studies, researchers need to model and analyze networks that exist in the real world. To do so, we need to learn how to import (and export) network data from outside Python/NetworkX.

- 15.6: Generating Random Graphs
- So far, we have been creating networks using deterministic methods, e.g., manually adding nodes and edges, importing data ﬁles, etc. In the meantime, there are some occasions where you want to have a randomly generated network.