graph TD A["Function f"] --> B{"Sublevel Sets\nConvex?"} B -->|Yes| C["f is\nQuasiconvex"] B -->|No| D["f is Not\nQuasiconvex"] C --> E["Every Local Min\nis Global Min"] C --> F["Bisection\nMethod Works"] style A fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style B fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style D fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style E fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,color:#2e3440 style F fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440
graph LR A["Domain"] --> B["Sublevel Set\nSฮฑ = {x | f(x) โค ฮฑ}"] B --> C{"Sฮฑ is\nConvex for\nall ฮฑ?"} C -->|Yes| D["f is\nQuasiconvex"] C -->|No| E["f is Not\nQuasiconvex"] style A fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style B fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style C fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style D fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style E fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440
graph TD A["Initialize\nl โค p* โค u"] --> B["t = (l + u)/2"] B --> C["Solve Feasibility\nProblem at t"] C --> D{"Feasible?"} D -->|Yes| E["u = t"] D -->|No| F["l = t"] E --> G{"u - l < ฮต?"} F --> G G -->|No| B G -->|Yes| H["Optimal\nValue โ t"] style A fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style B fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style C fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style D fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style E fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style F fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style G fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style H fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,color:#2e3440
graph TD A["Quasiconvex\nProblem"] --> B["Pick t\n(objective value)"] B --> C["Construct\nFeasibility Problem"] C --> D{"Convex\nFeasibility?"} D -->|Yes| E["t is\nAchievable"] D -->|No| F["t is Not\nAchievable"] E --> G["Lower t\n(tighter bound)"] F --> H["Raise t"] G --> B H --> B B --> I["Bisection\nConverges"] I --> J["Global\nOptimum"] style A fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style B fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style C fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style D fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style E fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style F fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style G fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style H fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style I fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,color:#2e3440 style J fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440