Graph Theory

A graph defines how things are related.

The world around us is made up of things that have relationships with other things. We have a financial relationship with our employment. We have collegiate relationships with our coworkers. Graphing is a way to model these relationships, which is useful for understanding and discussing them, as well as creating systems that support them.

I learned about graphing in a data structures and algorithms course, but it took me a while to see the actual value of them. We learned about Dijkstra's algorithm and the travelling salesman problem, and I didn't see how this could be part of an application. One day it clicked for me that Facebook's social graph is a dataset that contains information about people and their relationships, and how that data is used for targeted advertising. By understanding people and their relationships, both to other people and their interests, you can calculate the probability that they will like something based on associations with people of similar tastes. It also allows demographic and interest targeting, which is extremely valuable when not everyone is going to be interested in your product and you don't want to waste marketing dollars.

I am going to use GraphViz, which is a library for rendering graphs, to illustrate relationships between things I am designing for. For these classes, I'd like to develop a map of relationships between people, learning resources, and work, so that I can inspect and optimize each piece of the puzzle and see how it affects other parts of the system.

Topics