# Introduction to graphs

Graphs are widely-used structure in computer science and different computer applications. We don't say *data structure* here and see the difference. Graphs mean to store and analyze *metadata, *the connections, which present in data. For instance, consider cities in your country. Road network, which connects them, can be represented as a graph and then analyzed. We can examine, if one city can be reached from another one or find the shortest route between two cities.

First of all, we introduce some definitions on graphs. Next, we are going to show, how graphs are represented inside of a computer. Then you can turn to basic graph algorithms.

There are two important sets of objects, which specify graph and its structure. First set is **V, **which is called **vertex-set**. In the example with road network cities are vertices. Each vertex can be drawn as a circle with vertex's number inside.

vertices |

Next important set is** E, **which is called **edge-set. E** is a subset of **V x V**. Simply speaking, each edge connects two vertices, including a case, when a vertex is connected to itself (such an edge is called *a loop). * All graphs are divided into two big groups: directed and undirected graphs. The difference is that edges in directed graphs, called *arcs*, have a direction. These kinds of graphs have much in common with each other, but significant differences are also present. We will accentuate which kind of graphs is considered in the particular algorithm description. Edge can be drawn as a line. If a graph is directed, each line has an arrow.

undirected graph | directed graph |

Now, we present some basic graph definitions.

- Sequence of vertices, such that there is an edge from each vertex to the next in sequence, is called
**path**. First vertex in the path is called the*start vertex*; the last vertex in the path is called the*end vertex*. If start and end vertices are the same, path is called**cycle**. Path is called*simple*, if it includes every vertex only once. Cycle is called*simple*, if it includes every vertex, except start (end) one, only once. Let's see examples of path and cycle.

path (simple) | cycle (simple) |

The last definition we give here is a weighted graph. Graph is called *weighted*, if every edge is associated with a real number, called edge weight. For instance, in the road network example, weight of each road may be its length or minimal time needed to drive along.

weighted graph |

## Undirected graphs

## Recommended books

- Cormen, Leiserson,
Rivest.
**Introduction to algorithms.****(Theory)** - Aho, Ullman, Hopcroft.
**Data Structures and Algorithms.****(Theory)** - Robert Lafore.
**Data Structures and Algorithms in Java.****(Practice)** - Mark Allen Weiss.
**Data Structures and Problem Solving Using C++.****(Practice)**

## Contribute to AlgoList

Liked this tutorial? Please, consider making a donation. Contribute to help us keep sharing free knowledge and write new tutorials.

Every dollar helps!