考虑以下FST:
T1
0 1 a : b
0 2 b : b
2 3 b : b
0 0 a : a
1 3 b : a
T2
0 1 b : a
1 2 b : a
1 1 a : d
1 2 a : c
如何在这两个FST上执行合成操作(即T1 o T2) 我看到了一些算法,但无法理解。如果有人能够以简单的方式解释它,那将是一个重要的帮助。
请注意,这不是作业。这个例子来自给出解决方案的演讲幻灯片,但我无法弄清楚如何达到它。
答案 0 :(得分:18)
由于你没有指定输入格式,我假设0是初始状态,出现在第二列但不是第一列的任何整数都是接受状态(T1为3,T2为2),每一行都是过渡关系的一个元素,给出了前一个状态,下一个状态,输入字母和输出字母。
对FST的任何操作都需要产生新的FST,因此我们需要状态,输入字母,输出字母,初始状态,最终状态和过渡关系(下面给出了FST A,B和W的规格)按此顺序)。假设我们的FST是:
A = (Q, Σ, Γ, Q0, QF, α) B = (P, Γ, Δ, P0, PF, β)
我们想找到
W = (R, Σ, Δ, R0, RF, ω) = A ∘ B
请注意,我们不需要确定W的字母;组成的定义就是这样。
想象一下,A和B串联运行,A的输出磁带作为B的输入磁带。组合FST的状态只是A和B的组合状态。换句话说,组合物的状态是各个FST状态的叉积。
R = Q × P
在您的示例中,W的状态将是整数对:
R = {(0,0), (0,1), ... (3, 2)}
虽然我们可以重新编号并得到(例如):
R = {00, 01, 02, 10, 11, 12, 20, 21, 22, 30, 31, 32}
类似地,组合FST的初始和接受状态是组件FST中的那些的交叉积。特别是,R接受字符串iff A和B都接受字符串。
R0 = Q0 × P0 RF = QF × PF
在示例中,R 0 = {00}且R F = {32}。
剩下的就是确定过渡关系ω。为此,将A的每个转换规则与可能适用的B的每个转换规则组合。也就是说,将A (qi, σ) → (qj, γ)
的每个转换规则与具有“γ”作为输入字符的B的每个规则组合。
ω = { ((qi,ph), σ) → ((qj, pk), δ) : (qi, σ) → (qj, γ) ∈ α, (ph, γ) → (pk, δ) ∈ β}
在示例中,这意味着将T1的0 1 a : b
与T2的0 1 b : a
和1 2 b : a
结合起来得到:
00 11 a : a 01 12 a : a
同样,您将T1的0 2 b : b
与T2 0 1 b : a
和1 2 b : a
的{{1}},0 0 a : a
和1 1 a : d
1 2 a : c
组合在一起T2& c。
请注意,您可能具有无法访问的状态(那些从未显示为“下一个”状态的状态)和永不发生的转换(来自无法访问状态的转换)。作为优化步骤,您可以删除这些状态和转换。但是,留下它们不会影响施工的正确性;这只是一种优化。
答案 1 :(得分:3)
如果您更适合图解说明,下面的一组幻灯片提供了实际中组合算法的增量图形示例,还包括对组件传感器中的ε过渡的讨论。 Epsilon转换使合成过程变得复杂,在这种情况下,outis回答中描述的算法可能无法生成正确的结果,具体取决于所使用的半环境。
有关图形示例,请参见幻灯片10~35:
答案 2 :(得分:0)
组成T的状态是T1状态和T2状态对。 T满足以下条件:
由于没有权重,因此我们可以忽略这一点。上面的内容完全是从下面的精美论文中提取的。 Link here