Solving the Capacitated Vertex K-Center Problem through the Minimum Capacitated Dominating Set Problem

.


Introduction
The capacitated vertex k-center problem is a fundamental NP-Hard problem from the family of Location Problems [1]. This problem's input is a complete weighted graph G = (V, E) with edge weights that follow a metric, a capacity function f cap : V → N, and an integer k ∈ N. The goal is to find a set C ⊆ V with at most k elements and an assignment function f C : V \ C → C. The number of vertices assigned to each vertex v i ∈ C must not exceed its associated capacity f cap (v i ), and the distance from the farthest vertex to its assigned vertex has to be minimum [2,3]. We refer to the vertices in the set C as centers.
The capacitated vertex k-center problem can be defined under different input parameters. Some authors consider each vertex v j ∈ V to have an associated demand d j ∈ N [4][5][6][7][8]. In this case, the total demand of the vertices assigned to any center v i ∈ C cannot be greater than its capacity f cap (v i ). Some other authors consider the special case where the demand of every vertex is of one unit, and the capacity f cap (v i ) is the same for all vertices v i ∈ V [2,3]. They refer to this problem as the uniform capacitated vertex k-center problem. Other authors consider the case where demands are of one unit for all vertices, and capacities are not necessarily the same for all vertices [9]. Summarizing, by setting uniform or non-uniform demands and capacities, we obtain the main variants of the capacitated vertex k-center problem. In this paper, we work with uniform demands and non-uniform capacities, i.e., every vertex has one unit demand, and the capacity of every vertex can be different. To avoid new terminology, we will refer to this problem just as the capacitated vertex k-center problem.
A typical application of the capacitated vertex k-center problem determines the location of a set of capacity-limited facilities where the travel time or distance from the users to the facilities has to be minimized. For instance, government agencies need to determine locations of public services like schools and hospitals so that communities can access them. Furthermore, these services may be subject to capacity limitations. In the private sector, companies must locate warehouses or distribution centers to minimize the cost of serving retail establishments from a warehouse. Usually, each warehouse is limited to serve a specific number of retail establishments. In this latter context, poor location decisions may lead to increase costs and decrease competitiveness [10]. It is important to remark that the assignment function for the capacitated vertex k-center problem is usually defined as f C : V → C [3][4][5][6][7][8][9]. However, like other authors, in this paper, we define this function as f C : V \ C → C [2]. This way, we can show how the capacitated vertex k-center problem can be solved through the minimum capacitated dominating set problem. Such relationship is important because both problems are usually associated with problems in different contexts. While the capacitated vertex k-center problem is mainly used to model facility location problems [1], the minimum capacitated dominating set problem is mainly used in networking problems [11,12]. Regarding the state of the art, the known exact algorithms for the capacitated vertex k-center problem are based on integer programming formulations of the capacitated concentrator location problem, the bin packing problem, and the capacitated set-covering problem [5,6,8].
The remaining of the document is organized as follows. Section 2 presents a literature review. Section 2.1 presents the classical integer programming formulation for the capacitated vertex k-center problem and Section 2.2 introduces an alternative integer programming formulation of the problem that is equivalent to the minimum capacitated dominating set problem over a bottleneck input graph. Based on this formulation, Section 3 presents an exact algorithm for solving the capacitated vertex k-center problem. It is important to point out that the goal of introducing this algorithm is explicitly stating how the capacitated vertex k-center problem is related to the minimum capacitated dominating set problem, and not necessarily to compete against the known exact algorithms from the literature. However, in Section 4, we present an empirical evaluation of the proposed algorithm that shows its usefulness over small instances using off-the-shelf optimization software. Lastly, Section 5 presents the concluding remarks.
The capacitated vertex k-center problem has also been approached through different algorithmic perspectives. However, the algorithms for the capacitated version have not been as successful as those for the uncapacitated version. For instance, most of the exact algorithms for the uncapacitated vertex k-center problem can solve instances with thousands of vertices. Even an instance with one million vertices has been solved [32]. Nonetheless, the exact algorithms designed for the capacitated version struggle to find optimal solutions (We refer to any element in the problem's search space as a "solution". A "feasible solution" is a solution that satisfies all the constraints of the problem. An "optimal solution" is a feasible solution of optimal size.) for instances from benchmark data sets with just some hundreds of vertices. This extra difficulty comes from the fact that in the capacitated vertex k-center problem, the output consists of a set of centers and an assignment function. Namely, this problem has location and allocation elements involved, being both an NP-Hard problem on its own [33]. Furthermore, the heuristic and metaheuristic algorithms for the capacitated version rely mostly on exploitation [4,7]. Therefore, their running time tends to become impractical as the size of the input grows. Finally, while some conceptually simple algorithms achieve the best possible approximation factor for the uncapacitated version (ρ = 2 under P = NP), the approximation algorithms for the capacitated versions are conceptually more complicated and have an approximation factor of 6 and 9 for the uniform-demand version with uniform and non-uniform capacities, respectively [3,9,13,14].
Among the approximation algorithms for the capacitated vertex k-center problem with uniform demands and capacities, there is a 10-approximation algorithm [2], and two 6-approximation algorithms [3,9]. To date, no one has found an algorithm with a better approximation factor for this problem. In the case of the capacitated vertex k-center problem with uniform demands and non-uniform capacities, the situation is not better; the approximation factor of the best-known approximation algorithm is 9 [9]. Since the uniform versions of the problem are a particular case of the non-uniform versions, all the algorithms designed for the non-uniform versions also get feasible solutions for the uniform versions.
Among the heuristic and metaheuristic algorithms designed for the capacitated vertex k-center problem with non-uniform demands and capacities is a large scale local search heuristic algorithm [4], a greedy randomized adaptive search procedures (GRASP) metaheuristic algorithm [34], and an iterated greedy local search and variable neighborhood descent metaheuristic algorithm [7]. Since these metaheuristics rely primarily on exploitation, their running time tends to become impractical as the input grows. However, the experimental evidence shows that these algorithms are among the most effective for this problem. Regarding exact algorithms, there are some proposals based on integer programming or mixed integer programming formulations of the problem [5,6,8].

Classical Integer Programming Formulation
Since the capacitated vertex k-center problem is a generalization of the uncapacitated vertex k-center problem, we begin by defining the latter. The uncapacitated vertex k-center problem consists in, given a complete weighted graph G = (V, E), and an integer k ∈ N, finding a set of centers C ⊆ V, |C| ≤ k, such that the solution size r(C) is minimized, where r(C) (often known as covering radius) is defined as the distance from the farthest vertex in V to its nearest center in C (Equation (1)). Since the set of edge weights follows a metric, the distance between two vertices v i , v j ∈ V is equal to the weight of the edge {v i , v j } ∈ E. For practicity, we may refer to the weight w({v i , v j }) of each edge {v i , v j } ∈ E as the distance between v i and v j . We refer to the optimal solution for the uncapacitated vertex k-center problem as C * , which has a size of r(C * ). Expressions (2) to (7) show the classical integer programming formulation for the uncapacitated vertex k-center problem [10,21]. We refer to this formulation as F1U: x ij ≤ y j , ∀i, j ∈ {1, 2, ..., n} where In this formulation, there is a variable y j ∈ {0, 1} for every vertex v j ∈ V. If a vertex v j is selected as a center, then y j = 1; otherwise, y j = 0. There is also a set of variables x ij ∈ {0, 1}. If vertex v i is assigned to some vertex v j that has been selected as center (y j = 1), then x ij = 1; otherwise, x ij = 0. The value of each w ij is equal to the weight of edge {v i , v j } ∈ E. This way, constraints (3) and (4) work together. While constraint (3) indicates that every vertex has to be assigned to exactly one vertex, constraint (4) indicates that the vertices can be assigned only to vertices that have been selected as centers. Constraint (5) prevents selecting more than k centers. Notice that, in the uncapacitated vertex k-center problem, the output consists only of the set of centers C ⊆ V, and there is no need to return an assignment function f C : V \ C → C. Thus, the role of performing assignments through variables x ij is just to satisfy constraint (6), which assures that the distance from every vertex to its nearest center is smaller than or equal to z, which is the objective function (2) that we want to minimize. Notice that the value of z depends on the assigned vertices, which are codified through variables x ij . Finally, all x ij and y j are binary variables.
By adding capacity constraints to the uncapacitated vertex k-center problem, we obtain the capacitated vertex k-center problem. This problem receives as input a complete weighted graph G = (V, E), a capacity function f cap : V → N, and an integer k ∈ N. Its goal is to find a pair (C, , and the solution size r(C, f C ) is minimized, where r(C, f C ) is defined as the distance from the farthest vertex in V \ C to its assigned center in C (Equation (8)) and f C : V \ C → C. We refer to the optimal solution for the capacitated vertex k-center problem as (C * , f C * ), which has a size of r(C * , f C * ). Expressions (9) to (15) show the classical integer programming formulation for the capacitated vertex k-center problem [4,5]. This formulation is referred as F1C. This formulation is similar to formulation F1U, except that it turns constraint (3) into constraint (10), and adds constraint (14): where Since the domain of the assignment function f C is V \ C, the vertices that are selected as centers cannot be assigned to themselves or any other center. By turning (3) into (10), this formulation prevents assigning a center to itself or any other center. Furthermore, constraint (14) indicates that the maximum number of vertices that can be assigned to every vertex v j is at most

A New Formulation Based on the Minimum Capacitated Dominating Set
In addition to the classical formulations F1U and F1C, many alternative integer programming or mixed integer programming formulations have been proposed for the capacitated and uncapacitated vertex k-center problem [5,6,[26][27][28][29][30][31][32]. Perhaps, the simplest of these formulations are based on the relationship between the uncapacitated vertex k-center problem and the NP-Hard set covering and minimum dominating set problems [26,35,36]. In fact, the uncapacitated vertex k-center problem is equivalent to the minimum dominating set problem when the size r(C * ) of the optimal solution C * is known ahead of time (Lemma 1 and Theorem 1) [35,36]. To better understand this relationship, Definition 1 describes what a dominating set is and Definition 2 describes what a minimum dominating set is. Then, Expressions (16) to (19) show the integer programming formulation for the uncapacitated vertex k-center as a minimum dominating set problem [11,[36][37][38]. Definition 1. Given a graph G = (V, E), a dominating set is a set D ⊆ V such that, for every vertex v ∈ V \ D, an edge {v, u} ∈ E with u in D exists.

Definition 2.
A minimum dominating set is a set of minimum cardinality among all the dominating sets.
Definition 3. Given a weighted graph G = (V, E), a bottleneck graph G r = (V, E r ) is a graph such that E r consists of all the edges in E with weight less than or equal to r. Lemma 1. Let G = (V, E) be a complete weighted graph and let k be a positive integer. If r(C * ) is the size of the optimal solution C * for the uncapacitated vertex k-center problem over G = (V, E), then the minimum dominating set for the bottleneck graph G r(C * ) = (V, E r(C * ) ) has at most k elements.
Proof. The proof is by contradiction. Let D be a minimum dominating set over the bottleneck graph G r(C * ) = (V, E r(C * ) ). Let us assume that |D| > k. Under this assumption, ∀B ⊆ V such that |B| = k, there will always be at least one vertex u ∈ V \ B that is not adjacent to some element of B. This is the same as saying that there is no edge {u, v} ∈ E r(C * ) such that v is in B. If such edge does not exist, then its weight must be greater than r(C * ) (otherwise, it would not have been removed). Thus, the distance from vertex u to its nearest vertex in any set B must be greater than r(C * ). However, this contradicts the premise that there is a set C * ⊆ V of cardinality k such that the distance from every vertex v ∈ V \ C * to its nearest vertex in C * is less than or equal to r(C * ). Therefore, the number of elements in the minimum dominating set of the bottleneck graph G r(C * ) = (V, E r(C * ) ) cannot be greater than k. Theorem 1. Let G = (V, E) be a complete weighted graph and let k be a positive integer. If r(C * ) is the size of the optimal solution C * for the uncapacitated vertex k-center problem over G = (V, E), then the optimal solution to the minimum dominating set problem over the bottleneck graph G r(C * ) = (V, E r(C * ) ) is the optimal solution for the uncapacitated vertex k-center problem too.
Proof. By Lemma 1, the minimum dominating set D of the bottleneck graph G r(C * ) = (V, E r(C * ) ) has cardinality less than or equal to k. Since all edges e ∈ E r(C * ) have a weight at most r(C * ), and all vertices v ∈ V \ D are in the neighborhood of at least one element of D. Then, the distance from every vertex v ∈ V \ D to its nearest vertex in D is also less than or equal to r(C * ). Therefore, D is a set with no more than k vertices such that the distance from every vertex v ∈ V \ D to its nearest vertex in D is no more than r(C * ). In other words, D is the optimal solution to the uncapacitated vertex k-center problem: where Expressions (16) to (19) show the integer programming formulation for the uncapacitated vertex k-center problem as a minimum dominating set problem. We refer to this formulation as F2U. In this formulation, there is a variable y i ∈ {0, 1} for each vertex v i ∈ V. If a vertex v i is selected as a center, then y i = 1; otherwise, y i = 0. Let C be the set of selected centers. At (18), the matrix defined by all the a ij values represents the adjacency matrix of the bottleneck graph G r(C * ) = (V, E r(C * ) ), which results from removing all the edges with weight greater than r(C * ) from the original input graph G = (V, E), where r(C * ) is the size of the optimal solution C * for the uncapacitated vertex k-center problem over the input graph G = (V, E). Since simple graphs do not have loops, we set a ij to 0 for i = j. This way, constraint (17) indicates that, for every vertex v j ∈ V \ C, there must be at least one edge {v j , v i } ∈ E r(C * ) such that v i is selected as a center (y i = 1), and (16) indicates that the number of selected centers must be minimized.
In more detail, constraint (17) indicates that, for each vertex v j not selected as center (y j = 0), there must be at least one vertex v i selected as a center (y i = 1) such that the edge {v i , v j } is in E r(C * ) (a ij = 1). This way, each vertex v ∈ V \ C is adjacent to at least one center in the set of centers. Thus, by Definition 1, C is a dominating set in the bottleneck graph G r(C * ) = (V, E r(C * ) ). Now, since (16) minimizes the number of elements of the set C, this set is also a minimum dominating set in the bottleneck graph G r(C * ) = (V, E r(C * ) ). By Theorem 1, the optimal solution to this formulation is the optimal solution to the uncapacitated vertex k-center problem.
As well as the uncapacitated vertex k-center problem is related to the minimum dominating set problem, the capacitated vertex k-center problem is related to the minimum capacitated dominating set problem. Lemma 2 and Theorem 2 show that the capacitated vertex k-center problem is equivalent to the minimum capacitated dominating set problem when the size r(C * , f C * ) of the optimal solution (C * , f C * ) is known ahead of time. Here, r(C, f C ) is defined as the distance from the farthest vertex to its assigned center, where f C : V \ C → C. Definition 4 describes what a capacitated dominating set is, and Definition 5 describes what a minimum capacitated dominating set is [11,39,40]. Expressions (22) to (28) show the proposed integer programming formulation for the capacitated vertex k-center problem as a minimum capacitated dominating set problem. We refer to this formulation as F2C.
Definition 4. Given a graph G = (V, E) and a capacity function f cap : V → N, a capacitated dominating set D ⊆ V is a set such that every vertex v ∈ V \ D is assigned to some vertex u ∈ D ∩ N(v). In addition, the number of vertices assigned to each vertex u ∈ D is not greater than its capacity f cap (u). Here, N(u) is the neighborhood of u ∈ V.

Definition 5.
A minimum capacitated dominating set is a set of minimum cardinality among all the capacitated dominating sets.

Lemma 2.
Let G = (V, E) be a complete weighted graph, let k be a positive integer, and let f cap : V → N be a capacity function. If r(C * , f C * ) is the size of the optimal solution (C * , f C * ) for the capacitated vertex k-center problem over G = (V, E), then the optimal solution (D, f D ) for the minimum capacitated dominating set problem over the bottleneck graph G r(C * , f C * ) = (V, E r(C * , f C * ) ) is such that D has at most k elements and f D assigns no more than f cap (v) vertices to every vertex v ∈ D.
Proof. The proof is by contradiction. Let (D, f D ) be the optimal solution to the minimum capacitated dominating set problem over the bottleneck graph G r(C * , f C * ) = (V, E r(C * , f C * ) ). Here, D ⊆ V is a dominating set, and f D : V \ D → D is a function that assigns no more than f cap (v) ∈ N vertices to each vertex v ∈ D. By Definition 4, ∀(u, v) ∈ f D , v ∈ D ∩ N(u), and ∀v ∈ D, |{(u, v) ∈ f D }| ≤ f cap (v). Let us assume that the minimum capacitated dominating set (D, f D ) falls into some of the following cases: (a) |D| > k or (b) f D assigns more than f cap (v) vertices to some vertex v ∈ D. If case (a) occurs, then ∀(B, f B ), where B ⊆ V, |B| ≤ k, and f B : V \ B → B, at least one of the following statements must be true: On one hand, if Equation (20) is true, then, there is at least one vertex u ∈ V \ B that is assigned to a vertex v ∈ B \ N(u). Since v is not in the neighborhood of u, {u, v} ∈ E r(C * , f C * ) and the distance from vertex u to v is greater than r(C * , f C * ); otherwise, edge {u, v} would not have been removed from the original input graph G = (V, E). This means that there is not a pair (B, f B ) of size r(B, f B ) less than or equal to r(C * , f C * ), where B ⊆ V, |B| ≤ k, and f B : V \ B → B assigns no more than f cap (v) vertices to each vertex v ∈ B. However, our premise is that such pair exists and is the pair (C * , f C * ). Thus, Equation (20) cannot be true. On the other hand, if Equation (21) is true, then, the same pair (C * , f C * ) cannot exist. Actually, this is case (b). Therefore, case (a) and case (b) cannot be true. Namely, it cannot be true that ∀(B, f B ), where B ⊆ V, |B| ≤ k, and f B : V \ B → B, Equation (20) or Equation (21) hold. In other words, a minimum capacitated dominating set (D, f D ) over the bottleneck graph G r(C * , f C * ) = (V, E r(C * , f C * ) ) is such that D has at most k vertices and f D assigns no more than f cap (v) vertices to every vertex v ∈ D.
Theorem 2. Let G = (V, E) be a complete weighted graph, let k be a positive integer, and let f cap : V → N be a capacity function. If r(C * , f C * ) is the size of the optimal solution (C * , f C * ) for the capacitated vertex k-center problem over G = (V, E), then the optimal solution to the minimum capacitated dominating set problem over the bottleneck graph G r(C * , f C * ) = (V, E r(C * , f C * ) ) is the optimal solution for the capacitated vertex k-center problem too.
Proof. By Lemma 2, the optimal solution (D, f D ) to the minimum capacitated dominating set problem over the bottleneck graph G r(C * , f C * ) = (V, E r(C * , f C * ) ) consists of a set D with no more than k elements and a function f D : V \ D → D that assigns no more than f cap (v) vertices to every vertex v ∈ D. Since all edges e ∈ E r(C * , f C * ) have weight at most r(C * , f C * ), and all vertices v ∈ V \ D are assigned to some vertex in D. Then, the distance from every vertex v ∈ V \ D to its assigned vertex in D is also less than or equal to r(C * , f C * ). Therefore, D is a set with no more than k vertices such that the distance from every vertex v ∈ V \ D to its assigned vertex in D is no more than r(C * , f C * ), and no more than f cap (v) vertices are assigned to every vertex v ∈ D. In other words, the minimum capacitated dominating set (D, f D ) is the optimal solution to the capacitated vertex k-center problem: x ij ≤ y j , ∀i, j ∈ {1, 2, ..., n} (25) where Expressions (22) to (28) show the integer programming formulation for the capacitated vertex k-center problem as a minimum capacitated dominating set problem. We refer to this formulation as F2C. In this formulation, we added variables x ij ∈ {0, 1}, which take a value x ij = 1 if a vertex v i is assigned to a vertex v j ; otherwise, x ij = 0. Constraint (23) indicates that the number of vertices assigned to any vertex v j ∈ V cannot be greater than its capacity f cap (v j ), where f cap : V → N is part of the input. Constraint (24) indicates that every vertex v j ∈ V \ C (y j = 0) has to be assigned to exactly one vertex, and that vertices v j ∈ C (y j = 1) does not have to be assigned to any vertex at all. Finally, constraint (25) indicates that every vertex v i can be assigned only to vertices that have been selected as a center (y j = 1) and constraint (26) indicates that every vertex v i can be assigned only to vertices in its neighborhood (a ij = 1). With these constraints, we add capacity restrictions and an explicit assignment to the minimum dominating set problem; i.e., a maximum of f cap (v i ) vertices from V \ C must be assigned to each selected vertex v i ∈ C (y i = 1). In addition, notice that constraints (24) to (26) guarantee that every vertex v ∈ V \ C is assigned to exactly one vertex u ∈ V, which, by constraints (25) and (26), is in C ∩ N(v). By Definition 5, this integer programming formulation is equivalent to the minimum capacitated dominating set problem over the bottleneck graph G r(C * , f C * ) = (V, E r(C * , f C * ) ), where E r(C * , f C * ) contains edges from E of cost less than or equal to r(C * , f C * ), being r(C * , f C * ) the size of the optimal solution (C * , f C * ) of the capacitated vertex k-center problem over the input graph G = (V, E). By Theorem 2, the optimal solution to this formulation is the optimal solution to the capacitated vertex k-center problem.

An Exact Algorithm for the Capacitated Vertex K-Center Problem
The integer programming formulation F2C can be solved using off-the-shelf optimization software. However, to do so, it is necessary to know the size r(C * , f C * ) of the optimal solution (C * , f C * ) in advance. One way to solve this issue is by using a series of guesses on the optimal solution size r(C * , f C * ). Since the optimal solution size r(C * , f C * ) must be equal to the weight of some edge in the input graph G = (V, E), we can solve formulation F2C using the set of weights of the edges of the input graph. That is, replacing r(C * , f C * ) of Equation (27) by w(e) for every e ∈ E. This will generate up to |E| solutions of the form (C, f C ). Of course, not all of these solutions will be feasible. Among the obtained solutions, the optimal one will be the solution with no more than k elements, and with the minimum distance from the farthest vertex to its assigned center. Thus, this method implies that formulation F2C has to be solved |E| times. Fortunately, it can be improved by performing a binary search over the non-decreasing ordered set of edge weights of the input graph. This way, formulation F2C has to be solved only log |E| times, which is O(log |V|) times. Algorithm 1 shows the pseudocode of the proposed procedure that exploits this idea, where line 5 can be replaced by formulation F2C, setting r(C * , f C * ) of Equation (27) as w(e mid ). Theorem 3 shows the correctness of this algorithm. Proof. The goal of Algorithm 1 is to use some off-the-shelf optimization software to solve the integer programming formulation F2C for the capacitated vertex k-center problem (line 5) over the input graph G with a value of w(e mid ) that equals the optimal solution size r(C * , f C * ), where (C * , f C * ) is the optimal solution to the capacitated vertex k-center problem. To achieve this, Algorithm 1 performs a binary search (while loop from line 3 to 14) over the non-decreasing ordered set of edge weights of the input graph. Every time a solution (C, f C ) with |C| ≤ k is generated, high is set to mid (line 10); otherwise, low is set to mid (line 12). This is because, when the minimum capacitated dominating set of a bottleneck graph G has more than k elements, it is necessary to add more edges to this graph in order to get a minimum capacitated dominating set with fewer elements, and setting low to mid implies that the next value of w(e mid ) will be greater than the previous one. Therefore, it will generate a new bottleneck graph with more edges, including the edges of the previous bottleneck graph. Now, if the minimum capacitated dominating set of a bottleneck graph G has k or fewer elements; then, it is possible that by removing more edges, we can still find a minimum capacitated dominating set with k or fewer elements. Thus, setting high to mid implies that the next value of w(e mid ) is going to be smaller. Therefore, it will generate a new bottleneck graph with fewer edges. In this manner, at the last iteration of the while loop, the value of w(e mid ) is equal to w(e high ), which implies that the bottleneck graph generated by w(e mid ) has a minimum capacitated dominating set with k or less elements. Furthermore, w(e low ) equals w(e mid−1 ) and any bottleneck graph generated by any number less than or equal to w(e low ) has a minimum capacitated dominating set with more than k elements. Therefore, at the last iteration of the while loop, the value of w(e mid ) is the smallest one from the set of edge weights in E that is capable of generating a bottleneck graph with a capacitated dominating set with at most k elements, i.e., w(e mid ) = r(C * , f C * ). Thus, Algorithm 1 solves the capacitated vertex k-center problem optimally. Finally, the if condition from lines 6 to 8 assures that the stop condition of the binary search is met.

Empirical Performance Evaluation
To test Algorithm 1, two sets of instances with non-uniform capacities were created. The instances from the first set have 100 to 107 vertices (Set 1) and the instances from the second set have 200 to 280 vertices (Set 2). All instances were created as follows. A benchmark instance from TSPLib [41] was selected. Then, from this instance, four variants with non-uniform capacities were generated. For example, from instance kroA100, instances kroA100_Q1 to kroA100_Q4 were created and the capacity associated with each vertex was selected at random from the range [ 0.75 · n−k k , 1.25 · n−k k ], where n is the number of vertices and k is the number of centers. This range was used because n−k k is the minimum capacity that every vertex must have to guarantee that all vertices can be assigned to a center when capacities are uniform. Since centers are not assigned, k is subtracted from the number of vertices n in the numerator. This way, by selecting random capacities from the range [ 0.75 · n−k k , 1.25 · n−k k ], the capacity of each vertex will be relatively close to n−k k . This is important because, as the capacity of all vertices approaches n, the problem becomes closer to the uncapacitated version, which is easier to solve according to empirical experiments [32,36]. Thus, the generated instances remain relatively difficult to solve. Regarding the value of k, it was selected as follows. For Q1 instances, k = 5; for Q2 instances, k = 10; for Q3 instances, k = 20; and for Q4 instances, k = 40. Tables 1 and 2 show the results obtained by the proposed exact algorithm (Algorithm 1) and by the classical formulation F1C over Set 1 and Set 2, respectively. The experiments were performed using Gurobi version 9.0.0 as off-the-shelf optimization software with its default tuning parameters [42]. Regarding Algorithm 1, we implemented line 5 by setting Gurobi to stop as soon as a feasible solution of size less than or equal to k is found. This way, Algorithm 1 can reduce its execution time. All the experiments were performed on an Asus laptop with an Intel Core i5-8300H processor (Santa Clara, CA, USA) and 16 GB of RAM. The set of instances and the source code of the algorithms can be obtained from https://github.com/alex-cornejo/exact_ckc. From Table 1, we can observe that Algorithm 1 needs an average of 9.61 s to solve each instance, while the classical formulation F1C needs an average of 30.58 s. Namely, Algorithm 1 is at least three times faster. Furthermore, Algorithm 1 converged faster to the optimal solution in 37 out of the 48 instances. From Table 2, we can observe that Algorithm 1 needs an average of 1332 s to solve each instance, while the classical formulation F1C needs an average time greater than 13,726 s. Thus, for Set 2, Algorithm 1 is at least 10 times faster. Actually, we had to set a maximum execution time of 24 h for the classical formulation F1C because this time was not enough for the classical formulation to solve some instances. Furthermore, Algorithm 1 converged faster to the optimal solution in 39 out of the 48 instances. From these results, we can observe that the tested algorithms are better suited for solving relatively small instances of the problem and that the proposed Algorithm 1 tends to converge faster to the optimal solution.

Conclusions and Future Work
This paper shows that the capacitated vertex k-center problem can be solved through the minimum capacitated dominating set problem. This is accomplished by introducing Algorithm 1, which consists of solving O(log |V|) times an integer programming formulation that is equivalent to the NP-Hard minimum capacitated dominating set problem. Additionally, this paper presents some experiments showing the usefulness of the proposed algorithm for solving small instances of the problem.
Since the capacitated vertex k-center problem is an NP-Hard problem, no algorithm can solve it in polynomial time (under P = NP). Thus, as well as other exact algorithms proposed for this problem, Algorithm 1 is an exponential-time algorithm limited to solving small instances. However, this algorithm can be used as a basis for designing efficient heuristics or approximation algorithms. These algorithms may find near-optimal feasible solutions for arbitrary instances in polynomial time. Finally, our proposal can also serve as a basis for designing exact algorithms for related problems, such as the capacitated vertex k-center problem with non-uniform demands.