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>
							 | 
						||
| 
								 | 
							
								
							 |