58 lines
2.5 KiB
Markdown
58 lines
2.5 KiB
Markdown
|
---
|
||
|
title: Graphs
|
||
|
---
|
||
|
## Graphs
|
||
|
A graph is a data-structure you can use to solve routing problems, such as "Are these two components connected?" and "What is the shortest path from point a to b?"
|
||
|
|
||
|
A graph consists of nodes and edges.
|
||
|
A node (i.e. vertex) is an object in your graph.
|
||
|
A node can contain information such as the name of the node and which edges it is attached to.
|
||
|
An edge is a link that connects two nodes.
|
||
|
The edge can contain information such as the weight of the edge.
|
||
|
If two nodes are connected by an edge, they are neighbours (i.e. adjacent).
|
||
|
|
||
|
Depending on the problem you can use either two-way (undirected) or one-way (directed) edges.
|
||
|
If you have a undirected edge from a to b, there is also a way from b to a.
|
||
|
If you have a directed edge from a to b, there is not necessarily an edge from b to a.
|
||
|
|
||
|
You can use graphs to formulate situations such as:
|
||
|
* Geographical maps
|
||
|
* Each city in your country is a node
|
||
|
* If two cities are connected by a road there is a edge between them
|
||
|
* Roads can be one- or two-way (both directed and undirected edges)
|
||
|
* the weight can be the lenght of the road
|
||
|
* Flow of water
|
||
|
* Each floodgate is a node
|
||
|
* Each canal is an edge
|
||
|
* water will only flow in one direction so the edges are directed
|
||
|
* the weight can be the maximum water capacity of the flow
|
||
|
|
||
|
Example: a graph that has as nodes the capitals of the Nordic countries, and as (undirected) edges the driving distance to cities connected by direct road.
|
||
|
```
|
||
|
. +---------+
|
||
|
. |Reykjavik|
|
||
|
. +---------+
|
||
|
.
|
||
|
.
|
||
|
. 529 km +---------+ 1760 km +--------+
|
||
|
. +------------+|Stockholm|+---------+|Helsinki|
|
||
|
. | +---------+ +--------+
|
||
|
. + +
|
||
|
. +----+ 1991 km |
|
||
|
. |Oslo|+-------------------------------------+
|
||
|
. +----+
|
||
|
. +----------+
|
||
|
. |Copenhagen|
|
||
|
. +----------+
|
||
|
```
|
||
|
|
||
|
|
||
|
<!-- The article goes here, in GitHub-flavored Markdown. Feel free to add YouTube videos, images, and CodePen/JSBin embeds -->
|
||
|
|
||
|
#### More Information:
|
||
|
<!-- Please add any articles you think might be helpful to read before writing the article -->
|
||
|
<a href='https://github.com/freecodecamp/guides/tree/master/src/pages/algorithms/graph-algorithms/breadth-first-search/index.md' target='_blank' rel='nofollow'>Breadth First Search (BFS)</a>
|
||
|
|
||
|
<a href='https://github.com/freecodecamp/guides/tree/master/src/pages/algorithms/graph-algorithms/depth-first-search/index.md' target='_blank' rel='nofollow'>Depth First Search (DFS)</a>
|
||
|
|