ψ 1 0 ← 0 ;
// Find an initial feasible solutions x 0 ← x(ψ 0 2 ) ;
y 0 ← y(ψ 0 3 ) ;
// Determine the initial active sets, and set N and D to be their complements B
0 = {i x 0 > 0} C 4 0 ← {j y(j) > 0} // The regularization constraint is active, or the solution is optimal while ψ i < ψ¯ and λ 5 i > 0 do 6 i ← i **+ 1 ;**
// Here |C| = |B| + 2
// Calculate the space (line) of dual solutions -- the update direction
∆y i
∆λ i
← null ATBC e**such that** y i−1(ψ**) = 0** ⇒ ∆y i(ψ) ≥ 0 ; // This is always possible 7 because there is always at most one such constraint, given the assumptions.

// Decide based on a potential variable improvement
// Calculate the maximum length of the update τ, breaking ties arbitrarily.

t1 ←
maxk∈C
−∆y i k y i−1 k

−1; // Some y becomes 0. 8

t2 ←
maxk∈N
−(AN C∆y i
)k

(AN Cyi−1)k

−1; // Some x needs to be added to the active set.

9 t3 ← λ
−∆λ 10 ; // Regularization constraint 11 τ = min {t1, t2, t3} // Resolve the non-linearity update, where Kl is the set of maximizers for tl 12 if τ = t1 **then**
C
i ← Ci−1 \ K1, Di ← (C
i)
C

13 14 else if τ = t2 **then**
B
i ← Bi−1 ∪ K2, N i ← (B
i)
C

15 16 else if τ = t3 **then**
17 **The regularization constraint is inactive, return the solution.**
// Update the dual solutions y i ← y i−1 + τ∆y i, λi ← λ i−1 + τ∆λ i 18 ;
// Here |C| = |B| + 1 // Calculate the update direction
∆x ←
ABC
eB
−1 0
∆ψ
;
19

// Calculate the maximum length of the update τ, breaking ties arbitrarily.

```
        t4 ←
              maxk∈D
                           −a
                              T
                               
                              k∆x
                                  i
                                   
                          a
                            T
                             
                            k
                             
                             xi−1−b
−1; // A constraint becomes active 20
  
        t5 ←
              maxk∈B−∆x
                                 i
                                  
                                 k
                                  
                          a
                           T
                            
                           k
                            
                             xi−1−b
−1; // A variable τ = min {t4, t5} 21
  
        // Update the primal solutions
        x
         i ← xi−1 + τ∆x
                             i
22 ;
        // Resolve the non-linearity update, where Kl is the set of maximizers for tl
23 if τ = t4 then
            C
              i ← Ci−1 ∪ K4, Di ← (C
                                             i)
                                               C
                                                
24
  
25 else if τ = t5 then
            B
              i ← Bi−1 \ K5, N i ← (B
                                              i)
                                                C
                                                 
26
  

```

Algorithm 1. Homotopy Continuation Method for Solving ALP