This page is dedicated to introducing a few of the underlying concepts around tropical surfaces, and our research work around the spectra of four types of these surfaces. The goal for this website is to share some of the code implementations in Python, and to look at these algorithms within the context of the research at hand. All research was completed by Federico Ardila, Isabel Perez, Jewell McMillon, and Chiemi Kato of San Francisco State University.
Farhad Babaee and June Huh (2017) introduced the tropical Laplacian of a tropical surface. From our research, we have constructed four families of tropical surfaces arising from root polytopes. From there, we computed their spectra, confirming that they have exactly one negative eigenvalue, as anticipated by Babaee and Huh.
A \(\color{green}{\text{polytope}}\) P is the convex hull of finitely many points \(V=\{v_1, \dots, v_n\}\) in \(\mathbb{R}^d\).
The \(\color{green}{\text{spectrum}}\) of a square matrix \(A\) is the set of its eigenvalues.
Let \(e_i\) be the \(i^{th}\) basis vector.
\(A_2\) is the convex hull of \(\{e_i-e_j : 1 \leq i \neq j \leq 3\}\)
\(A_2\) is balanced with \(c_v =1\).
The tropical Laplacian is given by
\[TL(P)_{v,w }=\begin{cases} 1 &\text{ if } v= w\\ -1 &\text{ if } v \sim w\\ 0 &\text{ otherwise. } \end{cases}\]
\(\color{blue}{\text{Definition:}}\)The \((n-1)\)-dimensional \(\color{green}{\text{type A root system polytope}}\) \(A_{n-1}\) is the convex hull of \[\{e_i-e_j : 1\leq i \neq j \leq n\}.\]
\(\color{blue}{\text{Proposition:}}\) The root polytope \(A_{n-1}\) is balanced. The \(\color{green}{\text{Tropical Laplacian}}\) of \(A_{n-1}\) is given by \[ TL(A_{n-1})_{ij,k\ell}= \begin{cases} n-2 & \text{ if } i=k \text{ and } j=\ell\\ -1 & \text{ if } i=k \text{ and } j\neq \ell \text{ or } j\neq k \text{ and } j=\ell\\ 0& \text{ otherwise. } \end{cases} \]
This is the polytope \(A_3\). (\(e_i-e_j\) which is denoted by \(ij\))
The \(\color{green}{\text{spectrum}}\) of \(TL(A_{n-1})\) is
\(2-n,\;\underbrace{0, \cdots, 0}_{n-1},\; \underbrace{2, \cdots, 2}_{n-1},\; \underbrace{n ,\dots, n}_{n^2-3n+1}.\)
In particular, \(TL(A_{n-1})\) has exactly one negative eigenvalue.
The following code demonstrates that our theorem is correct. For inputted n dimension values of 3 and 5, we get the correct eigenvalues and multiplicities.
First we will install the following modules for later use.
import itertools as it
import numpy as np
np.set_printoptions(threshold=np.inf)
np.set_printoptions(linewidth=2000) # default = 75
import math
from fractions import Fraction
from numpy.linalg import matrix_rank
Next we will set the n dimension to 3 here. The other example will set n to be 5, but n can be any positive number.
n = 3
A = list(range(1,n+1))
s = list(it.permutations(A,2))
print('List of vertices : ',s)
## ('List of vertices : ', [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)])
We first build a matrix of nxn dimensions. Then we fill out the diagonal entries with the balance value, which is n-2 for any \(A_n\) shape.
M = np.zeros((len(s),len(s)))
for i,item in enumerate(s):
# Here we will establish an edge between any two points who meet the following condition (as described in above proposition)
for j,m in enumerate(s):
if (m != item) and (m[0] == item[0] or m[1] == item[1]):
M[i,j] = -1
elif (i==j):
M[i,i] = (len(A)-2)
print(M)
## [[ 1. -1. 0. 0. 0. -1.]
## [-1. 1. 0. -1. 0. 0.]
## [ 0. 0. 1. -1. -1. 0.]
## [ 0. -1. -1. 1. 0. 0.]
## [ 0. 0. -1. 0. 1. -1.]
## [-1. 0. 0. 0. -1. 1.]]
M is the Tropical Laplacian matrix. Next we will compute the eigenvalues and multiplicities of of the Tropical Laplacian, using Python’s NumPy module (my fave).
eigVal, eigVect = np.linalg.eig(M)
for i,eig in enumerate(eigVal):
eigVal[i] = round(eig,4)
eigVal = eigVal.tolist()
print("Tropical Laplacian Eigenvalues of A", n, ":")
## ('Tropical Laplacian Eigenvalues of A', 3, ':')
for item in sorted(set(eigVal)):
print((item, eigVal.count(item)))
## (-1.0, 1)
## (-0.0, 2)
## (2.0, 2)
## (3.0, 1)
By looking at these eigenvalues above, we can see that our theorem described above is true for the tropical laplacian of root polytope \(A_3\). As we can see, there are four eigenvalues. There are exactly \(n-1=3-1=2\) eigenvalues of 0 and 2, while there are \(n^2-3n+1=3^2-3*3+1=1\) eigenvalue \(n=3\) and exactly 1 negative eigenvalue of \(2-n=-1\).
Let’s take a look at the Tropical Laplacians of dimensions 5.
n = 5
A = list(range(1,n+1))
s = list(it.permutations(A,2))
print('List of vertices : ',s)
## ('List of vertices : ', [(1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4)])
M = np.zeros((len(s),len(s)))
for i,item in enumerate(s):
# Here we will establish an edge between any two points who meet the following condition (as described in above proposition)
for j,m in enumerate(s):
if (m != item) and (m[0] == item[0] or m[1] == item[1]):
M[i,j] = -1
elif (i==j):
M[i,i] = (len(A)-2)
print(M)
## [[ 3. -1. -1. -1. 0. 0. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0.]
## [-1. 3. -1. -1. 0. -1. 0. 0. 0. 0. 0. 0. 0. 0. -1. 0. 0. 0. -1. 0.]
## [-1. -1. 3. -1. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. 0. 0. 0. 0. 0. -1.]
## [-1. -1. -1. 3. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. 0.]
## [ 0. 0. 0. 0. 3. -1. -1. -1. -1. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0.]
## [ 0. -1. 0. 0. -1. 3. -1. -1. 0. 0. 0. 0. 0. 0. -1. 0. 0. 0. -1. 0.]
## [ 0. 0. -1. 0. -1. -1. 3. -1. 0. 0. -1. 0. 0. 0. 0. 0. 0. 0. 0. -1.]
## [ 0. 0. 0. -1. -1. -1. -1. 3. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. 0.]
## [ 0. 0. 0. 0. -1. 0. 0. 0. 3. -1. -1. -1. -1. 0. 0. 0. -1. 0. 0. 0.]
## [-1. 0. 0. 0. 0. 0. 0. 0. -1. 3. -1. -1. 0. -1. 0. 0. 0. -1. 0. 0.]
## [ 0. 0. -1. 0. 0. 0. -1. 0. -1. -1. 3. -1. 0. 0. 0. 0. 0. 0. 0. -1.]
## [ 0. 0. 0. -1. 0. 0. 0. -1. -1. -1. -1. 3. 0. 0. 0. -1. 0. 0. 0. 0.]
## [ 0. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. 3. -1. -1. -1. -1. 0. 0. 0.]
## [-1. 0. 0. 0. 0. 0. 0. 0. 0. -1. 0. 0. -1. 3. -1. -1. 0. -1. 0. 0.]
## [ 0. -1. 0. 0. 0. -1. 0. 0. 0. 0. 0. 0. -1. -1. 3. -1. 0. 0. -1. 0.]
## [ 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. -1. -1. -1. -1. 3. 0. 0. 0. 0.]
## [ 0. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. 3. -1. -1. -1.]
## [-1. 0. 0. 0. 0. 0. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. -1. 3. -1. -1.]
## [ 0. -1. 0. 0. 0. -1. 0. 0. 0. 0. 0. 0. 0. 0. -1. 0. -1. -1. 3. -1.]
## [ 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. -1. 0. 0. 0. 0. 0. -1. -1. -1. 3.]]
eigVal, eigVect = np.linalg.eig(M)
eigVal = eigVal.tolist()
for i,eig in enumerate(eigVal):
eigVal[i] = round(eigVal[i].real,4)
eigVal[i] = eigVal[i].real
print("Tropical Laplacian Eigenvalues of A", n, ":")
## ('Tropical Laplacian Eigenvalues of A', 5, ':')
for item in sorted(set(eigVal)):
print((item, eigVal.count(item)))
## (-3.0, 1)
## (-0.0, 4)
## (2.0, 4)
## (5.0, 11)
Again, we get four eigenvalues for the Tropical Laplacian of dimension n=5. Just like the previous example, the multiplicities of each of these eigenvalues match those listed in the theorem above. Specifically, there are \(n-1=5-1=4\) eigenvalues of 0 and 2, and \(n^2-3n+1=5^2-3*5+1=11\) eigenvalues of 5 and exactly 1 negative eigenvalue of \(2-n=-3\).
Let \(\stackrel{\leftrightarrow}{K_{n}}\) be a complete directed graph on \(n\) vertices with edges corresponding to the vertices of \(A_{n-1}\). In particular, the edge that has vertex \(i\) as a source and a vertex \(j\) as a sink corresponds to the vertex \(e_i -e_j\).
The graph of \(\stackrel{\leftrightarrow}{K_{3}}\)
Eigenvectors of \(TL(A_{n-1})_{ij,k\ell}\) can be represented by weighted subgraphs of \(\stackrel{\leftrightarrow}{K_{n}}\).