Irreducibility and primitivity of nonnegative matrices #
This file develops a graph-theoretic interface for studying the properties of nonnegative square matrices.
We associate a directed graph (quiver) with a matrix A, where an edge i ⟶ j exists if and only
if the entry A i j is strictly positive. This allows translating algebraic properties of the
matrix (like powers) into graph-theoretic properties of its quiver (like theexistence of paths).
Main definitions #
Matrix.toQuiver A: The quiver associated with a matrixA, where an edgei ⟶ jexists if0 < A i j.Matrix.IsIrreducible A: A matrixAis defined as irreducible if it is entrywise nonnegative and its associated quivertoQuiver Ais strongly connected. The theoremMatrix.isIrreducible_iff_exists_pow_posproves this graph-theoretic definition is equivalent to the algebraic one in seneta2006 (Def 1.6, p.18): for every pair of indices(i, j), there exists a positive integerksuch that(A ^ k) i j > 0.Matrix.IsPrimitive A: A matrixAis primitive if it is nonnegative and some powerA ^ kis strictly positive (all entries are> 0), (seneta2006, Definition 1.1, p.14).
Main results #
Matrix.pow_apply_pos_iff_nonempty_path: Establishes the link between matrix powers and graph theory:(A ^ k) i j > 0if and only if there is a path of lengthkfromitojintoQuiver A.Matrix.isIrreducible_iff_exists_pow_pos: Shows the equivalence between the graph-theoretic definition of irreducibility (strong connectivity) and the algebraic one (existence of a positive entry in some power).Matrix.IsPrimitive.to_IsIrreducible: Proves that a primitive matrix is also irreducible (Seneta, p.14).Matrix.IsIrreducible.transpose: Shows that the irreducibility property is preserved under transposition.
Implementation notes #
Throughout we work over a LinearOrderedRing R. Some results require stronger assumptions,
like PosMulStrictMono R or Nontrivial R. Some statements expand matrix powers and thus require
[DecidableEq n] to reason about finite sums.
References #
Tags #
matrix, nonnegative, positive, power, quiver, graph, irreducible, primitive, perron-frobenius
A matrix A is irreducible if it is entrywise nonnegative and
its quiver of positive entries (toQuiver A) is strongly connected.
- connected : Quiver.IsSStronglyConnected n
Instances For
A matrix A is primitive if it is entrywise nonnegative
and some positive power has all entries strictly positive.
Instances For
If A is irreducible and n is non-trivial then every row has a positive entry.
For a matrix A with nonnegative entries, the (i, j)-entry of the k-th power A ^ k
is strictly positive if and only if there exists a path of length k from i to j in the
quiver associated to A via toQuiver.
Irreducibility of a nonnegative matrix A is equivalent to entrywise positivity of some
power: between any two indices i, j there exists a positive integer k such that the
(i, j)-entry of A ^ k is strictly positive.
If a nonnegative square matrix A is primitive, then A is irreducible.
Transposition #
Reverse a path in toQuiver A to a path in toQuiver Aᵀ, swapping endpoints.
Equations
- Matrix.transposePath p = Quiver.Path.rec Quiver.Path.nil (fun {b c : n} (q : Quiver.Path i b) (e : b ⟶ c) (ih : Quiver.Path b i) => have eT := ⋯; eT.toPath.comp ih) p
Instances For
Irreducibility is invariant under transpose.