graph TD S["Start: initial majorization M0"] --> L["Linearize at current iterate"] L --> P["Solve convex subproblem over the family"] P --> U["Update the iterate"] U --> C{"Objective stalled?"} C -->|no| L C -->|yes| E["Return coefficients"] style S fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style L fill:#d4e6f1,stroke:#2874a6,stroke-width:3px style P fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style C fill:#fff3e0,stroke:#e65100,stroke-width:3px style E fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
graph LR A["LSQ solution Omega(x0)"] --> B{"strictly inside the cone?"} B -->|yes| C["PD: inv works"] B -->|no| D["PSD boundary: singular -> inv fails"] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff3e0,stroke:#e65100,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style D fill:#fadbd8,stroke:#c0392b,stroke-width:3px
graph TD A["Sample covariance Y"] --> B{"Y positive definite?"} B -->|yes| C["Free MLE: Omega0 = Y"] B -->|no| D["Nearest PD: clip eigenvalues"] C --> E["Return Omega0^-1"] D --> E E --> F["CCP round 0 majorization"] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff3e0,stroke:#e65100,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style D fill:#fadbd8,stroke:#c0392b,stroke-width:3px style E fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style F fill:#d4e6f1,stroke:#2874a6,stroke-width:3px