# Graphs

Graphs are an important mathematical concept that many algorithms are based on. It is a convenient abstraction for computation and the mathematical properties of graphs have been studied for centuries. By reducing computational tasks identified in your domain to graph problems, you immediately get access to an immense toolbox of algorithms for solving various problems. This can mean that you can pull in solutions from a graph algorithm library in your favorite programming language, or at least can figure out what algorithm, or adaption of an algorithm, you want to use.

- What are the elements of graphs?
- What is a “digraph”?
- What is meant by a “weighted graph”?
- Explain the following graph concepts:
- Path
- Cycle
- Subgraph
- Bipartite
- Matching
- Clique
- Independent set

- What is a minimum spanning tree?
- What is an Euler cycle?
- What is a Hamiltonian cycle?

# Graph algorithms

- Graph traversal: What is…
- a “depth-first search”?
- a “breadth-first search”?

- What problem is Kruskal’s algorithm for?
- What is the Travelling salesman problem?