Decision, Risk, and Operations Working Papers Series A polyhedral study of the maximum edge subgraph problem

The study of cohesive subgroups is an important aspect of social network analysis. Cohesive subgroups are studied using diﬀerent relaxations of the notion of clique in a graph. For instance, given a graph and an integer k , the maximum edge subgraph problem consists in ﬁnding a k -vertex subset such that the number of edges within the subset is maximum. This work proposes a polyhedral approach for this NP-hard problem. We study the polytope associated to an integer programming formulation of the problem, present several families of facet-inducing valid inequalities, and discuss the separation problem associated to these families. Finally, we implement a branch and cut algorithm for this problem. This computational study illustrates the eﬀectiveness of the classes of inequalities presented in this work.


Introduction
Social network analysis is an important tool to study the relationships and flows between people, organizations, and other entities. Social networks are encoded by graphs with vertices representing the entities, and edges representing interdependencies between them. An important aspect of social network analysis is the detection of cohesive subgroups, which are subsets of actors among whom there are relatively strong, direct, intense, frequent, or positive ties [23]. Although one could potentially define such a subgroup with the concept of clique, this does not provide a full picture because in practice missing edges frequently exist but that is not a strong enough reason to claim that two vertices cannot belong to the same group. For example, if two individuals in a social network are not friends because they fought but share most of their friends, they would belong to the same social group. For this reason, it is more satisfactory to define a cohesive subgroup using a relaxation of the definition of clique.
Let G = (V, E) be the graph that represents the social network of interest. One possible approach to study cohesive subgroups is the use of quasi-cliques, which are subgraphs with a pre-specified minimum edge density. Here, the density of a subgraph is the quotient between the number of edges with both endpoints in the subgroup and the total number of edges. Formally, given a real number 0 ≤ γ ≤ 1, a subgraph G = (N , E ) ⊆ G is a γ-quasi-clique if 2|E |/(|N |(|N | − 1)) ≥ γ. In the example of the social network of friends referred to earlier, this would allow some relationships to be missing to model that a small percentage of the pairs of individuals in the group may not be friends with each other. In earlier work, we strongly rely on quasi-cliques to study the network of bilateral investment treaties signed between countries of the world [21]. Besides having used them to identify cohesive subgroups, they also allow us to compare different random topologies. Indeed, cliques are inexact because there is no guarantee that randomly generated edges will form the same cliques as in the original graph. Quasi-cliques, instead, can capture the topological structure regardless of which particular random edges are present in the network.
Since quasi-cliques are characterized by their size and density, they have been studied by considering two formulations that are dual of each other, much like other bi-criteria optimization problems. One can either be given (i) a specified edge density γ ∈ [0, 1], and find the largest γ-quasi-clique, or be given (ii) a size k of a subgraph, and find the densest set of k vertices. The second approach-the one we follow in this paper-is known in the graph and optimization literature as the maximum edge subgraph problem (MESP) [4] or dense/densest/heaviest k-subgraph problem [12] or k-cluster problem [8]. Concretely, given an integer k < |V |, the MESP consists in finding a vertex subset A ⊂ V with |A| = k such that |E(A)| is maximum, where E(A) = {ij ∈ E : {i, j} ⊂ A}.
The maximum clique problem reduces to the MESP, hence the latter is NP-hard [3]. Indeed, if the MESP can be solved in polynomial time, then we can polynomially search the greatest k for which the answer to the MESP is a complete subgraph, thus solving the maximum clique problem. This problem remains NP-hard even for some simpler classes of graphs, such as comparability, triangle-free and chordal graphs [8]. The complexity of the problem motivated [1,4,12,15,20] to look for approximation algorithms and heuristics, [8,18,19] to consider restricted classes of graphs, and [6] to introduce several integer programming formulations. In this work, we consider the polytope associated to the formulation MIP1 of [6]. We introduce several families of facet-inducing valid inequalities and discuss the separation problem associated to these families. Although the main contribution of the paper lies with the study of the polytope and its facets, for completeness we also carry on a small computational study to test the empirical strength of the families of facets and conclude which are computationally most effective.
The remainder of this paper is organized as follows. Section 2 presents the formulation and studies some of its properties. In Section 3, we introduce some classes of valid inequalities for this formulation, discuss in what situations they induce facets of the associated polytope, and explore the computational complexity of the corresponding separation problems. Section 4 describes the implementation of a branch and cut algorithm based on these classes of valid inequalities and reports on our computational results. Finally, we conclude with some remarks and directions for future research.

Integer Programming Formulation
To represent quasi-cliques, we introduce a binary vertex variable x i for every i ∈ V . We set x i = 1 if and only if the vertex i belongs to the k-subset A ⊂ V , which defines a feasible solution. For every ij ∈ E, we introduce a binary edge variable z ij that satisfies that ij ∈ E(A) when z ij = 1. Notice that z ij and z ji denote the same variable because edges are undirected. With these definitions, the maximum edge subgraph problem can be formulated using the following integer program. To be consistent with the literature, we refer to this formulation as MIP1.
Here, the objective counts the number of edges in the subgraph, the first constraint guarantees that the subgraph has the desired size, and the second and third constraints imply that only edges with both endpoints in the subset can be selected. Note that (1f) can be dropped from the formulation, thus letting the edge variables be continuous and free variables. In an optimal solution, the edge variables will be binary automatically.
We define P (G, k) ⊆ Ê |V |+|E| to be the convex hull of the vectors (x, z) satisfying constraints (1b)-(1f). Moreover, we let P LP (G, k) ⊆ Ê |V |+|E| be the linear relaxation of P (G, k), as given by constraints (1b)-(1d), 0 ≤ x i ≤ 1 for i ∈ V , and 0 ≤ z ij ≤ 1 for ij ∈ E. The next result implies that the polytope does not lose more dimensions than the single one lost by the equality constraint (1b). This proof of this uses standard arguments and is, therefore, omitted. Theorem 1. The dimension of the polytope P (G, k) is |V | + |E| − 1.

Valid Inequalities
Each of the following subsections introduces a class of facet-inducing valid inequalities for P (G, k) and studies the complexity of the associated separation problem. All these classes arise from combinatorial structures in the original graph such as trees and matchings. These inequalities were designed by analyzing the facets of simple instances that allow a complete characterization of the polytope and generalizing them to arbitrary instances using ideas from other problems such as those studied in [9,22].

