Skip to content
Snippets Groups Projects
Verified Commit 31babbaf authored by Lucas Ondel Yang's avatar Lucas Ondel Yang
Browse files

chagned FSMArc to Arc

parent 8454a15e
No related branches found
No related tags found
1 merge request!65Resolve "rename FSMArc"
......@@ -31,9 +31,9 @@ a = ones(2, 3, 4)
# ╔═╡ 194152bc-7af8-43da-86b6-951fbb7b9f38
A = SparseTensorFSM{T,2}(
[
FSMArc(1, 1, T(2), latin_id["a"], latin_id["p"]),
FSMArc(1, 2, T(3), latin_id["b"], latin_id["q"]),
FSMArc(2, 2, T(4), latin_id["c"], latin_id["r"])
Arc(1, 1, T(2), latin_id["a"], latin_id["p"]),
Arc(1, 2, T(3), latin_id["b"], latin_id["q"]),
Arc(2, 2, T(4), latin_id["c"], latin_id["r"])
],
[1 => one(T)],
[2 => T(5)],
......@@ -45,11 +45,11 @@ draw(A, latin) # equivalent to draw(A, latin, latin)
# ╔═╡ 725a9cdd-eca0-43c2-8078-b596161f2255
B = SparseTensorFSM{T,2}(
[
FSMArc(1, 2, T(0), ϵ, ϵ),
FSMArc(2, 2, T(2), latin_id["a"], latin_id["p"]),
FSMArc(2, 3, T(3), latin_id["b"], latin_id["q"]),
FSMArc(3, 3, T(4), latin_id["c"], latin_id["r"]),
FSMArc(3, 2, T(5), ϵ, ϵ)
Arc(1, 2, T(0), ϵ, ϵ),
Arc(2, 2, T(2), latin_id["a"], latin_id["p"]),
Arc(2, 3, T(3), latin_id["b"], latin_id["q"]),
Arc(3, 3, T(4), latin_id["c"], latin_id["r"]),
Arc(3, 2, T(5), ϵ, ϵ)
],
[1 => one(T)],
[3 => T(5)]
......@@ -140,12 +140,12 @@ durations = Dict(
# ╔═╡ 84a8b06b-586d-4cb0-a5fe-71a3a926195b
melody = SparseTensorFSM{BoolSemiring,2}(
[
FSMArc(1, 2, one(BoolSemiring), 2, ϵ),
FSMArc(1, 2, one(BoolSemiring), 4, ϵ),
FSMArc(1, 2, one(BoolSemiring), 6, ϵ),
FSMArc(2, 3, one(BoolSemiring), ϵ, 2),
FSMArc(2, 3, one(BoolSemiring), ϵ, 3),
FSMArc(2, 3, one(BoolSemiring), ϵ, 4)
Arc(1, 2, one(BoolSemiring), 2, ϵ),
Arc(1, 2, one(BoolSemiring), 4, ϵ),
Arc(1, 2, one(BoolSemiring), 6, ϵ),
Arc(2, 3, one(BoolSemiring), ϵ, 2),
Arc(2, 3, one(BoolSemiring), ϵ, 3),
Arc(2, 3, one(BoolSemiring), ϵ, 4)
],
[1 => one(BoolSemiring)],
[3 => one(BoolSemiring)]
......@@ -162,12 +162,12 @@ md"""
# ╔═╡ b52b7305-4667-422f-a076-a30a2e4473a6
X = SparseTensorFSM{T,2}(
[
FSMArc(1, 2, T(0.1), latin_id["a"], latin_id["b"]),
FSMArc(2, 1, T(0.2), latin_id["a"], latin_id["b"]),
FSMArc(2, 3, T(0.3), latin_id["b"], latin_id["b"]),
FSMArc(2, 4, T(0.4), latin_id["b"], latin_id["b"]),
FSMArc(3, 4, T(0.5), latin_id["a"], latin_id["b"]),
FSMArc(4, 4, T(0.6), latin_id["a"], latin_id["a"])
Arc(1, 2, T(0.1), latin_id["a"], latin_id["b"]),
Arc(2, 1, T(0.2), latin_id["a"], latin_id["b"]),
Arc(2, 3, T(0.3), latin_id["b"], latin_id["b"]),
Arc(2, 4, T(0.4), latin_id["b"], latin_id["b"]),
Arc(3, 4, T(0.5), latin_id["a"], latin_id["b"]),
Arc(4, 4, T(0.6), latin_id["a"], latin_id["a"])
],
[1 => one(T)],
......@@ -177,11 +177,11 @@ X = SparseTensorFSM{T,2}(
# ╔═╡ 55340c65-dd00-4ae1-be6a-d479c4096113
Y = SparseTensorFSM{T,2}(
[
FSMArc(1, 2, T(0.1), latin_id["b"], latin_id["b"]),
FSMArc(2, 2, T(0.2), latin_id["b"], latin_id["a"]),
FSMArc(2, 3, T(0.3), latin_id["a"], latin_id["b"]),
FSMArc(2, 4, T(0.4), latin_id["a"], latin_id["b"]),
FSMArc(3, 4, T(0.5), latin_id["b"], latin_id["a"])
Arc(1, 2, T(0.1), latin_id["b"], latin_id["b"]),
Arc(2, 2, T(0.2), latin_id["b"], latin_id["a"]),
Arc(2, 3, T(0.3), latin_id["a"], latin_id["b"]),
Arc(2, 4, T(0.4), latin_id["a"], latin_id["b"]),
Arc(3, 4, T(0.5), latin_id["b"], latin_id["a"])
],
[1 => one(T)],
......@@ -200,10 +200,10 @@ draw(compose(X, Y), latin)
# ╔═╡ 80f55f5d-4d0f-4904-8ac0-a1d0ce796f89
U = SparseTensorFSM{T,2}(
[
FSMArc(1, 2, one(T), latin_id["a"], latin_id["a"]),
FSMArc(2, 3, one(T), latin_id["b"], ϵ),
FSMArc(3, 4, one(T), latin_id["c"], ϵ),
FSMArc(4, 5, one(T), latin_id["d"], latin_id["d"])
Arc(1, 2, one(T), latin_id["a"], latin_id["a"]),
Arc(2, 3, one(T), latin_id["b"], ϵ),
Arc(3, 4, one(T), latin_id["c"], ϵ),
Arc(4, 5, one(T), latin_id["d"], latin_id["d"])
],
[1 => one(T)],
[5 => one(T)]
......@@ -212,9 +212,9 @@ U = SparseTensorFSM{T,2}(
# ╔═╡ 2756b6b9-ce77-4bbb-9231-f798312b5247
V = SparseTensorFSM{T,2}(
[
FSMArc(1, 2, T(0.1), latin_id["a"], latin_id["d"]),
FSMArc(2, 3, T(0.2), ϵ, latin_id["e"]),
FSMArc(3, 4, T(0.3), latin_id["d"], latin_id["a"]),
Arc(1, 2, T(0.1), latin_id["a"], latin_id["d"]),
Arc(2, 3, T(0.2), ϵ, latin_id["e"]),
Arc(3, 4, T(0.3), latin_id["d"], latin_id["a"]),
],
[1 => one(T)],
......
......@@ -8,7 +8,7 @@ using SparseSemiringAlgebra
# Generic FSM API
export AbstractFSMArc,
FSMArc,
Arc,
AbstractFSM,
arcs,
states,
......
......@@ -11,23 +11,23 @@ const ϵ = 1
"""
FSMArc{T,N}
Arc{T,N}
Arc of a `N`-order relation finite-state machine over the semiring `T`.
# Constructor
FSMArc(src, dest, weight, sym...)
Arc(src, dest, weight, sym...)
# Examples
```jldoctest
julia> FSMArc(1, 1, one(BoolSemiring), ϵ)
FSMArc{BoolSemiring, 1}(1, 1, true, (1,))
julia> Arc(1, 1, one(BoolSemiring), ϵ)
Arc{BoolSemiring, 1}(1, 1, true, (1,))
julia> FSMArc(2, 3, ProbSemiring{Float32}(1/2), 2, 3)
FSMArc{ProbSemiring{Float32}, 2}(2, 3, 0.5, (2, 3))
julia> Arc(2, 3, ProbSemiring{Float32}(1/2), 2, 3)
Arc{ProbSemiring{Float32}, 2}(2, 3, 0.5, (2, 3))
```
"""
struct FSMArc{T,N}
struct Arc{T,N}
src::Int
dest::Int
weight::T
......@@ -35,7 +35,7 @@ struct FSMArc{T,N}
end
FSMArc(src, dest, weight, sym::Vararg{Int,N}) where N = FSMArc{typeof(weight),N}(src, dest, weight, sym)
Arc(src, dest, weight, sym::Vararg{Int,N}) where N = Arc{typeof(weight),N}(src, dest, weight, sym)
"""
......
......@@ -53,14 +53,14 @@ end
function arcs(fsa::SparseTensorFSM{T,N}) where {T,N}
arcs = FSMArc{T,N}[]
arcs = Arc{T,N}[]
for nzi in 1:nnz(fsa.M)
sym = fsa.M.coordinates[nzi]
Mi = val(fsa.M.values[nzi])
for nzi in 1:nnz(Mi)
(src, dest) = Mi.coordinates[nzi]
weight = Mi.values[nzi]
push!(arcs, FSMArc(src, dest, weight, sym...))
push!(arcs, Arc(src, dest, weight, sym...))
end
end
arcs
......@@ -75,8 +75,8 @@ function resize(fsm::SparseTensorFSM{T,N}, size::Dims{N}) where {T,N}
SparseTensorFSM{T,N}(M, fsm.α, fsm.ω)
end
Base.zero(::Type{SparseTensorFSM{T,N}}) where {T,N} = SparseTensorFSM{T,N}(FSMArc{T,N}[], Pair{Int,T}[], Pair{Int,T}[])
Base.zero(::Type{SparseTensorFSM{T,N}}) where {T,N} = SparseTensorFSM{T,N}(Arc{T,N}[], Pair{Int,T}[], Pair{Int,T}[])
Base.zero(fsm::SparseTensorFSM) = zero(typeof(fsm))
Base.one(::Type{SparseTensorFSM{T,N}}) where {T,N} = SparseTensorFSM{T,N}(FSMArc{T,N}[], [1 => one(T)], [1 => one(T)])
Base.one(::Type{SparseTensorFSM{T,N}}) where {T,N} = SparseTensorFSM{T,N}(Arc{T,N}[], [1 => one(T)], [1 => one(T)])
Base.one(fsm::SparseTensorFSM) = one(typeof(fsm))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment