graph TD NPHD["NPO-hard\nโ No constant-factor\napproximation possible"] -->|"hardest"| APX["APX-hard\nโ ๏ธ Approximable within\nsome constant factor"] APX -->|"hard"| PTAS["PTAS\nโ (1+ฮต)-approximation\nfor any ฮต > 0"] PTAS -->|"easier"| FPTAS["FPTAS\nโ Polynomial in both\ninput size and 1/ฮต"] FPTAS -->|"easiest"| P["P\nโ Exact solution\nin polynomial time"] style NPHD fill:#f44336,color:#fff style APX fill:#ff9800,color:#fff style PTAS fill:#2196f3,color:#fff style FPTAS fill:#4caf50,color:#fff style P fill:#4caf50,color:#fff
graph TD subgraph Networks["Network Types"] A1["Circuit\nVLSI"] --- A2["Internet\nWeb"] A2 --- A3["Social\nNetworks"] A3 --- A4["Neural\nNetworks"] A4 --- A1 end B["Combinatorial\nOptimization"] --> Networks style Networks fill:#e3f2fd style B fill:#e74c3c,color:#fff style A1 fill:#4caf50 style A2 fill:#2196f3 style A3 fill:#ff9800 style A4 fill:#9c27b0
graph LR A[("s")] -->|"3"| B[("a")] A -->|"5"| C[("b")] B -->|"2"| D[("c")] C -->|"1"| D D -->|"4"| E[("t")] B -->|"-1"| E style A fill:#e74c3c,color:#fff style E fill:#4caf50,color:#fff style B fill:#2196f3,color:#fff style C fill:#ff9800,color:#fff style D fill:#9c27b0,color:#fff
graph TD NCF["Negative Cycle\nFinder (NCF)"] --> SP["Shortest\nPath"] NCF --> FEAS["Feasibility\nCheck"] NCF --> OPT["Optimality\n(Cycle Cancel)"] NCF --> CUT["Cutting Plane\nGeneration"] NCF --> PARAM["Parametric\nSearch"] style NCF fill:#e74c3c,color:#fff style SP fill:#4caf50,color:#fff style FEAS fill:#2196f3,color:#fff style OPT fill:#ff9800,color:#fff style CUT fill:#9c27b0,color:#fff style PARAM fill:#f44336,color:#fff
graph LR X0["Initial flow xโ"] -->|"Find negative\ncycle p"| NCF["NCF Engine"] NCF -->|"p found"| UPDATE["x โ x + ฮฑยทp\n(improvement)"] UPDATE -->|"iterate"| NCF NCF -->|"no cycles"| OPTIMAL["Optimal! โ "] style X0 fill:#2196f3,color:#fff style NCF fill:#ff9800,color:#fff style UPDATE fill:#9c27b0,color:#fff style OPTIMAL fill:#4caf50,color:#fff
graph LR S[("s")] -->|"12"| A[("a")] S -->|"10"| B[("b")] A -->|"5"| B A -->|"8"| T[("t")] B -->|"15"| T style S fill:#4caf50,color:#fff style T fill:#e74c3c,color:#fff style A fill:#2196f3,color:#fff style B fill:#ff9800,color:#fff
graph LR R0["Guess rโ"] --> W["Compute\nwแตฃ(e) = c(e) - rยทt(e)"] W --> NCF{"NCF: Negative\nCycle?"} NCF -->|"Yes โ r too high"| DEC["Decrease r"] NCF -->|"No โ r feasible"| INC["Increase r"] DEC --> W INC --> W style R0 fill:#9c27b0,color:#fff style W fill:#2196f3,color:#fff style NCF fill:#ff9800,color:#fff style DEC fill:#e74c3c,color:#fff style INC fill:#4caf50,color:#fff
graph TD START["Start: initial rโ,\ndist = 0"] --> RELAX["Edge Relaxation\nupdate dist along edges"] RELAX --> CYCLE{"Find cycle in\npredecessor graph?"} CYCLE -->|"Yes"| VERIFY{"New ratio\nbetter than r?"} VERIFY -->|"Yes"| UPDATE["r โ ratio(C)\nUpdate dist along C"] VERIFY -->|"No"| RELAX CYCLE -->|"No"| DONE["Done! r* is optimal ๐ฏ"] UPDATE --> RELAX style START fill:#2196f3,color:#fff style RELAX fill:#ff9800,color:#fff style CYCLE fill:#9c27b0,color:#fff style VERIFY fill:#f44336,color:#fff style UPDATE fill:#4caf50,color:#fff style DONE fill:#607d8b,color:#fff
graph TD A(("Problem\nInstance")) --> B("ILP Formulation\n๐") B --> C("LP Relaxation + Dual\nโ๏ธ") C --> D{"Iterative\nTightening"} D -->|"Increase dual yโ\nuntil tight"| E("Add tight vertex\nor edge โ") D -->|"Update\ngaps"| F("Reduce gaps\nfor all in set") E --> G{"All constraints\nsatisfied?"} F --> G G -->|"No"| D G -->|"Yes"| H("Prune unnecessary\nelements โ๏ธ") H --> I("ฮฑ-Approximate\nSolution โ ") C -.->|"Dual solution"| J("Lower bound\non OPT ๐") J -.-> I style A fill:#e74c3c,color:#fff style B fill:#2196f3,color:#fff style C fill:#9c27b0,color:#fff style D fill:#ff9800,color:#fff style E fill:#4caf50,color:#fff style F fill:#00bcd4,color:#fff style G fill:#f44336,color:#fff style H fill:#795548,color:#fff style I fill:#4caf50,color:#fff style J fill:#607d8b,color:#fff
graph LR FF1["FFโ\narrival uโ"] -->|"D_max, D_min"| FF2["FFโ\narrival uโ"] C1["uโ - uโ โค T_clk - D_max\nuโ - uโ โค D_min - T_hold"] FF1 --> C1 FF2 --> C1 style FF1 fill:#e74c3c,color:#fff style FF2 fill:#3498db,color:#fff style C1 fill:#e3f2fd
graph LR A["Rโ"] -->|"2ns"| B["Rโ"] B -->|"3ns"| C["Rโ"] C -->|"1ns"| D["Rโ"] D -->|"2ns"| A B -->|"1ns"| D style A fill:#e74c3c,color:#fff style B fill:#3498db,color:#fff style C fill:#2ecc71,color:#fff style D fill:#f39c12,color:#fff
graph TD subgraph Ecosystem["Network Optimization Ecosystem"] P1["digraphx\n(Python NCF/MCR)"] --> P2["netoptim-cpp\n(C++ Oracles)"] P2 --> P3["digraphx-cpp\n(C++ NCF Engine)"] P3 --> P4["ellalgo-cpp\n(Cutting-Plane)"] P1 --> P5["networkx\n(Python Graphs)"] P3 --> P6["LEMON\n(C++ Graphs)"] P2 --> P7["netlistx\n(PD Covering)"] end style Ecosystem fill:#e3f2fd style P1 fill:#2196f3,color:#fff style P2 fill:#e74c3c,color:#fff style P3 fill:#ff9800,color:#fff style P4 fill:#9c27b0,color:#fff style P5 fill:#4caf50,color:#fff style P6 fill:#f44336,color:#fff style P7 fill:#00bcd4,color:#fff