## 3 Enhanced Name Resolution System
### Partitioning-Based Registration and Resolution  
#### 3.2.1 HEA partitioning algorithm  
We have proposed a Latency-aware Hierarchical Partitioning (LHP) algorithm, which is a graph-partitioning-based algorithm, to solve the problem of HM placement. The LHP algorithm takes \(G(V,E,W)\) (abbreviated as \(G\)) as an input set of potential locations for deploying resolvers with the latency matrix D, threshold parameter set \(\{T_{i}\}\) and hierarchical parameter L, and returns the HM location sets and HEA node sets as outputs. For a given \(G(V,E,W)\) and matrix D, the steps of the LHP algorithm to divide the graph into \(L\) hierarchies with a set of \(\{T_{i}\}\) by using the top-down partitioning method are as follows. The symbols used in the LPH algorithm are shown in Table 1. The pseudocode of the LHP algorithm is shown in Algorithm 1. Figure 2: The diagram of Bloom Filter (BF) working principles. Step 1: Initialization: \(i=L\), \(j=0\), \(k=0\), \(S_{i}=\left\{v_{p}\right\}\). Step 2: Read \(G(V,E,W)\) and get the partitioning latency bound \(T_{i}\) for i-th level HEAs;  
Step 3: Cut the edges in \(G\) whose weight is larger than \(T_{i}\). In this way, \(G\) may be divided into one or more connected subgraphs \(\left\{G_{i}^{m}(V_{i}^{m},E_{i}^{m},W_{i}^{m})\right\}\), \(1\leq m\leq M\). Sort \(\left\{G_{i}^{m}\right\}\) by descending order according to \(N_{i}^{m}\). Step 4: For each \(G_{i}^{m}\), if \(N_{i}^{m}=1\), then set the isolated node as \(A_{i}^{j}\) of i-th level HEA, \(HM_{ik}=A_{i}^{j}\). Then, add \(A_{i}^{j}\) into \(R_{i}\) and \(H_{i}^{k}\). \(j=j+1\), \(k=k+1\). At the end of \(G_{i}^{m}\) partitioning, go to step 9, or else go to step 5. Step 5: If \(N_{i}^{m}>1\), firstly, select the \(v_{p}\) from \(V_{i}^{m}\), whose weighted sum of bandwidth (CPU) storage capacity is the best, then set \(v_{p}\) as \(HM_{ik}\). Set \(HM_{ik}=A_{i}^{j}\) and add \(A_{i}^{j}\) into \(R_{i}\). Next, go to step 6. Step 6: Set \(A_{i}^{j}\) as the root, use Breath-First Search (BFS) to find the satisfied \(v_{p}\) on the path to \(A_{i}^{j}\), whose latency is less than \(T_{i}\) and add them into \(H_{i}^{k}\). \(j=j+1\), \(k=k+1\). Step 7: Delete \(A_{i}^{j}\) and all the selected \(v_{p}\) from \(V_{i}^{m}\). If \(i-1>0\), then add \(A_{i}^{j}\) and \(v_{p}\) into \(S_{i-1}\), which is the set of all the nodes to form the (i-1)-th level HEA inside the \(G_{i}^{m}\). Step 8: Check whether \(V_{i}^{m}\) is empty. If \(V_{i}^{m}=\varnothing\), then go to step 9. Otherwise, go back to step 5, repeating the process of selecting new anchor nodes and using BFS to find satisfied \(v_{p}\) to form new i-th level HEAs until \(V_{i}^{m}\) is empty. Step 9: Check if all \(G_{i}^{m}\) have been partitioned. If satisfied, then go to step 10. Otherwise, return to step 4. Step 10: If \(i-1>0\), then set \(i=i-1\). Step 11: Get the latency information of nodes in \(S_{i-1}\) from \(G\) and D to generate a new graph \(G^{\prime}(V^{\prime},E^{\prime},W^{\prime})\). Step 12: Then set \(G^{\prime}(V^{\prime},E^{\prime},W^{\prime})\) as the input graph of the (i-1)-th level HEA partitioning. That is, \(G=G^{\prime}(V^{\prime},E^{\prime},W^{\prime})\). Next, return to step 2 until \(i=1\).