Neighborhood Inequalities
We start with our simplest class of facet-defining inequalities, defined by a specific vertex and a subset of vertices. We refer to the neighborhood of a vertex i ∈ V by N (i) := {j ∈ V : ij ∈ E}. Definition 1. For a vertex i ∈ V and a set A ⊆ V \ {i} with |A| ≤ k − 2, a generalized neighborhood inequality associated with the vertex i and the set A is defined by A particularly simple case is given by a vertex i and the set A = ∅, from where we have that j∈N (i) z ij ≤ (k − 1)x i . We refer to this inequality as the neighborhood inequality associated with vertex i. The neighborhood inequalities are equivalent to the star subgraphs inequalities introduced by Sherali and Cole Smith [22]. We generalize this class and prove that they are facet defining in our problem.
The next result establishes conditions under which generalized neighborhood inequalities induce facets of P (G, k). They require that either i is well connected or A is big enough. The case of k = |V | − 1 is excluded but that is not important because the optimal solution to the MESP is easy to compute in that case.
Proof. Let (x, z) ∈ P (G, k) ∩ |V |+|E| be a feasible solution. If x i = 0, then z ij = 0 for every j ∈ N (i), and (2) is satisfied by (x, z) because j∈A x j ≤ |A|. If x i = 1, there remain at most k − 1 variables set to 1, which implies that In both cases, the solution (x, z) satisfies (2). Since (x, z) is an arbitrary integer point in P (G, k), then (2) is valid for this polytope.
Let F be the face of P (G, k) defined by (2) and suppose λ T (x, z) = λ 0 for every (x, z) ∈ F . We shall prove that (λ, λ 0 ) is a linear combination of the coefficient vector of the generalized neighborhood inequality (2) and the coefficient vector of the model constraint (1b), thus showing that F is a facet of P (G, k). Claim 1: λ zjl = 0 ∀jl ∈ E : j, l = i. Consider the feasible solution w 1 = (x, 0) ∈ F , where w 1 xa = 1 for all a ∈ A, w 1 xj = 1, w 1 x l = 1, w 1 xi = 0, and the number of vertices v ∈ V such that w 1 xv = 1 is exactly k. Notice that j and l may be vertices in A. This construction is feasible since |V | ≥ k + 2 and |A| ≤ k − 2. Since jl ∈ E, let w 2 ∈ F be obtained from w 1 by setting w 2 z jl = 1 and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ 0 = λ T w 2 , implying λ z jl = 0. Claim 2: λ xj = λ xl ∀j, l ∈ V \ A : j, l = i. Consider the feasible solution w 1 = (x, 0) ∈ F , where w 1 xa = 1 for all a ∈ A, w 1 xj = 1, w 1 x l = 0, w 1 xi = 0 and the number of vertices v ∈ V such that w 1 xv = 1 is exactly k. This construction is feasible since |V | ≥ k + 2 and |A| ≤ k − 2. Let w 2 ∈ F be obtained from w 1 by setting w 2 x l = 1, w 2 xj = 0 and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ 0 = λ T w 2 , implying λ xj = λ x l . Claim 3: λ zij = λ zil ∀j, l ∈ N (i) \ A. Consider the feasible solution w 1 = (x, z) ∈ F , where w 1 xa = 1 for all a ∈ A, w 1 xi = 1, w 1 x l = 0, w 1 xt = w 1 zit = 1 for a subset of exactly (k − |A| − 1) vertices in N (i) \ (A ∪ {l}) including the vertex j, and w 1 zij = 1. It is easy to verify that this construction is feasible, since |N (i) \ A| ≥ k − |A|. Let w 2 ∈ F be obtained from w 1 by setting w 2 x l = 1, w 2 xj = 0, w 2 zij = 0 and w 2 z il = 1. Since λ T w 1 = λ T w 2 , we obtain λ zij + λ xj = λ z il + λ x l . As j, l are vertices in V \ (A ∪ {i}), by Claim 2 we know λ xj = λ x l , and thus we conclude λ zij = λ z il . Claim 4: λ zia = 0 ∀a ∈ A, ia ∈ E. Consider the feasible solution w 1 = (x, z) ∈ F , where w 1 xa = 1 for all a ∈ A, w 1 xi = 1, w 1 xj = 1 for a subset of exactly (k − |A| − 1) vertices j ∈ N (i) \ A, and w 1 zij = 1 iff j ∈ N (i) \ A and w 1 xj = 1. It can be seen that this construction is feasible, since |N (i) \ A| ≥ k − |A|. Let w 2 ∈ F be obtained from w 1 by setting w 2 zia = 1. Since a is an arbitrary vertex of A, we conclude λ zia = 0. Claim 5: Consider the feasible solution w 1 as in Claim 4, constructed in such a way that w 1 xj = 0. Let w 2 ∈ F be obtained from w 1 by setting w 2 xa = 0, w 2 xj = 1 and w 2 zij = 1. Again, these constructions are feasible since |N (i) \ A| ≥ k − |A|. Since both points belong to F , we have λ T w 1 = λ 0 = λ T w 2 , implying λ xa = λ zij + λ xj . Claim 6: . Consider the feasible solution w 1 = (x, 0) ∈ F , where w 1 xa = 1 for all a ∈ A and w 1 xt = 1 for a subset of exactly (k − |A|) vertices t ∈ N (i) \ A including the vertices j and l (all the remaining x-variables are set to zero). It can be seen that this construction is feasible, since |N (i) \ A| ≥ k − |A| and |A| ≤ k − 2. Let w 2 ∈ F be obtained from w 1 by setting w 2 x l = 0, w 2 xi = 1 and w 2 zit = 1 for the remaining (k − |A| − 1) vertices t ∈ N (i) \ A with w 1 xt = 1, and keeping the remaining variables unchanged. Since l ∈ N (i) \ A and Claim 3 implies λ zij = λ z il for every We let α := λ zij for j ∈ N (i) \ A, which does not depend on the choice of j because of Claim 3. We define β := λ xr for r ∈ V \ (A ∪ {i}), which is well-defined by Claim 2. From here, λ xi = β − (k − |A| − 1)α by Claim 2 and Claim 6, λ xa = α + β for every a ∈ A by Claim 5, and λ z jl = 0 for every jl / ∈ {ij : j ∈ N (i) \ A} by Claims 1 and 4. We conclude that λ is a linear combination of the coefficient vector π of the generalized neighborhood inequality (2) and the coefficient vector π of the model constraint (1b); i.e., λ = απ + βπ . Let π 0 and π 0 be the independent terms of (2) and (1b), respectively. For every (x, z) ∈ F we have hence (λ, λ 0 ) is a linear combination of (π, π 0 ) and (π , π 0 ), and (2) induces a facet of P (G, k). Note that if G is a star, then A can have k − 1 vertices (i.e., |A| ≤ k − 1) and still be facet defining. We now study the separation problem associated with the generalized neighborhood inequalities. Considering an input vector (x, z) ∈ P LP (G, k), this problem consists in determining whether the point (x, z) is separated by a generalized neighborhood inequality or not. To prove that this problem is solvable in polynomial time, we need the following lemma. For i ∈ V , we defineN (i) := V \ ({i} ∪ N (i)) as the complement of the neighborhood of i. Lemma 1. If the generalized neighborhood inequality associated with the vertex i and the set A is violated by the point (x, z) ∈ P LP (G, k), then the corresponding inequality associated with the vertex i and the set is also violated.
Proof. We show that, when sequentially removing the vertices in {j ∈ A ∩ N (i) : x i + x j ≤ 1 + z ij } ∪ {j ∈ A ∩N (i) : x i + x j ≤ 1} from A, the difference between the RHS and the LHS of the inequality never Input: A point (x, z) ∈ P LP (G, k). Output: A violated GNI, or a certificate that no such inequality exists.
Check if the GNI associated with the vertex i and the set A is violated end for Algorithm 1: Separation of the generalized neighborhood inequalities (GNI) increases. Let j ∈ A and let A = A \ {j}. As the generalized neighborhood inequality associated with the vertex i and the set A is violated, we know that v∈A If j ∈ N (i), the generalized neighborhood inequality associated with i and A is violated if The difference between the LHS and the RHS of (5) is at least the difference between the LHS and the RHS of (4) if and only if x i + x j ≤ 1 + z ij . This shows that we can safely remove from A the vertex j ∈ N (i) if In this case, the difference between the LHS and the RHS of (6) does not decrease with respect to (4) if and only if 1 − x i ≥ x j , hence we can safely delete j from A if this property holds. As the vertex j ∈ A is an arbitrary vertex, the lemma follows.
We are now in position of addressing the separation of generalized neighborhood inequalities. If x i = 0, no such inequality associated with the vertex i will be violated because j∈A x j ≤ |A|. When x i > 0, Lemma 1 implies that we only need to check the generalized neighborhood inequalities associated with the sets A described in the lemma. The following result shows that Algorithm 1, a straightforward implementation of this idea, can separate this class in polynomial time.
Theorem 3. The generalized neighborhood inequalities can be separated in O(n 2 log n) time using Algorithm 1.
Notice that the bottleneck of the algorithm, which defines the running time, is sorting the vertices with respect to ω j for every vertex i with x i > 0.

