3

Let $A$ be a $3 \times 3$ matrix whose elements are only $0$ and $1$. Let $|\lambda_A^{\max}|$ be the spectral radius, i.e., the maximum absolute value of eigenvalues of $A$.

How can I choose the matrix $A$ such that $\log |\lambda_A^{\max}|$ has the minimal positive value?

Can someone give me a hint? Thank you!

3 Answers3

4

(The other answer here has already addressed the OP's problem. We consider the general case below only for future reference.)

For every $n\ge2$, denote by $\mathcal B_n$ the set of all nonzero $n\times n$ binary matrices. It is an easy consequence of Perron-Frobenius theorem that $\rho(A)\ge1$ if $A\in\mathcal B_n$ is irreducible. Let \begin{align*} r_n &= \min_{A\in\mathcal B_n,\ \rho(A)>1}\log\rho(A),\tag{1}\\ A_n &= \arg\min_{A\in\mathcal B_n,\ \rho(A)>1}\log\rho(A).\tag{2} \end{align*} Note that if $A$ is an irreducible nonnegative matrix and we increase the values of some of its entries, the spectral radius of the resulting matrix must strictly increase (see Theorem about positive matrices for proofs). Furthermore, if $A$ is also binary, it must contain a full-cycle graph, i.e. $A\ge P$ for some irreducible permutation matrix $P$. It follows that if $A_n$ is the minimiser in $(2)$, there are only two possibilities:

  1. $A_n$ is reducible and hence $r_n=r_m$ for some $m<n$.
  2. $A_n$ is obtained by flipping a zero entry of an irreducible permutation matrix to $1$.

Consequently, if we define

$\rho_n:=$ the minimum possible spectral radius of an $n\times n$ matrix $A$ obtained by flipping a zero entry of an irreducible permutation matrix to $1$,

then $r_n=\min(\rho_2,\rho_3,\ldots,\rho_n)$. We now prove that $\{\rho_n\}$ is actually a decreasing sequence and hence $r_n=\rho_n$.

Proof.

Let $A$ be a matrix obtained by flipping a zero entry of an irreducible permutation matrix $P$ to $1$, i.e. $A=P+E_{i_0j_0}$ for some $E_{i_0j_0}$ such that $j_0\ne\sigma(i_0)$, where $P$ corresponds to the full cycle $\sigma$. Recall that $\rho(A)>\rho(P)=1$.

Let $v$ be a Perron vector for $A$. By relabelling the rows and columns of $A$, we may assume without loss of generality that $0<v_1\le v_2\le\cdots\le v_n$. Since $\rho(A)v=Av=Pv+E_{i_0j_0}v$, we have \begin{align*} \rho(A)v_i &= v_{\sigma(i)}&\text{ if } i\ne i_0,\tag{3}\\ \rho(A)v_{i_0} &= v_{\sigma(i_0)}+v_{j_0}.\tag{4} \end{align*} It follows that $i_0=n$, otherwise by putting $i=n$ in $(3)$, we get $\rho(A)v_n = v_{\sigma(n)}\le v_n$, which is a contradiction because $\rho(A)>1$. Thus we may rewrite $(3)$ and $(4)$ as \begin{align*} \rho(A)v_i &= v_{\sigma(i)}&\text{ if } i<n,\tag{5}\\ \rho(A)v_n &= v_{\sigma(n)}+v_{j_0}.\tag{6} \end{align*} Thus it follows from $(5)$ that $\sigma(n-1)=n$, otherwise we would have $\rho(A)v_{n-1}=v_k$ for some $k<n$, which is again a contradiction to $\rho(A)>1$. So, inductively, we have $\sigma(i)=i+1$ for $i=n-1,\,n-2,\ldots$ down to $1$ and in turn, $\sigma(n)$ must be equal to $1$. In other words, \begin{align*} \rho(A)v_i &= v_{i+1}&\text{ if } i<n,\tag{7}\\ \rho(A)v_n &= v_1+v_{j_0}.\tag{8} \end{align*} Hence by $(7)$, $v_i=\rho(A)^{i-1}v_1$ for every $i<n$, and by $(8)$, $\rho(A)^n = 1 + \rho(A)^{j_0}$ where $j_0<n$. It follows that $\rho(A)$ is a root to the polynomial equation $$ f_{j_0}(x) := x^n - x^{j_0-1} - 1 = 0\tag{9} $$ on the domain $x>1$. Since $f_{j_0}(x)$ is strictly increasing in $x$ but strictly decreasing in $j_0$, the root of $f_{j_0}$ is unique and it is minimised when $j_0$ is minimised, i.e. when $j_0=2$.

So, we conclude that $\rho_n$ is the positive root of $g_n(x):=x^n-x-1=0$ on $x>1$. As $g_n(x)$ is strictly increasing in both $x$ and $n$, we see that $\{\rho_n\}$ is a strictly decreasing sequence. Hence $r_n=\rho_n$.

In short, for every $n\ge2$, the global minimiser $A_n$ of $r_n$, up to permutation similarity, is uniquely given by the companion matrix of $x^n-x-1$, i.e. $$ A_n=\pmatrix{0&1\\ \vdots&&\ddots\\ \vdots&&&\ddots\\ 0&&&&1\\ 1&\color{red}{1}&0&\cdots&0}, $$ and $\rho(A_n)$ is the unique positive root of $x^n-x-1=0$ on $x>1$.

user1551
  • 149,263
3

I ran the following script on Matlab. Some strange workarounds were necessary because my version is out of date.

Lmin = 3;
imin = 0;
Amin = zeros(3);

for i = 0:511
    b = dec2bin(i,9) == '1';
    A = reshape(b, [3,3]) + zeros(3);
    L = eigs(A,1);
    if L > 1.01 && L < Lmin
        Amin = A;
        Lmin = L;
        imin = i;
    end
end

The minimum is attained with $$ A = \pmatrix{0&0&1\\1&0&1\\0&1&0}, \qquad \lambda_{max} \approx 1.3247 $$ I'm exploiting the fact that non-negative matrices always have a non-negative eigenvalue which coincides with the spectral radius. We get the same even if we have L = max(abs(eig(A))).

Ben Grossmann
  • 234,171
  • 12
  • 184
  • 355
3
import numpy as np
import itertools as it

# generate all binary words of length 9
allwords = list(it.product(*([(0,1)] * 9)))

# convert binary words to NumPy arrays
allarrays = map(np.asarray, allwords)

# convert 1D arrays to 2D arrays
allmatrices = []
for a in allarrays:
    allmatrices.append(a.reshape(3,3))

# compute spectral radii
results = []
for m in allmatrices:
    spectrum = np.linalg.eigvals(m)     # spectrum of matrix
    spectrad = max(abs(spectrum))       # spectral radius
    results.append((m, spectrad))

# filter pairs with spectral radius greater than 1
adresults = filter(lambda (m,s) : s>1.000001, results)

# print admissible results
print sorted(adresults, key=lambda t: t[1])

produces the following list:

[(array([[0, 1, 1],
   [0, 0, 1],
   [1, 0, 0]]), 1.3247179572447454), (array([[0, 1, 1],
   [1, 0, 0],
   [0, 1, 0]]), 1.3247179572447454), (array([[0, 0, 1],
   [1, 0, 1],
   [0, 1, 0]]), 1.3247179572447461), (array([[0, 1, 0],
   [0, 0, 1],
   [1, 1, 0]]), 1.3247179572447461), (array([[0, 0, 1],
   [1, 0, 0],
   [1, 1, 0]]), 1.3247179572447463), (array([[0, 1, 0],
   [1, 0, 1],
   [1, 0, 0]]), 1.3247179572447469), (array([[0, 0, 1],
   [0, 0, 1],
   [1, 1, 0]]), 1.4142135623730951), (array([[0, 1, 0],
   [1, 0, 1],
   [0, 1, 0]]), 1.4142135623730951), (array([[0, 1, 1],
   [1, 0, 0],
   [1, 0, 0]]), 1.4142135623730951), (array([[1, 0, 1],
   [1, 0, 0],
   [0, 1, 0]]), 1.4655712318767682), (array([[1, 1, 0],
   [0, 0, 1],
   [1, 0, 0]]), 1.4655712318767682), (array([[0, 0, 1],
   [1, 0, 0],
   [0, 1, 1]]), 1.4655712318767684), (array([[0, 0, 1],
   [1, 1, 0],
   [0, 1, 0]]), 1.4655712318767684), (array([[0, 1, 0],
   [0, 0, 1],
   [1, 0, 1]]), 1.4655712318767684), (array([[0, 1, 0],
   [0, 1, 1],
   [1, 0, 0]]), 1.4655712318767684), (array([[0, 1, 0],
   [1, 0, 1],
   [1, 1, 0]]), 1.6180339887498942), (array([[1, 0, 1],
   [1, 0, 1],
   [0, 1, 0]]), 1.6180339887498942), (array([[1, 1, 0],
   [0, 0, 1],
   [1, 1, 0]]), 1.6180339887498942), (array([[0, 0, 1],
   [1, 0, 1],
   [1, 1, 0]]), 1.6180339887498945), (array([[0, 0, 1],
   [1, 1, 0],
   [1, 1, 0]]), 1.6180339887498945), (array([[0, 1, 0],
   [1, 0, 1],
   [1, 0, 1]]), 1.6180339887498945), (array([[0, 1, 1],
   [0, 0, 1],
   [1, 1, 0]]), 1.6180339887498947), (array([[0, 1, 1],
   [1, 0, 1],
   [0, 1, 0]]), 1.6180339887498947), (array([[0, 0, 0],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[0, 0, 0],
   [0, 0, 1],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 0, 0],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[0, 0, 0],
   [0, 1, 1],
   [1, 1, 0]]), 1.6180339887498949), (array([[0, 0, 0],
   [1, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[0, 0, 0],
   [1, 0, 1],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 0, 0],
   [1, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[0, 0, 0],
   [1, 1, 1],
   [1, 1, 0]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 0, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 0, 0],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 0, 1],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 1, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 1, 0],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[0, 0, 1],
   [0, 1, 1],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [1, 0, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [1, 0, 1],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [1, 1, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 0, 1],
   [1, 1, 1],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 1, 0],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[0, 1, 0],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [0, 0, 0]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [0, 0, 1]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [0, 1, 0]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [0, 1, 1]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [1, 1, 0]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 0],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 1],
   [0, 0, 0]]), 1.6180339887498949), (array([[0, 1, 0],
   [1, 1, 1],
   [0, 0, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 0, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 0, 0],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 1, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 1, 0],
   [1, 1, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[0, 1, 1],
   [1, 1, 0],
   [0, 0, 0]]), 1.6180339887498949), (array([[0, 1, 1],
   [1, 1, 0],
   [0, 0, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [1, 1, 1],
   [0, 0, 0]]), 1.6180339887498949), (array([[0, 1, 1],
   [1, 1, 1],
   [0, 0, 1]]), 1.6180339887498949), (array([[1, 0, 0],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[1, 0, 0],
   [0, 0, 1],
   [1, 1, 1]]), 1.6180339887498949), (array([[1, 0, 0],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[1, 0, 0],
   [0, 1, 1],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 0, 0],
   [1, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[1, 0, 0],
   [1, 0, 1],
   [1, 1, 1]]), 1.6180339887498949), (array([[1, 0, 0],
   [1, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[1, 0, 0],
   [1, 1, 1],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 0, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 0, 0],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 0, 1],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 1, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 1, 0],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [0, 1, 1],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [1, 0, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [1, 0, 1],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [1, 1, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 0, 1],
   [1, 1, 1],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[1, 1, 0],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [0, 0, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [0, 0, 1]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [0, 1, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [0, 1, 1]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [1, 0, 1]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 0],
   [1, 1, 1]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 1],
   [0, 0, 0]]), 1.6180339887498949), (array([[1, 1, 0],
   [1, 0, 1],
   [0, 0, 1]]), 1.6180339887498949), (array([[1, 1, 1],
   [0, 0, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [0, 0, 0],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [0, 0, 1],
   [0, 1, 1]]), 1.6180339887498949), (array([[1, 1, 1],
   [0, 1, 0],
   [1, 0, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [0, 1, 0],
   [1, 1, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [0, 1, 1],
   [0, 1, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [1, 0, 0],
   [0, 0, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [1, 0, 0],
   [0, 0, 1]]), 1.6180339887498949), (array([[1, 1, 1],
   [1, 0, 1],
   [0, 0, 0]]), 1.6180339887498949), (array([[1, 1, 1],
   [1, 0, 1],
   [0, 0, 1]]), 1.6180339887498949), (array([[0, 1, 1],
   [0, 1, 1],
   [1, 0, 0]]), 1.6180339887498951), (array([[0, 1, 1],
   [1, 0, 0],
   [0, 1, 1]]), 1.6180339887498951), (array([[0, 1, 1],
   [1, 0, 0],
   [1, 1, 0]]), 1.6180339887498951), (array([[0, 1, 1],
   [1, 0, 1],
   [1, 0, 0]]), 1.6180339887498951), (array([[1, 0, 1],
   [1, 0, 0],
   [0, 1, 1]]), 1.7548776662466905), (array([[1, 1, 0],
   [0, 1, 1],
   [1, 0, 0]]), 1.7548776662466905), (array([[0, 0, 1],
   [1, 1, 0],
   [0, 1, 1]]), 1.7548776662466923), (array([[0, 1, 0],
   [0, 1, 1],
   [1, 0, 1]]), 1.7548776662466923), (array([[1, 0, 1],
   [1, 1, 0],
   [0, 1, 0]]), 1.7548776662466952), (array([[1, 1, 0],
   [0, 0, 1],
   [1, 0, 1]]), 1.7548776662466952), (array([[0, 0, 1],
   [0, 1, 1],
   [1, 1, 0]]), 1.8019377358048385), (array([[0, 1, 0],
   [1, 0, 1],
   [0, 1, 1]]), 1.8019377358048385), (array([[0, 1, 1],
   [1, 0, 0],
   [1, 0, 1]]), 1.8019377358048387), (array([[1, 0, 1],
   [0, 0, 1],
   [1, 1, 0]]), 1.8019377358048387), (array([[1, 1, 0],
   [1, 0, 1],
   [0, 1, 0]]), 1.8019377358048387), (array([[0, 1, 1],
   [1, 1, 0],
   [1, 0, 0]]), 1.8019377358048401), (array([[1, 0, 1],
   [1, 0, 0],
   [1, 1, 0]]), 1.8392867552141596), (array([[0, 1, 1],
   [0, 0, 1],
   [1, 0, 1]]), 1.8392867552141601), (array([[0, 1, 1],
   [1, 1, 0],
   [0, 1, 0]]), 1.8392867552141601), (array([[0, 0, 1],
   [1, 1, 1],
   [0, 1, 0]]), 1.839286755214161), (array([[0, 1, 0],
   [0, 0, 1],
   [1, 1, 1]]), 1.839286755214161), (array([[1, 1, 0],
   [1, 0, 1],
   [1, 0, 0]]), 1.839286755214161), (array([[1, 1, 1],
   [0, 0, 1],
   [1, 0, 0]]), 1.839286755214161), (array([[1, 1, 1],
   [1, 0, 0],
   [0, 1, 0]]), 1.839286755214161), (array([[0, 0, 1],
   [1, 0, 1],
   [0, 1, 1]]), 1.8392867552141612), (array([[0, 1, 0],
   [0, 1, 1],
   [1, 1, 0]]), 1.8392867552141612), (array([[0, 0, 1],
   [1, 0, 0],
   [1, 1, 1]]), 1.8392867552141614), (array([[0, 1, 0],
   [1, 1, 1],
   [1, 0, 0]]), 1.8392867552141614), (array([[0, 1, 1],
   [1, 1, 1],
   [1, 0, 0]]), 1.9999999999999982), (array([[0, 0, 1],
   [1, 1, 0],
   [1, 1, 1]]), 1.9999999999999987), (array([[0, 1, 1],
   [0, 1, 1],
   [1, 0, 1]]), 1.9999999999999993), (array([[0, 1, 1],
   [1, 1, 0],
   [0, 1, 1]]), 1.9999999999999993), (array([[1, 1, 0],
   [1, 0, 1],
   [1, 1, 0]]), 1.9999999999999993), (array([[1, 1, 1],
   [0, 0, 1],
   [1, 1, 0]]), 1.9999999999999993), (array([[1, 1, 1],
   [1, 0, 1],
   [0, 1, 0]]), 1.9999999999999993), (array([[0, 1, 0],
   [1, 1, 1],
   [1, 0, 1]]), 1.9999999999999996), (array([[0, 1, 1],
   [1, 0, 1],
   [1, 1, 0]]), 1.9999999999999996), (array([[0, 1, 1],
   [1, 1, 0],
   [1, 1, 0]]), 1.9999999999999996), (array([[1, 0, 1],
   [1, 0, 1],
   [1, 1, 0]]), 1.9999999999999996), (array([[1, 0, 1],
   [1, 1, 0],
   [1, 1, 0]]), 1.9999999999999996), (array([[1, 0, 1],
   [1, 1, 1],
   [0, 1, 0]]), 1.9999999999999996), (array([[1, 1, 0],
   [0, 0, 1],
   [1, 1, 1]]), 1.9999999999999996), (array([[1, 1, 0],
   [1, 0, 1],
   [1, 0, 1]]), 1.9999999999999996), (array([[0, 0, 1],
   [0, 0, 1],
   [1, 1, 1]]), 1.9999999999999998), (array([[0, 1, 0],
   [1, 1, 1],
   [0, 1, 0]]), 1.9999999999999998), (array([[0, 1, 1],
   [1, 0, 1],
   [1, 0, 1]]), 1.9999999999999998), (array([[0, 1, 1],
   [1, 1, 0],
   [1, 0, 1]]), 1.9999999999999998), (array([[0, 0, 0],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[0, 0, 0],
   [0, 1, 1],
   [1, 1, 1]]), 2.0), (array([[0, 0, 0],
   [1, 1, 1],
   [0, 1, 1]]), 2.0), (array([[0, 0, 0],
   [1, 1, 1],
   [1, 1, 1]]), 2.0), (array([[0, 0, 1],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[0, 1, 0],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[0, 1, 1],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[0, 1, 1],
   [0, 1, 1],
   [1, 1, 0]]), 2.0), (array([[0, 1, 1],
   [1, 0, 0],
   [1, 1, 1]]), 2.0), (array([[0, 1, 1],
   [1, 0, 1],
   [0, 1, 1]]), 2.0), (array([[1, 0, 0],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[1, 0, 0],
   [0, 1, 1],
   [1, 1, 1]]), 2.0), (array([[1, 0, 0],
   [1, 1, 1],
   [0, 1, 1]]), 2.0), (array([[1, 0, 0],
   [1, 1, 1],
   [1, 1, 1]]), 2.0), (array([[1, 0, 1],
   [0, 0, 0],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [0, 0, 0],
   [1, 1, 1]]), 2.0), (array([[1, 0, 1],
   [0, 0, 1],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [0, 1, 0],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [0, 1, 0],
   [1, 1, 1]]), 2.0), (array([[1, 0, 1],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[1, 0, 1],
   [0, 1, 1],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [0, 1, 1],
   [1, 1, 0]]), 2.0), (array([[1, 0, 1],
   [1, 0, 0],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [1, 0, 1],
   [0, 1, 1]]), 2.0), (array([[1, 0, 1],
   [1, 0, 1],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [1, 1, 0],
   [1, 0, 1]]), 2.0), (array([[1, 0, 1],
   [1, 1, 1],
   [1, 0, 1]]), 2.0), (array([[1, 1, 0],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[1, 1, 0],
   [0, 1, 1],
   [1, 1, 0]]), 2.0), (array([[1, 1, 0],
   [1, 0, 1],
   [0, 1, 1]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [0, 0, 0]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [0, 0, 1]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [0, 1, 0]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [0, 1, 1]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [1, 0, 0]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [1, 0, 1]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [1, 1, 0]]), 2.0), (array([[1, 1, 0],
   [1, 1, 0],
   [1, 1, 1]]), 2.0), (array([[1, 1, 0],
   [1, 1, 1],
   [0, 0, 0]]), 2.0), (array([[1, 1, 0],
   [1, 1, 1],
   [0, 0, 1]]), 2.0), (array([[1, 1, 1],
   [0, 0, 0],
   [1, 0, 1]]), 2.0), (array([[1, 1, 1],
   [0, 0, 0],
   [1, 1, 1]]), 2.0), (array([[1, 1, 1],
   [0, 1, 0],
   [1, 0, 1]]), 2.0), (array([[1, 1, 1],
   [0, 1, 0],
   [1, 1, 1]]), 2.0), (array([[1, 1, 1],
   [0, 1, 1],
   [0, 1, 1]]), 2.0), (array([[1, 1, 1],
   [1, 0, 0],
   [1, 0, 0]]), 2.0), (array([[1, 1, 1],
   [1, 1, 0],
   [0, 0, 0]]), 2.0), (array([[1, 1, 1],
   [1, 1, 0],
   [0, 0, 1]]), 2.0), (array([[1, 1, 1],
   [1, 1, 1],
   [0, 0, 0]]), 2.0), (array([[1, 1, 1],
   [1, 1, 1],
   [0, 0, 1]]), 2.0), (array([[0, 0, 1],
   [1, 1, 1],
   [1, 1, 0]]), 2.0000000000000004), (array([[1, 0, 1],
   [1, 1, 0],
   [0, 1, 1]]), 2.0000000000000004), (array([[1, 1, 0],
   [0, 1, 1],
   [1, 0, 1]]), 2.0000000000000004), (array([[1, 1, 1],
   [0, 1, 1],
   [1, 0, 0]]), 2.0000000000000009), (array([[1, 1, 1],
   [1, 0, 0],
   [0, 1, 1]]), 2.0000000000000009), (array([[0, 1, 0],
   [1, 0, 1],
   [1, 1, 1]]), 2.0000000000000013), (array([[0, 1, 1],
   [0, 0, 1],
   [1, 1, 1]]), 2.1478990357047865), (array([[0, 1, 1],
   [1, 1, 1],
   [0, 1, 0]]), 2.1478990357047865), (array([[1, 1, 1],
   [1, 0, 1],
   [1, 0, 0]]), 2.1478990357047869), (array([[1, 1, 1],
   [1, 0, 0],
   [1, 1, 0]]), 2.1478990357047874), (array([[0, 1, 0],
   [1, 1, 1],
   [1, 1, 0]]), 2.1478990357047882), (array([[0, 0, 1],
   [1, 0, 1],
   [1, 1, 1]]), 2.1478990357047891), (array([[1, 0, 1],
   [1, 0, 0],
   [1, 1, 1]]), 2.2055694304005882), (array([[1, 1, 0],
   [1, 1, 1],
   [1, 0, 0]]), 2.2055694304005882), (array([[1, 1, 1],
   [0, 0, 1],
   [1, 0, 1]]), 2.2055694304005886), (array([[1, 1, 1],
   [1, 1, 0],
   [0, 1, 0]]), 2.2055694304005886), (array([[0, 0, 1],
   [1, 1, 1],
   [0, 1, 1]]), 2.2055694304005904), (array([[0, 1, 0],
   [0, 1, 1],
   [1, 1, 1]]), 2.2055694304005904), (array([[1, 1, 1],
   [0, 1, 1],
   [1, 1, 0]]), 2.2469796037174663), (array([[1, 1, 1],
   [1, 0, 0],
   [1, 0, 1]]), 2.2469796037174663), (array([[1, 1, 1],
   [1, 0, 1],
   [0, 1, 1]]), 2.2469796037174663), (array([[0, 0, 1],
   [0, 1, 1],
   [1, 1, 1]]), 2.2469796037174667), (array([[0, 1, 0],
   [1, 1, 1],
   [0, 1, 1]]), 2.2469796037174667), (array([[1, 0, 1],
   [0, 0, 1],
   [1, 1, 1]]), 2.2469796037174667), (array([[1, 0, 1],
   [1, 1, 1],
   [1, 1, 0]]), 2.2469796037174667), (array([[1, 1, 0],
   [1, 0, 1],
   [1, 1, 1]]), 2.2469796037174667), (array([[1, 1, 0],
   [1, 1, 1],
   [0, 1, 0]]), 2.2469796037174667), (array([[0, 1, 1],
   [1, 1, 0],
   [1, 1, 1]]), 2.2469796037174672), (array([[0, 1, 1],
   [1, 1, 1],
   [1, 0, 1]]), 2.2469796037174676), (array([[1, 1, 1],
   [1, 1, 0],
   [1, 0, 0]]), 2.2469796037174676), (array([[1, 0, 1],
   [1, 1, 0],
   [1, 1, 1]]), 2.3247179572447445), (array([[1, 1, 0],
   [1, 1, 1],
   [1, 0, 1]]), 2.3247179572447445), (array([[1, 1, 1],
   [0, 1, 1],
   [1, 0, 1]]), 2.3247179572447454), (array([[1, 1, 1],
   [1, 1, 0],
   [0, 1, 1]]), 2.3247179572447454), (array([[1, 0, 1],
   [1, 1, 1],
   [0, 1, 1]]), 2.3247179572447458), (array([[1, 1, 0],
   [0, 1, 1],
   [1, 1, 1]]), 2.3247179572447458), (array([[0, 1, 1],
   [1, 1, 1],
   [1, 1, 0]]), 2.4142135623730931), (array([[1, 1, 0],
   [1, 1, 1],
   [1, 1, 0]]), 2.4142135623730931), (array([[0, 1, 1],
   [1, 0, 1],
   [1, 1, 1]]), 2.4142135623730936), (array([[0, 1, 1],
   [0, 1, 1],
   [1, 1, 1]]), 2.414213562373094), (array([[0, 1, 1],
   [1, 1, 1],
   [0, 1, 1]]), 2.414213562373094), (array([[0, 0, 1],
   [1, 1, 1],
   [1, 1, 1]]), 2.4142135623730945), (array([[0, 1, 0],
   [1, 1, 1],
   [1, 1, 1]]), 2.4142135623730945), (array([[1, 0, 1],
   [0, 1, 1],
   [1, 1, 1]]), 2.4142135623730945), (array([[1, 1, 0],
   [1, 1, 1],
   [0, 1, 1]]), 2.4142135623730945), (array([[1, 1, 1],
   [1, 0, 1],
   [1, 0, 1]]), 2.4142135623730949), (array([[1, 1, 1],
   [1, 0, 1],
   [1, 1, 0]]), 2.4142135623730949), (array([[1, 1, 1],
   [1, 1, 0],
   [1, 0, 1]]), 2.4142135623730949), (array([[1, 1, 1],
   [1, 1, 0],
   [1, 1, 0]]), 2.4142135623730949), (array([[1, 1, 1],
   [1, 1, 1],
   [1, 0, 0]]), 2.4142135623730949), (array([[1, 1, 1],
   [0, 0, 1],
   [1, 1, 1]]), 2.4142135623730954), (array([[1, 1, 1],
   [1, 0, 0],
   [1, 1, 1]]), 2.4142135623730954), (array([[1, 1, 1],
   [1, 1, 1],
   [0, 1, 0]]), 2.4142135623730954), (array([[1, 0, 1],
   [1, 0, 1],
   [1, 1, 1]]), 2.4142135623730958), (array([[1, 0, 1],
   [1, 1, 1],
   [1, 1, 1]]), 2.6180339887498945), (array([[1, 1, 0],
   [1, 1, 1],
   [1, 1, 1]]), 2.6180339887498945), (array([[1, 1, 1],
   [0, 1, 1],
   [1, 1, 1]]), 2.6180339887498953), (array([[1, 1, 1],
   [1, 1, 1],
   [0, 1, 1]]), 2.6180339887498953), (array([[1, 1, 1],
   [1, 1, 0],
   [1, 1, 1]]), 2.6180339887498962), (array([[1, 1, 1],
   [1, 1, 1],
   [1, 0, 1]]), 2.6180339887498962), (array([[0, 1, 1],
   [1, 1, 1],
   [1, 1, 1]]), 2.7320508075688772), (array([[1, 1, 1],
   [1, 1, 1],
   [1, 1, 0]]), 2.7320508075688772), (array([[1, 1, 1],
   [1, 0, 1],
   [1, 1, 1]]), 2.7320508075688776), (array([[1, 1, 1],
   [1, 1, 1],
   [1, 1, 1]]), 3.0)] 

Thus, the minimal admissible spectral radius is

$$\bar{\rho} \approx \color{blue}{1.324718}$$

and $3! = 6$ matrices have this spectral radius, namely,

$$\begin{bmatrix} 0 & 1 & 1\\ 0 & 0 & 1\\ 1 & 0 & 0\end{bmatrix} \qquad\qquad\qquad \begin{bmatrix} 0 & 1 & 1\\ 1 & 0 & 0\\ 0 & 1 & 0\end{bmatrix}$$

$$\begin{bmatrix} 0 & 0 & 1\\ 1 & 0 & 1\\ 0 & 1 & 0\end{bmatrix} \qquad\qquad\qquad \begin{bmatrix} 0 & 0 & 1\\ 1 & 0 & 0\\ 1 & 1 & 0\end{bmatrix}$$

$$\begin{bmatrix} 0 & 1 & 0\\ 0 & 0 & 1\\ 1 & 1 & 0\end{bmatrix} \qquad\qquad\qquad \begin{bmatrix} 0 & 1 & 0\\ 1 & 0 & 1\\ 1 & 0 & 0\end{bmatrix}$$