# Prove that Dense Subgraph is NP Complete by Generalisation

** Prerequisites:** NP-Completeness, NP Class, Dense Subgraph

** Problem:** Given graph

**G = (V, E)**and two integers

**a**and

**b**. A set of

**a**number of vertices of

**G**such that there are at least

**b**edges between them is known as the Dense Subgraph of graph

**G**.

** Explanation:** To prove the Dense Subgraph problem as NP-completeness by generalization, we are going to prove that it is a generalization of the known NP-complete problem. In this case, we are going to take

**Clique**as the known problem which is already known to be NP-complete, and explained in Proof of Clique Is an NP-Complete and we need to show the reduction from

**Clique → Dense Subgraph.**

Clique is a subset of vertices of an undirected graph such that every two distinct vertices in the clique are adjacent.

__Proof:__

**1. Input Conversion:** We need to convert the input from Clique to the input of the Dense Subgraph.

Clique Input: An undirected graphG(V, E)and integerk.Dense Subgraph Input: An undirected graphG'(V, E)and two integersaandb.

We are going to transform the input from Clique for Dense Subgraph such that

- G’ = G(V, E)
- a = k
- b = (k * (k – 1))/2

This conversion is going to take* ***O(1)** time so it’s polynomial in nature.

**2. Output Conversion:** We need to convert the solution from Dense Graph to the solution for the Clique problem.

Solution of Dense Graph will result in a set a which would be a Clique of size **k*** *as **k = a**. So direct output from Dense Graph can be used by Clique. Since no conversion is required so **it’s again polynomial in nature**.

**3. Correctness:** We have restricted the range of input value **b** such that **(k¦2)** with value as **(k * (k – 1))/2**.

Now we are looking for a subgraph having **k** vertices and are connected by at least **(k * (k – 1))/2** edges.

- Since in a complete graph,
**n**vertices can have at most**(n * (n – 1))/2**edges between them so we can say that we need to find a subgraph of**k**vertices that have exactly**(**edges which means output graph should have an edge between each pair of vertices which is nothing but Clique of**k * (k – 1))/2****k**vertices. - Similarly, a Clique of
**k****G(V, E)**must have**(k * (k – 1))/2****G(V, E)**

So, this means **Dense-Subgraph has a solution↔ Clique has a solution.**

The complete **reduction takes polynomial time** and Clique is NP complete so Dense Subgraph is also NP complete.

__Conclusion:__

Hence we can conclude that

Dense-Subgraph is NP Complete

For more details, please refer:

Design and Analysis of Algorithms.