Matching Inequalities
We now introduce another class of inequalities that use a matching (i.e., a maximal set of pairwise disjoint edges) instead of a single vertex i.

Definition 2. Let A ⊆ V and let B be a maximal matching of E(V \ A). A matching inequality associated with the set A and the matching B is defined by
Matching inequalities are related to the odd-set inequalities introduced by Edmonds [9]. For our problem, though, we consider edges instead of vertices, and we take into account the parity of k and allow the set A to be arbitrary.
The next results prove that matching inequalities are valid as long as |A| and k do not have the same parity, and that they are facet-defining when the cardinalities of A and B have the correct values. Similarly to before, the case of k > |V | − 3 can be solved in polynomial time so we can disregard that case. We will just prove that the inequality is valid; the proof that it is facet-defining is similar to that of Theorem 2 and is deferred to the appendix.
We now address the separation problem for this family of inequalities. Recall that the maximum weight matching problem can be solved in O(|V | 3 ) time [10]. We define V (B) ⊆ V to be the set of endpoints of the edges in B. Proof. Let us first consider the case when |A| must be even because k is odd. We consider the complete We have w(M ) > (k − 1)/2 if and only if there exists some violated matching inequality. For the forward direction, it suffices to consider the inequality associated with A = V (E A ) and B = M \ E A . Note that, as z ij ≥ 0, we can always extend B to a maximal matching of G \ A. For the converse, add to the matching B an arbitrary perfect matching of the complete graph induced by A. Finally, in the case when |A| must be odd, we repeat the previous procedure |V | times by fixing each vertex i in A and by considering G \ {i}. In this case, there exists some violated matching inequality if and only if w(M ) > k/2 − x i .

Forest Inequalities
We now consider a family of inequalities defined over a subset of vertices and over a forest inside that subset.
Definition 3. Let A ⊆ V be a vertex subset with cardinality |V | − k + 1, and let T ⊆ E(A) be an acyclic edge subset of A. A forest inequality associated with A and T is defined by The theorem below states that this family of inequalities is always valid and it is facet-defining when paths in the forest T are not too long. The proof that the family is facet-defining is not included because it is similar to Theorem 2.
Theorem 6. The forest inequality (9) is valid for P (G, k). In addition, if for every ij ∈ E(A) \ T there exists a path in T from i to j of length at most k − 1, then (9) is facet-defining.
Proof. Let (x, z) ∈ P (G, k) ∩ |V |+|E| be a feasible solution. Letting M ⊆ T be the subset of edges ij in the forest such that z ij = 1, the LHS of (9) equals 1 + |M |. This value is upper bounded by |V (M )| because M is acyclic. If M is empty then, as |V \ A| = k − 1, there must be at least one vertex i ∈ A such that x i = 1, so the inequality holds. If M is nonempty, the inequality also holds because x i = 1 for every i ∈ V (M ).
Since (x, z) is an arbitrary integer point in P (G, k), then (9) is valid for this polytope.
The separation problem for forest inequalities, defined as follows, turns out to be NP-complete.

