--- 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.