graph TD A[Optimization Methods] --> B[Convex] A --> C[Quasi-convex] A --> D[Non-convex] A --> E[Decomposition] B --> B1["LP / QP / SDP"] B --> B2["GP (after transform)"] C --> C1[Bisection] C --> C2[Cutting-plane] D --> D1[Relaxation] D --> D2[Alternating Min.] E --> E1[Dual Decomposition] E --> E2[ADMM] style A fill:#ffcdd2,stroke:#c62828,stroke-width:3px style B fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style C fill:#fff3e0,stroke:#e65100,stroke-width:3px style D fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style E fill:#e0f7fa,stroke:#00838f,stroke-width:3px style B1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style B2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style C1 fill:#fff3e0,stroke:#e65100,stroke-width:3px style C2 fill:#fff3e0,stroke:#e65100,stroke-width:3px style D1 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style D2 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style E1 fill:#e0f7fa,stroke:#00838f,stroke-width:3px style E2 fill:#e0f7fa,stroke:#00838f,stroke-width:3px
graph TD subgraph Algorithm A1[cutting_plane_feas] A2[cutting_plane_optim] A3[bsearch] end subgraph SearchSpace S1[Ell class] S2[update_bias_cut] S3[update_central_cut] end subgraph Oracle O1[OracleFeas] O2[OracleOptim] O3[OracleOptimQ] end A1 --> S1 A1 --> O1 A2 --> S1 A2 --> O2 A3 --> O1 style A1 fill:#fff3e0,stroke:#e65100,stroke-width:3px style A2 fill:#fff3e0,stroke:#e65100,stroke-width:3px style A3 fill:#fff3e0,stroke:#e65100,stroke-width:3px style S1 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style S2 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style S3 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style O1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style O2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style O3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph TD subgraph "Master Problem" M["Update Ξ»\n(subgradient step)"] end subgraph "Subproblem 1" S1["min_xβ fβ(xβ) + Ξ»α΅Aβxβ"] end subgraph "Subproblem 2" S2["min_xβ fβ(xβ) + Ξ»α΅Aβxβ"] end subgraph "Subproblem K" SK["min_xβ fβ(xβ) + Ξ»α΅Aβxβ"] end M -->|"Ξ» broadcast"| S1 M -->|"Ξ» broadcast"| S2 M -->|"Ξ» broadcast"| SK S1 -->|"xβ(Ξ»)"| M S2 -->|"xβ(Ξ»)"| M SK -->|"xβ(Ξ»)"| M style M fill:#ffcdd2,stroke:#c62828,stroke-width:3px style S1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style S2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style SK fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph TD A[Convex Optimization] --> B[Fundamentals] A --> C[Geometric Prog.] A --> D[Ellipsoid Method] A --> E[Applications] B --> B1[Convex Sets/Functions] B --> B2[KKT Conditions] C --> C1[Posynomials] D --> D1[Cutting-plane] D --> D2[Ellipsoid] E --> E1[Filter Design] E --> E2[Circuit Sizing] style A fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style C fill:#fff3e0,stroke:#e65100,stroke-width:3px style D fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style E fill:#ffcdd2,stroke:#c62828,stroke-width:3px style B1 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B2 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style C1 fill:#fff3e0,stroke:#e65100,stroke-width:3px style D1 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style D2 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style E1 fill:#ffcdd2,stroke:#c62828,stroke-width:3px style E2 fill:#ffcdd2,stroke:#c62828,stroke-width:3px