Graphs are a data structure that can be used in computer science in a variety of context.
You can check the following Python challenges which are all being solved using a graph and a short path algorithm, one of the most useful algorithms used when manipulating graphs.
Graph Terminology
A graph is a collection of nodes also called vertices which are connected between one another. Each connection between two vertices is called an edge (sometimes called a branch).
When designing a graph we can make decisions as to:
- Use a directed graph or an undirected graph,
- Use a weighted graph or an unweighted graph.

An undirected graph is when edges have no direction.

A directed graph is when edges have a direction.

A weighted graph is when edges have a numerical value.

A weighted and directed graph is where edges have a direction and a numerical value!
The weight of an edge can have different meanings:
- It could represent the distance (e.g. in miles) between two vertices,
- It could represent the time needed to travel (e.g. in minutes) between two vertices,
- etc…
The direction of an edge is not always needed.
For instance, in a social network like Facebook, there is no need to have directed edges to represent friendship, as if A if a friend of B, then B is also a friend of A. So all edges are both ways, hence an undirected graph is suitable to represent friendship relationships in Facebook.
Twitter however would use a directed graph, as if A follows B, it is not necessary the case that B is following A. With Twitter the edges represent the “Follow” relationship and are directed edges.
Adjacency Matrix
An adjacency matrix is sometimes used to represent a graph. It is based on a 2D-array to represent all the vertices and edges of a graph.
Graph #1

Adjacency Matrix #1
A | B | C | D | E | |
A | ✔ | ✔ | |||
B | ✔ | ||||
C | ✔ | ||||
D | ✔ | ||||
E | ✔ |
Graph #2

Adjacency Matrix #2
A | B | C | D | E | |
A | 4 | 5 | |||
B | 4 | 7 | |||
C | 7 | 3 | 6 | ||
D | |||||
E |
Graph #3

Adjacency Matrix #3
Complete the following adjacency matrix:
A | B | C | D | E | F | |
A | ||||||
B | ||||||
C | ||||||
D | ||||||
E | ||||||
F |
Graph #4

Adjacency Matrix #4
Complete the following adjacency matrix.
A | B | C | D | E | F | |
A | ||||||
B | ||||||
C | ||||||
D | ||||||
E | ||||||
F |
Graph #5

Adjacency Matrix #5
Complete the following adjacency matrix.
A | B | C | D | E | |
A | |||||
B | |||||
C | |||||
D | |||||
E |
Extension Task:

Adjacency Matrix
Complete the following adjacency matrix:
Amsterdam | Athens | Berlin | Bucharest | Budapest | Dublin | Geneva | Lisbon | London | Madrid | Oslo | Paris | Reykjavik | Rome | |
Amsterdam | ||||||||||||||
Athens | ||||||||||||||
Berlin | ||||||||||||||
Bucharest | ||||||||||||||
Budapest | ||||||||||||||
Dublin | ||||||||||||||
Geneva | ||||||||||||||
Lisbon | ||||||||||||||
London | ||||||||||||||
Madrid | ||||||||||||||
Oslo | ||||||||||||||
Paris | ||||||||||||||
Reykjavik | ||||||||||||||
Rome |