Graphs are everywhere.
They are used in social networks, the world wide web, biological networks, semantic web, product recommendation engines, mapping services, blockchains, and Bitcoin flow analyses.
Furthermore, they’re used to define the flow of computation of software programs, to represent communication networks in distributed systems, and to represent data relationships in large organizations.
These are the most important graph applications:
- Social networks: A social network is by definition, well, a network. And graphs are special cases of networks, with only a single type of edge between vertices.
- Web graphs: The web is a huge collection of documents pointing to each other via hyperlinks. In other words, the web is another massive graph data set.
- Biological networks: The (biological) environment is actually one of the largest sources of real-world graphs. Examples are brain networks, protein interaction networks, food networks.
- Knowledge graphs: The knowledge of the world is inherently graph-structured. Information A is connected to information B if A stands in relation to B in some specific way. Consider the following types of information.
- Product recommendation graphs: If you buy a product, Amazon recommends you buying similar products. These recommended products are based on what other users have already bought. For example, you buy a book about Python; Amazon recommends you to buy a book about Scrum. At the heart of these systems are huge bipartite graphs.
- Neural networks: Artificial neural networks are huge graphs connecting neurons via artificial synapses. There are many different types of neural networks. The main difference between these types is the architecture of the graphs.
- Road networks: Apps like Maze, Google Maps, Apple Maps, and Uber are installed on every smartphone. Do you have studied a subject related to computer science? Then you know that navigational problems are inherently modeled as graph problems. Think about the traveling salesman problem, shortest path problems, Hammington paths, etc.
- Blockchains: The Blockchain is a large graph. The vertices are blocks, each storing many transactions. The edges connect subsequent blocks. The largest branch initiating from the first block (THE block-chain) is the currently valid state of historical transactions.
- Bitcoin transaction graphs: The Blockchain is an interesting graph that is often analyzed in the cryptocurrency space. Another insightful graph arises when you use Bitcoin wallets as vertices and transactions between wallets as edges. The resulting graph reflects the money flow between Bitcoin wallets. This graph is critical to learning about global money flow patterns.
This great course from Finxter Star Creator Matija ⭐ teaches you the most important graph algorithms such as BFS, DFS, A*, and Dijkstra.
Understanding these algorithms will not only make you a better coder, it'll lay a strong foundation on which you can build your whole career as a computer scientist.