Forest inequalities separation
Instance: A graph G, an integer k and a point w = (x, z) ∈ P LP (G, k) Question: Does w violate some forest inequality?
Proof. We can easily check that this problem belongs to the class NP, since we can nondeterministically generate a vertex subset A ⊂ V and a forest T ⊆ E(A), and verify in deterministic polynomial time whether the forest inequality associated with A and T is violated by the point w or not. To complete the proof, we construct a polynomial reduction from the edge-weighted version of the r-cardtree problem [13] to Forest inequalities separation. An instance of r-cardtree is given by a tuple (H, r, p is an edge-weighted graph with weight function w H : E H → Ê, r ∈ AE is a nonnegative integer such that r ≤ |V H |, and p ∈ Ê. An instance is affirmative when H contains a tree of exactly r edges whose weight is less than p, and negative otherwise. This problem is known to be (strongly) NP-hard [13].
The edge weights can be assumed to be positive (if some of them are negative, let α = − min{w H (ij) : ij ∈ E H }, add α to all the edge weights, and modify the value of p by adding rα). We can also trivially assume r > 2 and w H (ij) ≤ p for every edge ij ∈ E H . Finally, notice that without loss of generality we can always assume |V H | > cr, where c ≥ 1 is a positive number, by adding a suitable number of isolated vertices.
To reduce this instance to an instance of forest inequalities separation, we keep the same graph structure and construct a feasible solution w for which the two problems will be equivalent. The goal is getting a violated forest inequality from w when there exists a tree of cardinality r with weight less than p. We can safely assume that |V H | ≥ 2r + 4 (otherwise, we add the necessary isolated vertices).
• Set the structure of the graph G(V, E) as the original one H(V H , E H ). Set k = n − r, where n = |V H |.
• We construct a feasible solution w = (x, z) ∈ Ê |V |+|E| . To have all vertices with the same value, we set x i = 1 − r/n in each vertex i ∈ V . From here, the RHS of (9) equals (r + 1)(n − r)/n.
• To get trees that violate (9) to have small cardinality, we need to make z inversely correlated with weights w H . We choose the functional form z ij = 1−ρ(w H (ij))r/n for a carefully constructed function ρ(w) = 1 + (w/p + 1)/(r + 1) ≥ 1.
Output: A set of violated forest inequalities (which may be empty) Construct the directed graph G H = (V H , E H ) in the following way: Using BFS build a tree T starting from vertex i until the tree has |V | − k + 1 vertices, or until no more vertices can be added.
if T has at least |V | − r − k + 1 vertices then The inequality associated with the edge set T and the vertex set Add the inequality to S. end if end for Return S.

Algorithm 2: Heuristic for the separation of forest inequalities
The function ρ(w) above was specifically chosen to get the following important property, which follows after some algebra: This construction is polynomial in the size of H. We now verify that w ∈ P LP (G, n − r) by checking that w satisfies all the constraints of the relaxed polytope. Constraint (1b) is satisfied by construction, while (1c) and (1d) hold because ρ(w) ≥ 1. Finally, the relaxed versions of (1e) and (1f) are verified because n ≥ 2r + 4 and w H (ij) ≤ p. Putting all together, w ∈ P LP (H, n − r). To complete the proof, we show that the prescribed transformation maps affirmative instances of r-cardtree onto affirmative instances of Forest inequalities separation and conversely. In other words, we need to prove that (H, r, p) is affirmative, i.e., there exists a tree T of r + 1 vertices whose edge weight is at most p, if and only if the point w as constructed above violates a forest inequality.
(⇒) By (10), we conclude that the forest inequality associated with A = V (T ) and the tree T is violated. (⇐) Conversely, suppose that the forest inequality associated with the vertex set A and the forest F is violated. Set A is such that |A| = r + 1 and V (F ) ⊆ A. If F is a tree spanning A, the claim follows. Otherwise, |E(F )| ≤ r − 1. Since w G (ij) ≤ (n − r)/n for every edge ij of G, and n > 2r, then 1 + ij∈E(F ) z ij ≤ 1 + (r − 1)(n − r)/n ≤ (r + 1)(n − r)/n = i∈V (F ) x i , a contradiction. Therefore, the transformation maps affirmative instances of r-cardtree onto affirmative instances of forest inequalities separation and conversely, hence the latter is NP-complete.
Since the separation problem for forest inequalities is NP-complete, we propose a heuristic procedure for tackling this problem. Our heuristic, which is shown in Algorithm 2, decides which vertices to place in A by attempting to find trees that violate a forest inequality. We let V H := {i ∈ V : 0 < x i < 1} and R := {i ∈ V : x i = 0}. First we construct a directed graph G H on the vertices of V H , by adding a directed edge from vertex i to vertex j, only if the value of the variable z ij equals the value of x j . The algorithm tries to find a maximum cardinality spanning tree rooted at a vertex i ∈ V H . The construction of G H guarantees that each vertex, with the exception of the root, has the same value as the directed edge entering it. If the cardinality of the tree is |V | − k + 1, then we have found a violated inequality. If not, we can try to expand A by adding vertices in R. Note that this will not affect the values at either side of the inequality, that will end up violated by 1 − x i . We refer the reader to Section 4 for a discussion on the effectiveness of this heuristic in finding violated inequalities.

Tree Inequalities
In this section we consider a family of inequalities that depends on a subset of vertices as before, but now we take a tree induced by the vertices outside the subset. For a tree T , we define L T ⊂ V T to be the set of leaves of T andL T := V T \ L T to be the set of interior vertices; i.e.,L T is the set containing all the vertices i ∈ V T such that d T (i) > 1. We denote the number of leaves of T by := |L T |.
In the sequel, we will use the following notation. Definition 4. Let A ⊂ V be a (possibly empty) vertex subset with |A| < k. In addition, let T = (V T , E T ) ⊆ G \ A be a tree on k − |A| + 1 vertices. A tree inequality associated with the subset A and the tree T is defined by Consider T as a tree rooted at t, where t ∈L T is an interior vertex. Assuming that T is not a star, it has at least one branch containing two or more vertices. For any vertex j ∈ T , denote by B j the branch containing the minimum number of vertices among those containing at least two vertices. We let b(T ) be the maximum size of a branch of T when the tree is rooted in an arbitrary interior vertex. This value equals max j∈LT {|B j |}.
We are ready to prove that this family of inequalities is valid and conditions that guarantee that it is facet-defining.
Proof. Let (x, z) ∈ P (G, k) ∩ |V |+|E| be a feasible solution. Let M = {ij ∈ E T : z ij = 1} be the subset of the tree whose edges have z ij = 1, and let R = {r ∈ V T : j∈NT (r) z rj < d T (r)}. Assume first that x a = 1 for every a ∈ A. Since |V T | = k − |A| + 1, then R is nonempty. It suffices to show that ij∈M z ij ≤ i∈V (M) (d T (i) − 1)x i . As M is a forest, we will prove that ij∈Mt z ij ≤ i∈V (Mt) (d T (i) − 1)x i holds for every maximal tree M t ⊆ M . Consider the tree M t as rooted in a vertex q ∈ M t such that q ∈ R. We know that such vertex q exists in every maximal M t , as T is a tree, R is nonempty and M t is maximal. Then, q has at most d T (q) − 1 neighbors in T \ R so the inequality i:iq∈E(T ) z iq ≤ (d T (q) − 1)x q holds. Now mark the edges iq ∈ E(T ) and traverse the remaining vertices in a BFS order rooted at q. Each vertex v has left at most d T (v) − 1 unmarked incident edges jv such that z jv = 1. This procedure can be repeated until no unmarked edges are left in M . As in each step the partial inequalities hold, and no edges are left, then the inequality holds. Assume now that x a = 0 for some a ∈ A. Hence, a∈A x a < |A|. If R is nonempty, we have seen that ij∈ET z ij ≤ i∈VT (d T (i) − 1)x i , so the inequality will hold. On the contrary, if R is empty, then x i = 1 for every i ∈ V T . Then, i∈VT (d T (i) − 1)x i = k − |A| − 1, so the RHS of the inequality is k − 1. As there are at most k − |A| edges ij ∈ E T such that z ij = 1, the LHS of the inequality is at most k − 1, hence the inequality holds. Since (x, z) is an arbitrary integer point in P (G, k), then (11) is valid for this polytope. Now we switch to proving that the inequality is facet-defining. Suppose that the hypotheses of the theorem hold. Let F be the face of P (G, k) defined by (11), which satisfies λ T (x, z) = λ 0 for every (x, z) ∈ F . We shall prove that (λ, λ 0 ) is a linear combination of the coefficient vector of the tree inequality (11) and the coefficient vector of the model constraint (1b), thus showing that F is a facet of P (G, k). Claim 1: λ zjl = 0 ∀jl ∈ E \ E T . To prove this claim, we partition E \ E T in three subsets.
• Claim 1a: λ zjl = 0 ∀j, l ∈ V \L T : jl ∈ E. Consider the feasible solution w 1 = (x, 0) ∈ F , where w 1 xa = 1 for all a ∈ A, and the number of vertices v ∈ V \L T such that w 1 xv = 1 is exactly k. This construction is feasible since |V | ≥ 2k + 2 − |A| − . It also satisfies (11) with equality because w 1 xa = 1 for every vertex a ∈ A and w 1 xr = 0 for every vertex r having a non-null coefficient in the RHS of the inequality. Assume, furthermore, w 1 xj = w 1 x l = 1, since |A| ≤ k − 2. Let w 2 ∈ F be obtained from w 1 by setting w 2 z jl = 1 and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ 0 = λ T w 2 , implying λ z jl = 0.
• Claim 1b: λ zjl = 0 ∀j ∈ A, l ∈L T : jl ∈ E. Consider the feasible solution w 1 = (x, z) ∈ F , where w 1 xa = 1 for all a ∈ A, w 1 xt = 1 for all t ∈ V T \ {s}, where s is an arbitrary leaf of T (i.e., s ∈ L T ), and w 1 ztu = 1 for all tu ∈ E T , t, u = s. Notice that w 1 ∈ F , since the value of the LHS is k − 1 (|A| vertices from A plus the k − |A| − 1 edges in T ) and the value of the RHS is |A| + i∈VT (d T (i) − 1) = |A| + 2(k − |A|) − (k − |A| + 1) = k − 1. Assume w 1 xj = w 1 x l = 1 and let w 2 ∈ F be obtained from w 1 by setting w 2 z jl = 1 and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ T w 2 , implying λ z jl = 0.
• Claim 1c: λ zjl = 0 ∀j / ∈ A ∪ V T , l ∈L T . Consider the feasible solution w 1 = (x, z) ∈ F , where w 1 xa = 1 for all vertices a ∈ A, w 1 xj = 1, w 1 xt = 1 for all t ∈ V T \ B l , w 1 ztu = 1 for all tu ∈ E T , t, u ∈ V T \ B l , and the remaining vertices in the solution (if any) are chosen from V \ (A ∪ V T ). Recall that this is possible since |V | ≥ k + 1 + max t∈LT {|B t |}. Let w 2 ∈ F be obtained from w 1 by setting w 2 z jl = 1 and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ T w 2 , implying λ z jl = 0. Notice that if T is a star, the construction of w 1 is not feasible. As |B l | = 1, by setting w 1 xi = 1 for every i ∈ (V T ∪ A) \ B l we already have k vertices, and thus we cannot set w 1 xj = 1 for a vertex j / ∈ A ∪ V T . Even more, if i ∈L T is the center of the star, then for every w = (x, z) ∈ F , w zij must be equal to zero, for every j / ∈ V T , and thus F may not be a facet of P (G, k).
Claim 2: λ xi = λ xj ∀i, j ∈ V \ (L T ∪ A). Consider the feasible solution w 1 = (x, 0) ∈ F , where w 1 xa = 1 for all a ∈ A, w 1 xi = 1, w 1 xj = 0, and the number of vertices v ∈ V \L T such that x v = 1 is exactly k. Let w 2 ∈ F be obtained from w 1 by setting w 2 xi = 0, w 2 xj = 1 and keeping the remaining variables unchanged. This construction is feasible since |V | ≥ 2k + 2 − |A| − . Since both points belong to F , we have λ T w 1 = λ T w 2 , implying λ xi = λ xj .
is trivial, so we may assume that one of i, j belongs toL T and, w.l.o.g., we assume i ∈L T . Consider T as rooted in i. Let T 1 , . . . , T q be the subtrees obtained from T \ {i} as in Fig. 1a. As i ∈L T , we know q ≥ 2. Since |V | ≥ k + 1 + b(T ), for each 1 ≤ r ≤ q, |V | ≥ k + 1 + |T r |. This allows us to build a feasible solution w 1 = (x, z) ∈ F , in which w 1 xa = 1 for all a ∈ A, w 1 xi = 0, w 1 x d = 1 for all d ∈ q r=1,r =u T r , w 1 z de = 1 for all de ∈ q r=1,r =u E(T r ), where T u is an arbitrary subtree, and the remaining |T u | vertices are selected from V \ (A ∪ V T ) (see Fig. 1b). Let j r be the root of T r , for r = 1, . . . , q. Let w 2 ∈ F be obtained from w 1 by setting w 2 xv = 0 for some vertex v ∈ V \ (A ∪ V T ), w 2 xt = 1 for some leaf t ∈ L T ∩ T u . Since both points belong to F , we have λ T w 1 = λ T w 2 , implying λ xv = λ xt . Since i, v, u, and t are arbitrary, Now, let w 3 ∈ F be obtained from w 1 by setting w 3 zij r = 1 for r = 1, . . . , q, r = u, and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ T w 3 , implying Using the same construction as before but considering a different T l (l = u), we obtain λ xv = λ xi + 1≤r≤q,r =l λ zij r , thus concluding λ zij l = λ zij u for every j u , j l ∈ N T (i). Pivoting on each internal vertex in the path from ij to lm in T , we obtain λ zij = λ z lm and thus prove part (a).
Notice that (13) and (12), together with part (a) of the claim, imply (a) Rooted tree with root i and subtrees T 1 , T 2 and T 3 (b) A feasible solution w 1 . Vertices in gray are present in the solution, vertices in black are not. In this solution, w 1 xa = 1 for all a ∈ A, w 1 Claim 4: λ xa = λ xj + λ zil ∀a ∈ A, j ∈ V \ (A ∪L T ), il ∈ E T . By Claim 3 and Claim 2, we can choose a convenient edge il and vertex j, since the value λ z il is the same for all the edges il of T and the value λ xj is the same for all the vertices j of V \ (A ∪L T ). So, let l ∈ L T , and consider the feasible solution w 1 = (x, z) ∈ F , where w 1 xa = 1 for all vertices a ∈ A, w 1 xt = 1 for all t ∈ V T \ {l}. Let w 2 ∈ F be obtained from w 1 by setting w 2 xa = 0 for some a ∈ A, w 2 x l = 1, w 2 z il = 1 where il ∈ E T and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ T w 2 , implying λ xa = λ x l + λ z il .
With these claims, we now define α := λ zij for any ij ∈ E T . Note that, by Claim 3a, the choice of ij does not alter the value of α. We define β := λ xi for i ∈ V \ (A ∪L T ). Again, this is well defined by Claim 2. Claim 4 implies that λ xa = α + β for each a ∈ A, Claim 3b implies that λ xi = β − (|d T (i)| − 1)α for each i ∈L T , and Claim 1 implies that λ zij = 0 for every ij ∈ E \ E T . We conclude that λ is a linear combination of the coefficient vector π of the tree inequality (11) and the coefficient vector π of the model constraint (1b); i.e., λ = απ + βπ . Let π 0 and π 0 be the independent terms of (11) and (1b), respectively. The calculation in (3) can be replicated for this case, concluding that (λ, λ 0 ) is a linear combination of (π, π 0 ) and (π , π 0 ) and, therefore, (11) induces a facet of P (G, k).
Finally, if T is a star of center i, then the tree inequality (11) is dominated by (2), the generalized neighborhood inequality associated with the same set A and the vertex i, hence (11) does not induce a facet of P (G, k) in this case. The separation problem for the tree inequalities can be defined as follows.

Tree inequalities separation
Instance: A point w = (x, z) ∈ P LP (G, k) and an integer k. Question: Does w violate some tree inequality? Theorem 9. Tree inequalities separation is NP-complete.
Proof sketch. We go along the same lines as in the proof of Theorem 7, by showing that r-cardtree can be reduced to tree inequalities separation. Given an instance (H, r, p), where H = (V H , E H ) is an edge-weighted graph with non-negative edge weights w H : E H → [0, p], we construct a solution w = (x, z) in the following way: • Let k = r.
• Set w xi = k/n for every i ∈ V H .
It can be easily verified that 0 ≤ w zij ≤ k/n = w xi for every ij ∈ E. In this setting, it can be proved that In addition, any affirmative instance of Tree inequalities separation must have r = k − 1 edges, so it must be a tree, and hence |A| must be empty.
Since the separation problem for the tree inequalities is NP-complete, we propose a heuristic procedure for separating these inequalities (see Algorithm 3). The general idea is to build maximum-size trees that violate the inequality. If the tree has k + 1 vertices, due to the construction of the directed graph G H , it will violate the inequality. Otherwise, we check if we can add a set A such that the inequality associated with both A and T is violated.
Input: A point (x, z) ∈ P LP (G, k). Output: A set of violated tree inequalities (which may be empty) Construct the directed graph G H = (V H , E H ) in the following way: Using BFS build a tree T starting from v until it has k + 1 vertices or no more vertices can be added to T . if T has k + 1 vertices then The inequality associated with the tree T and A = ∅ is violated by x v . Add the inequality to S.
The inequality associated with the tree T and the vertex set A is violated by Add the inequality to S. end if end if end for Return S Algorithm 3: Heuristic for the separation of the tree inequalities

Disjoint Matching Inequalities
We now consider a more advanced structure defined by a matching and a tree.
Definition 5. Let M ⊆ E be a matching such that 0 < |M | < (k − 1)/2 and let T = (V T , E T ) ⊆ G be a tree on k − 2|M | + 1 vertices from V \ V (M ). A disjoint matching inequality associated with the tree T and the matching M is defined by This family of inequalities is valid and facet-defining under the conditions below. The proof is similar to that of Theorem 8 and is deferred to the appendix. It can be seen that the separation problem related to this family of inequalities is NP-complete. We omit the proof because it follows the same lines as that of Theorem 9. Moreover, one can provide a heuristic that addresses the separation problem using the ideas of Algorithm 3.

The Branch and Cut Algorithm
This section briefly describes the implementation of a branch and cut (B&C) algorithm based on the polyhedral results presented in Section 3. We employ the formulation MIP1 described in (1a)-(1f), strengthened with all neighborhood inequalities associated with vertices of degree at least k. Recall that the neighborhood inequality associated with a vertex i is a particular case of the generalized neighborhood inequality associated with the vertex i and the set A = ∅. Theorem 2 proves that it is facet-inducing if |N (i)| ≥ k, and hence the restriction on the degree used for the strengthening.
The B&C procedure dynamically adds cuts generated from generalized neighborhood inequalities (2), matching inequalities (7), forest inequalities (9), tree inequalities (11), and disjoint matching inequalities (14). To separate these inequalities, we implemented the algorithms presented in the corresponding sections. For the matching inequalities, we implemented both the exact algorithm described in the proof of Theorem 5 and a heuristic that constructs the maximum weight matching using a greedy algorithm.
To exploit the potential structure in the fractional solutions at each node in the B&C tree, we also implemented a standard primal heuristic based on solution rounding. We construct a feasible solution from each fractional one by selecting the vertices associated with the k highest x-variables in the fractional solution, and by setting the z-variables accordingly.
Since the x-variables are sufficient for defining a feasible solution, we branch on these variables only. When performing a branching step, we select a fractional x-variable and create two children vertices that force this variable to be 0 and 1, respectively.

Computational Experiments
The B&C procedure explained above was implemented under the ABACUS framework [17], using CPLEX 9.1 to solve the linear relaxations. The experiments were performed in an Intel Core TM 2 Duo CPU, running at 1.5 GHz with 1 Gb of RAM memory and a 1 hour time limit.
We divided the experiments in two phases. During the first phase, we focused on tuning the implementation of our B&C procedure by selecting the families of inequalities that achieved the best performance. During the second phase, we tested our branch and cut algorithm against CPLEX. We used CPLEX with default parameters in all cases to make the comparison fair.
For the computational study we selected instances of three different classes: random instances, wellknown benchmark instances and real-world graphs. To generate random instances of different sizes and edge densities, we employed the NetworkX package [14] to produce two types of random graphs: • Erdős-Rényi random graphs -ER(n,p): These is the simplest kind of random graph, where one fixes the number of vertices and its density. Starting with an empty graph of n vertices, we connect each dyad with probability p, using independent draws from a Bernoulli distribution with parameter p [11].
• Barabási-Albert random graphs -BA(n,m): Besides using ER random graphs, since the MESP frequently appears in social networks analysis, we also selected graphs with topological structures that are similar to those from the real world. Specifically, we generate scale-free graphs [2]. To construct these graphs, we start with a graph consisting of an isolated vertex, and successively add vertices one at a time until a total of n vertices are added. At each step, we connect a new vertex to m of the existing vertices using preferential attachment, i.e., the probability of selecting a given existing vertex is proportional to its current degree [5]. The result is a scale-free network that has a power-law degree distribution.
For the second group, we selected some instances from the 1993 DIMACS challenge [16]. Although these instances were submitted to the challenge with the goal of finding maximum cliques, the structure of both problems is similar enough to make the library very appropriate for our purposes. (Also Ref. 2 remark 5) Finally, we also included some instances representing Bilateral Investment Treaties (BITs) that were introduced in [21]. These networks are snapshots of the world taken at different times. Here, vertices represent countries and an edge is included whenever two countries signed a BIT by the date of the snapshot. We generated graphs for years 1990, 1995, 2000, 2005 and 2007 to study the evolution of BITs in the world.
A first conclusion that can be drawn from our experiments is that it pays off to add the neighborhood inequalities to the initial formulation. Strengthening the formulation in this way results in much tighter dual bounds. This was evidenced by a reduction of execution time ranging between 40% and 90%. In addition, the strengthening allowed us to solve larger instances because it prevented the computer from running out of memory in many cases because of the resulting pruning of the branch and bound tree.
We also explored the effectiveness of different combinations of families of valid inequalities. To benchmark our cut generation procedure, we implemented a simple branch and bound solution under ABACUS. Although all the families alone and most of the combinations presented a considerable improvement with respect to the plain branch and bound algorithm, the best results were achieved by adding one round of generalized neighborhood inequality cuts in each node of the B&B tree. Making use of additional families after having added cuts from this family proved ineffective because the extra cuts do not offset the time needed to identify the violated inequalities.
According to our experiments, the execution times were highly influenced by the following three factors: • The structure of the instance. The execution times were much higher for ER graphs than for BA graphs, keeping the number of vertices, the edge density and the value of k fixed.
• The edge density. As the edge density of the instance increases, so does the execution time. Bigger instances require more storage memory and handling them require more overhead. Nevertheless, this could be a limitation of our implementation.
• The relation between k and the clique number ω(G). (The clique number of a graph is the cardinality of its largest clique.) The case of k ≤ ω(G) can be solved efficiently, even for difficult instances, because in that case the problem consists in identifying the vertices that compose the clique of cardinality k. However, as k increases and goes over the clique number, the execution time increases.

Comparison with CPLEX
We tested our implementation by comparing its performance against the running times obtained by CPLEX 9.1 with default parameters. Table 1 shows both the running times (in seconds) for CPLEX and for our implementation. The table displays two groups of instances: the group on top contains easy instances for which k ≤ ω(G), while the second group contains the harder instances for which k > ω(G). In all cases we selected k to be close to the clique number, either below or above, to make the instances interesting but also not extremely hard. Note that both groups contain the same graphs, the only change is the value of k. In the cases when we could not achieve optimality within the time limit, we report the duality gap.
It can be observed in the table that CPLEX declared optimality only in a few cases. Our procedure could solve all but one instance to optimality in the easy group, but also had a hard time solving the hardest instances in the second group. Nevertheless, even for instances not solved to optimality, the gaps obtained by our procedure were orders of magnitude better than those of CPLEX.
To further compare the two solution procedures, Table 2 presents the optimal (or best when the time limit was reached) solution and the number of explored nodes in the B&B tree for the group of hard instances. The cuts allowed us to significantly prune the B&B tree, and consequently our method always returned solutions that dominated those of the standard procedure. While CPLEX explored thousands of nodes within the 1 hour time limit, our algorithm explored less than 5% of this amount. This provides evidence of the power of the generated cuts. On the negative side, a limiting factor of our implementation is the overhead imposed by the communication between ABACUS and CPLEX, whereas CPLEX does the B&C procedure internally. This overhead, plus the extra time needed to generate cuts, limited the number of nodes that could be explored within the time limit. For this reason although our method can find good solutions relatively fast, sometimes it cannot prove optimality (e.g., with instance cfat200-1). The overhead also explains why in some cases when instances are small (e.g., instances cfat200-1 and johnson8-2-4) CPLEX outperforms our method.
Going back to the original motivation of computing quasi-cliques to determine the cohesiveness of groups of countries with respect to their signature of Bilateral Investment Treaties, looking at the output in Table 2, we can see how in the last 20 years the world has become more cohesive because quasi-cliques are larger.  The speed of our procedure facilitates the construction of pareto-curves for the cardinality and density of quasi-cliques [21].

Concluding Remarks
We have explored the maximum edge subgraph problem with a polyhedral combinatorics perspective, presenting a polyhedral study of the integer programming formulation of [6]. We have introduced five families of valid inequalities for the associated polytope, which show that the polytope admits facets with a simple combinatorial structure. For each family of inequalities, we have determined the computational complexity of the associated separation problem and, based on this complexity, we have presented either an exact or a heuristic separation procedure. Based on these families of cuts, we have implemented a branch and cut algorithm for this problem. The objective of our computational study was to test the strength of our inequalities. Although we could not solve all the instances to optimality, we have obtained promising results, in most cases improving the results given by CPLEX, and obtaining much smaller gaps.
As mentioned in the introduction, the detection of quasi-cliques was an integral part of the analysis of the network of bilateral investment treaties that appeared in [21]. In that study, we detected highly cohesive groups of countries by looking at quasi-cliques, which was deemed more appropriate than having used regular cliques because for unexplained reasons it is possible that some countries in the same bloc do not sign treaties with each other. The machinery presented in the current article allowed us to perform the necessary computations. For example, the clique number of the network of treaties signed by 2005 is 14, while the solution of the MESP with k = 18 and the same network is a group of countries that misses only 5 out of 153 edges (3.3%) to become a clique. Raising k to 22 gives that the most cohesive group of countries misses 20 out of 231 edges (8.7%) to become a clique.
We conjecture that some of the families introduced in this work can be generalized. In particular, we believe that the tree inequalities and the disjoint matching inequalities can be generalized intro a single family. It would also be interesting to implement the branch and cut algorithm directly within CPLEX to perform a more direct comparison to a pure branch and bound algorithm.
We define α = λ zij for any ij ∈ B. Note that, by Claim 3, the choice of ij does not alter the definition of α. We define β = λ xi for any i ∈ V \ A. Again, by Claim 2, the definition of β does not depend on the choice of i. From the definition of α and β we obtain λ xa = α + β by Claim 4 and λ zjq = 0 for every jq ∈ E \ B by Claim 1. We conclude that λ is a linear combination of the coefficient vector of the matching inequality (7) and the coefficient vector of the model constraint (1b). A similar calculation as in the proof of Theorem 2 can be given to show that λ 0 can be written as the same combination of the independent terms of (7) and (1b), hence (7) induces a facet of P (G, k).
Claim 3: (a) λ zij = λ zlm ∀ij, lm ∈ E T , and (b) λ xi = λ xj − (d T (i) − 1)λ zlm ∀i ∈L T , j ∈ V \L T , lm ∈ E T . If |E T | = 1, statement (a) is trivial, so we may assume that one of i, j belongs tō L T and, w.l.o.g., we assume i ∈L T . Consider T as rooted in i. Let T 1 , . . . , T q be the subtrees obtained from T \ {i}, and let T u be an arbitrary subtree with 1 ≤ u ≤ q. As i ∈L T , we know q ≥ 2. Since |V | ≥ k + 1 + b(T ), for each 1 ≤ r ≤ q, |V | ≥ k + 1 + |T r |. This allows us to build a feasible solution w 1 = (x, z) ∈ F , in which w 1 xt = 1 for all t ∈ V (M ), w 1 zts = 1 for all ts ∈ M , w 1 xi = 0, w 1 x d = 1 for all d ∈ 1≤r≤q,r =u V (T r ), w 1 z de = 1 for all de ∈ 1≤r≤q,r =u E(T r ), and the remaining |T u | vertices are selected from V \ (V (M ) ∪ V T ). Let j r be the root of T r , for r = 1, . . . , q. Let w 2 ∈ F be obtained from w 1 by setting w 2 xv = 0 for some vertex v ∈ V \ (V (M ) ∪ V T ), w 2 xt = 1 for some leaf t ∈ L T ∩ T u . Since both points belong to F , we have λ T w 1 = λ T w 2 , implying λ xv = λ xt . Since i, v, u, and t are arbitrary, Now, let w 3 ∈ F be obtained from w 1 by setting w 3 xv = 0 for some vertex v ∈ V \ (V (M ) ∪ V T ), w 3 xi = 1, w 3 zij r = 1 for r = 1, . . . , q, r = u, and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ T w 3 , implying λ xv = λ xi + 1≤r≤q,r =u λ zij r . (A.2) Using the same construction as before but considering a different T l (l = u), we obtain λ xv = λ xi + 1≤r≤q,r =l λ zij r , thus concluding λ zij l = λ zij u for every j u , j l ∈ N T (i). Pivoting on each internal vertex in the path from ij to lm in T , we obtain λ zij = λ z lm and thus prove part (a).
Notice that (A.2) and (A.1), together with Claim 2 and part (a) of this claim, imply λ xi = λ xj − (d T (i) − 1)λ z lm , for i ∈L T , j ∈ V \L T , lm ∈ E T . Claim 4: λ zij = λ zlq ∀ij ∈ M, lq ∈ E T . Consider the feasible solution w 1 = (x, z) ∈ F , w 1 xi = 0 for the vertex i, w 1 xm = 1 for the remaining vertices m ∈ V (M ), w 1 zmt = 1 for mt ∈ M , m, t = i, w 1 xt = 1 for all t ∈ V T and w 1 ztu = 1 for all tu ∈ E T . Let w 2 ∈ F be obtained from w 1 by setting w 2 x l = 0 for some leaf l ∈ L T , w 2 z lq = 0 for the corresponding edge lq ∈ E T , w 2 xi = 1, w 2 zij = 1 for the corresponding edge ij ∈ M and keeping the remaining variables unchanged. Since both points belong to F , we have λ T w 1 = λ T w 2 , and together with Claims 2 and 3 this implies that λ zij = λ z lq .
Defining α := λ zij for ij ∈ E T and β := λ xi for i ∈ V \L T , we obtain that λ zij = α for every ij ∈ M using Claim 4, and that λ xi = β − (|d T (i)| − 1)α for every i ∈L T using Claim 3. Notice that λ z jl = 0 for every jl ∈ E \ (M ∪ E T ) by Claim 1. We conclude that λ is a linear combination of the coefficient vector of the matching inequality (14) and the coefficient vector of the model constraint (1b). A calculation similar to (3) shows that λ 0 can be written as the same combination of the independent terms of (14) and (1b), hence (14) induces a facet of P (G, k).