## 2 Formulation and Algorithm
Therefore, the computation complexity of enumeration is \(2^{1024}\), which is computationally tractable. A heuristic approach involves relaxing the binary variable to a continuous one and transforming the relaxed problem into a convex optimization problem, which can be solved efficiently. The solution \(\hat{B}\) is rounded into a binary integer. However, we found that the solution usually violates the constraint. Here, the branch and bound technique is proposed. To apply the branch and bound technique, we need to transform the feasible point finding problem of Equation (3) into an optimization problem with non-trivial objective function. The new optimization problem is  
Figure 1: Three-dimensional view of the full 64 \(\times\) 64 array. (**a**) The full 64 \(\times\) 64 array. (**b**) The full 32 \(\times\) 32 array with a \(2\times 2\) subarray. \[ \begin{array}{l}\min_{\mathbf{g}}\max_{i}\left(\left|\sum\limits_{m=1}^{64} \sum\limits_{n=1}^{64}(a_{m,n}(\theta,\varphi)\times 0.5(1+\cos(\theta)))[\mathbf{B} \otimes 1_{2\times 2}]_{m,n}\right|-h(\theta,\varphi),0\right)\\ \mathrm{s.t.}B_{i,j}=0,(i,j)\in\Phi\\ \sum\limits_{i=1}^{32}\sum\limits_{j=1}^{32}B_{i,j}=Q\\ \mathbf{B}\in\{0,1\}^{32\times 32}\end{array} . \tag{4}\]  
The basic idea is to decompose the original problem Equation (4) into several subproblems. For each subproblem, a feasible point B can be easily found, where the objective value serves as an upper bound for the optimal value of the original subproblem. Meanwhile, by relaxing the original binary constraint to a continuous variable, the subproblem is transformed into a convex optimization problem that can be solved efficiently. Obviously, the optimal value of the relaxed subproblem acts as a lower bound. Now, the upper and lower bounds of the objective value of the subproblem are obtained. If the gap between the upper and lower bound is small, the feasible point is good enough and will be the solution. Otherwise, the subproblem into two sub-subproblems is decomposed by setting a certain binary variable such as \(B_{ij}\) is 0 or 1. Note that, during the branch step, if the lower bound of a subproblem named C is larger than the upper bound of another subproblem named D, then the subproblem C can be discarded. This step accelerates the algorithm. The procedure for Algorithm 1 is listed below. ```
start Convex Optimization Problem Setup Construct initial convex optimization problem Convex Optimization Problem Solving Solve the initial convex optimization problem Obtain initial solution x * Update LB with the objective value of x * Branching and Bounding while not stopping criterion Select a branching variable Branching for each branch Create a new convex optimization subproblem Convex Optimization Subproblem Solving Solve the convex optimization subproblem Obtain solution x
```  
Bounding if objective value of x * is better than UB Update UB with the objective value of x  Update global solution x * with x  if lower bound of the subproblem is better than UB Recursively call ConvexBranchAndBound on the subproblem Pruning Prune branches that are infeasible or have objective values worse than UB return x * end ```  
**Algorithm 1**The Algorithm of the Branch and Bound Technique with Convex Optimization