A semiring is an algebraic structure that generalizes rings, omitting the requirement that each element have an additive inverse. Examples include
$(\mathbb{R}, +, \times, 0, 1)$ $(\mathbb{R}, \mathrm{max}, +, -\infty, 0)$ $(\mathbb{R}, \mathrm{max}, \mathrm{min}, -\infty, +\infty)$
Let
With SemiringFactorizations.jl, we can compute the Kleene star of a matrix with the function star.
A weighted graph is a directed graph with a weight assigned to each edge. Weighted graphs can be represented by adjacency matrices with entries in the min-plus semiring.
The Kleene star of this matrix contains the weight of the shortest path between every pair of vertices.
julia> using SemiringFactorizations
julia> A = MinPlus{Float64}[
Inf 9.0 1.0 Inf Inf Inf
Inf Inf Inf Inf Inf 4.0
Inf Inf Inf 2.0 6.0 Inf
Inf Inf Inf Inf 3.0 Inf
Inf Inf Inf Inf Inf 5.0
Inf Inf Inf Inf Inf Inf
];
julia> star(A)
6×6 Matrix{MinPlus{Float64}}:
0.0 9.0 1.0 3.0 6.0 11.0
Inf 0.0 Inf Inf Inf 4.0
Inf Inf 0.0 2.0 5.0 10.0
Inf Inf Inf 0.0 3.0 8.0
Inf Inf Inf Inf 0.0 5.0
Inf Inf Inf Inf Inf 0.0