# Graph

In a programming interview, one of the most favorite questions is about Graph. It is a non-linear data structure. It is a set of **vertices** and **edges**. There are two types of Graph; **unredirected** (two-way relationship) and **redirected** (one-way relationship).

## Representation

There are three ways to represent Graph; **Adjacency Matrix**, **Adjacency List**, and **Adjacency Set**.

### Adjacency Matrix

A two-dimensional boolean matrix which rows and columns represent the vertices. Each cell represents the edges, the relationship between the vertices.

### Adjacency List

Each vertex has a pointer to a linked list. The linked list contains the other nodes that the vertex connects to.

### Adjacency Set

Similar to Adjacency List. Instead of using a linked list, it is using a set. A set is a two-dimensional boolean matrix. Each entry indicates the incident of the edge.