graph LR G["Graph G\nwith odd cycles"] --> RM["Remove the cover C"] RM --> B["G minus C\nis bipartite โ "] style G fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style RM fill:#fff9c4,stroke:#f57f17,stroke-width:3px style B fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph LR D["Grow duals\ngap per vertex"] --> P["Pick min-gap\nvertex in O"] P --> A["Add to cover C"] A --> V{"odd cycle\nleft?"} V -->|"yes"| D V -->|"no"| RD["Reverse-delete\nredundant vertices"] RD --> OUT["Cover C โ "] style D fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style P fill:#fff9c4,stroke:#f57f17,stroke-width:3px style A fill:#fff9c4,stroke:#f57f17,stroke-width:3px style V fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style RD fill:#ffe0b2,stroke:#e65100,stroke-width:3px style OUT fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph LR BFS["One BFS 2-colouring\nO(V + E)"] --> C{"same-colour\nedge?"} C -->|"yes"| CY["odd cycle โ "] C -->|"none"| BI["bipartite โ "] style BFS fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style C fill:#fff9c4,stroke:#f57f17,stroke-width:3px style CY fill:#f8bbd0,stroke:#c2185b,stroke-width:3px style BI fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph LR P1["Phase 1\nadds 0, 1, 2"] --> P2["Cover = {0,1,2}"] P2 --> RD["Phase 2\nreverse-delete"] RD --> D1["drop 2 โ {0,1}\nodd cycle remains โ"] D1 --> D2["drop 1 โ {0,2}\nbipartite โ "] D2 --> D3["drop 0 โ {2}\nbipartite โ "] D3 --> FIN["Cover = {2}\ncost = 1 โ "] style P1 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style P2 fill:#fff9c4,stroke:#f57f17,stroke-width:3px style RD fill:#ffe0b2,stroke:#e65100,stroke-width:3px style D1 fill:#f8bbd0,stroke:#c2185b,stroke-width:3px style D2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style D3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style FIN fill:#a3be8c,stroke:#2e7d32,stroke-width:4px
Odd cycle cover ยท headline speedup (bar width โ log speedup) ๐ Python ยท n = 400 ~200ร โ๏ธ C++ ยท n = 200 ~28,800ร ๐ฆ Rust ยท n = 800 12.2ร All three return the same cover and the same cost. The gap is a constant factor โ not a change of algorithm. ๐ฏ