📖 5. Recommended Learning Resources
Core Textbooks
Beginner
- "Introduction to Graph Theory" by Douglas B. West
- "Graph Theory" by Reinhard Diestel (free online)
- "A First Course in Graph Theory" by Gary Chartrand and Ping Zhang
- "Introduction to Graph Theory" by Richard J. Trudeau (very accessible)
Intermediate
- "Graph Theory" by Adrian Bondy and U.S.R. Murty
- "Modern Graph Theory" by Béla Bollobás
- "Algebraic Graph Theory" by Norman Biggs
- "Spectral Graph Theory" by Fan Chung
Advanced
- "Random Graphs" by Béla Bollobás
- "The Probabilistic Method" by Noga Alon and Joel Spencer
- "Graph Minors" series by Robertson and Seymour
- "Extremal Graph Theory" by Béla Bollobás
Algorithms
- "Algorithm Design" by Kleinberg and Tardos
- "Introduction to Algorithms" (CLRS)
- "The Algorithm Design Manual" by Steven Skiena
- "Network Flows" by Ahuja, Magnanti, and Orlin
Applications
- "Networks, Crowds, and Markets" by Easley and Kleinberg
- "Network Science" by Albert-László Barabási (free online)
- "Complex Networks" by Vito Latora et al.
Online Resources
Courses
- MIT OCW: Mathematics for Computer Science
- Stanford CS224W: Machine Learning with Graphs
- Coursera: Graph Analytics for Big Data
- YouTube: William Fiset's Graph Theory Playlist
Interactive
- Visualgo.net: Algorithm visualizations
- Graph Online: Graph theory tools
- GraphStream: Dynamic graph visualization
Research
- ArXiv: cs.DS, cs.DM, cs.SI sections
- Journal of Graph Theory
- Journal of Graph Algorithms and Applications
- SIAM Journal on Discrete Mathematics
Coding Practice
Problem Sets
- LeetCode: Graph problems
- Codeforces: Graph algorithms
- Project Euler: Mathematical graphs
- SPOJ: Classical graph problems
- AtCoder: Japanese competitive programming
GitHub
- Awesome Graph Neural Networks
- Awesome Network Analysis
- Graph algorithm implementations
Software Practice
Python
import networkx as nx
import matplotlib.pyplot as plt
# Create and visualize G = nx.karate_club_graph()
nx.draw(G, with_labels = True)
plt.show()
# Analysis
print(nx.degree_centrality(G))
print(nx.clustering(G))
Julia
# Julia graph libraries
using Graphs
using GraphPlot
# Create and visualize graph
g = smallgraph(:karate)
gplot(g, layout=circular_layout)