```
In [1]:
```import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

In discrete mathematics a Graph is a set of *vertices* or *nodes* that are connected to each other by *edges* or *lines*. If those *edges* don't have directionality, the graph is said to be *undirected*. Graphs are used to model social and communications networks (Twitter, Facebook, Internet) as well as natural systems such as molecules.

A Complete Graph, $K_n$ on $n$ nodes has an edge that connects each node to every other node.

Here is $K_5$:

```
In [2]:
```import networkx as nx
K_5=nx.complete_graph(5)
nx.draw(K_5)

```
```

The Laplacian Matrix is a matrix that is extremely important in graph theory and numerical analysis. It is defined as $L=D-A$. Where $D$ is the degree matrix and $A$ is the adjecency matrix. For the purpose of this problem you don't need to understand the details of these matrices, although their definitions are relatively simple.

The degree matrix for $K_n$ is an $n \times n$ diagonal matrix with the value $n-1$ along the diagonal and zeros everywhere else. Write a function to compute the degree matrix for $K_n$ using NumPy.

```
In [18]:
```def complete_deg(n):
k_n = np.identity((n)) * (n-1)
answer = k_n.astype(dtype=np.int)
return answer
print(complete_deg(4))

```
```

```
In [4]:
```D = complete_deg(5)
assert D.shape==(5,5)
assert D.dtype==np.dtype(int)
assert np.all(D.diagonal()==4*np.ones(5))
assert np.all(D-np.diag(D.diagonal())==np.zeros((5,5),dtype=int))

```
In [19]:
```def complete_adj(n):
ones = np.ones((n,n))
diag = np.identity(n)
adj = ones-diag
adj = adj.astype(dtype=np.int)
return adj
print complete_adj(4)

```
```

```
In [6]:
```A = complete_adj(5)
assert A.shape==(5,5)
assert A.dtype==np.dtype(int)
assert np.all(A+np.eye(5,dtype=int)==np.ones((5,5),dtype=int))

*spectrum* of the Laplacian *L* of $K_n$. What patterns do you notice as $n$ changes? Create a *conjecture* about the general Laplace *spectrum* of $K_n$.

```
In [26]:
```print(np.linalg.eigvals(complete_deg(4)))
print(np.linalg.eigvals(complete_adj(4)))
L = (np.linalg.eigvals(complete_deg(5) - complete_adj(5)))
J = L.astype(dtype=np.int)
print L
print J

```
```

The eigenvalues of the Laplacian L of Kn are 0 (multiplicity 1) and n (multiplicity n-1).