# Graph Algorithms

Published byO'Reilly Media, Inc.

CreatedJune 2019

Graphs are powerful data structures that we can use to model real-world relationships of all kinds. Through the paradigm of vertices (or nodes) that represent data, and edges (the connections between vertices), graphs can represent highly complex interconnections in nearly any environment, and you can see them in practical use in everything from social media apps (e.g., Facebook and LinkedIn) to the GPS apps in your phone and car. For each specific use, we can use algorithms that determine and direct how we use a graph, including, for example, algorithms that help networking systems determine the shortest path by which to send packet data to a destination, or those that make suggestions for new friends in your favorite social media app.

In this learning path, designed for beginner- to intermediate-level developers and data scientists, host Mark Needham introduces graph algorithms and demonstrates how you can incorporate them into your software development and data science workflow. Your exploration begins by learning about three different categories of algorithms, including within them the world-famous PageRank algorithm, and going through some use cases that are particularly well suited for graph algorithms. You’ll see how to install Neo4j and the graph algorithms library as well as how you can use graph algorithms with Python in a Jupyter notebook. Later, Mark takes you through worked examples using each of the algorithms on real-world datasets. You’ll even get to apply your knowledge of graph algorithms by working through an end-to-end example on a *Game of Thrones* dataset, also involving graph visualization.

**What you’ll learn—and how you can apply it**

- The fundamentals of graphs and basic terminology
- Understand what graph algorithms are and learn about the kinds of problems you can solve by using them
- Three widely used categories of algorithms and many specific algorithms within them: pathfinding and graph search algorithms; centrality algorithms; and community detection algorithms
- How to execute graph algorithms against a sample dataset using Neo4j, NetworkX, and igraph
- How graph algorithms can be used with Python in a Jupyter notebook

**This learning path is for you because…**

- You're a software developer or data scientist who needs to make sense of connected data
- You're tasked with developing an application that coordinates and controls many disparate interconnected data components
- You want to learn how you can integrate graph algorithms into a Python development environment

**Prerequisites:**

- You should have a beginner- to intermediate-level knowledge of software development practices
- You should have a familiarity with Python
- You should be comfortable using version control/Git

**Materials or downloads needed in advance:**

- You’ll find the O'Reilly GitHub Repository associated with this course and instructions for how to access the exercises mentioned throughout this course at https://resources.oreilly.com/learning-paths/graph-algorithms-in-practice/blob/master/README.md.