---
name: graph-algorithms
description: "Problem-solving strategies for graph algorithms in graph number theory"
allowed-tools: [Bash, Read]
---
# Graph Algorithms
## When to Use
Use this skill when working on graph-algorithms problems in graph number theory.
## Decision Tree
1. **Traversal selection**
- BFS: shortest paths (unweighted), level structure
- DFS: cycle detection, topological sort, SCC
2. **Shortest path algorithms**
| Algorithm | Use Case | Complexity |
|-----------|----------|------------|
| Dijkstra | Non-negative weights | O((V+E) log V) |
| Bellman-Ford | Negative weights | O(VE) |
| Floyd-Warshall | All pairs | O(V^3) |
3. **Minimum Spanning Tree**
- Prim's: dense graphs, greedy from vertex
- Kruskal's: sparse graphs, union-find
- `z3_solve.py prove "cut_property"`
4. **Network Flow**
- Max-flow = min-cut (Ford-Fulkerson)
- Matching via flow network
- `sympy_compute.py linsolve "flow_conservation"`
5. **Graph properties**
- Spectral: eigenvalues of adjacency matrix
- Connectivity: via DFS/BFS
- Coloring: greedy or SAT reduction
## Tool Commands
### Sympy_Adjacency
```bash
uv run python -m runtime.harness scripts/sympy_compute.py eigenvalues "adjacency_matrix"
```
### Z3_Dijkstra
```bash
uv run python -m runtime.harness scripts/z3_solve.py prove "d[v] >= d[u] + w(u,v) for all edges"
```
### Z3_Mst_Cut
```bash
uv run python -m runtime.harness scripts/z3_solve.py prove "min_edge_crossing_cut_in_mst"
```
### Sympy_Flow
```bash
uv run python -m runtime.harness scripts/sympy_compute.py linsolve "flow_conservation_equations"
```
## Key Techniques
*From indexed textbooks:*
- [Graph Theory (Graduate Texts in Mathematics (173))] Given two numerical graph invariants i1 and i2, write i1 i2 if we can force i2 to be arbitrarily high on some subgraph of G by assuming that i1(G) is large enough. Formally: write i1 i2 if there exists a function f : N → N such that, given any k ∈ N, every graph G with i1(G) f (k) has a subgraph H with i2(H) k. If i1 i2 as well as i1 i2, write i1 ∼ i2.
- [Graph Theory (Graduate Texts in Mathematics (173))] Find the smallest integer b = b(k) such that every graph of order n with more than kn + b edges has a (k + 1)-edge- connected subgraph, for every k ∈ N. Show that every tree T has at least Δ(T ) leaves. Show that a tree without a vertex of degree 2 has more leaves than other vertices.
- [Graph Theory (Graduate Texts in Mathematics (173))] For every n > 1, nd a bipartite graph on 2n vertices, ordered in such a way that the greedy algorithm uses n rather than 2 colours. Exercises Consider the following approach to vertex colouring. First, nd a max- imal independent set of vertices and colour these with colour 1; then nd a maximal independent set of vertices in the remaining graph and colour those 2, and so on.
- [Graph Theory (Graduate Texts in Mathematics (173))] Show that, for every r ∈ N, every innite graph of upper density s subgraph for every s ∈ N. Deduce that the upper density of innite graphs can only take r−1 has a K r the countably many values of 0, 1, 1 2 , 2 3 , 3 4 Extremal Graph Theory Given a tree T , nd an upper bound for ex(n, T ) that is linear in n and independent of the structure of T , i. Prove the Erd˝os-S´os conjecture for the case when the tree considered is a star.
- [Graph Theory (Graduate Texts in Mathematics (173))] Colouring Slightly more generally, a class G of graphs is called χ-bounded if there exists a function f : N → N such that χ(G) f (r) for every graph G ⊇ Kr in G. In such graphs, then, we can force a Kr subgraph by making χ larger than f (r). Show that the four colour theorem does indeed solve the map colouring problem stated in the rst sentence of the chapter.
## Cognitive Tools Reference
See `.claude/skills/math-mode/SKILL.md` for full tool documentation.