[英]Deterministic Finite State Automata for Modulo Comparison
我正在為以下問題創建確定性有限狀態自動機:
您可以創建由 x 和 y 組成的字符串。 當(x's mod 4)的數量大於(y's mod 4)的數量時,如何創建僅接受語言的圖表?
我目前能夠理解的是,我需要創建一個類似於下圖的圖表:
>(0,0) -b-> (0,1) -b-> (0,2) -b-> (0,3) -b-> (0,4)
a a a a a
(1,0) -b-> (1,1) -b-> (1,2) -b-> (1,3) -b-> (1,4)
a a a a a
(2,0) -b-> (2,1) -b-> (2,2) -b-> (2,3) -b-> (2,4)
a a a a a
(3,0) -b-> (3,1) -b-> (3,2) -b-> (3,3) -b-> (3,4)
a a a a a
(4,0) -b-> (4,1) -b-> (4,2) -b-> (4,3) -b-> (4,4)
但我不明白的是如何比較 x 和 y 相對於彼此出現的次數。
您幾乎已經得出了問題本身的答案。
首先,您會看到需要哪些狀態。 您需要計算 n(x) mod 4。這需要 4 個狀態。 然后你需要計算 n(y) mod 4。這也需要 4 個狀態。 現在,由於您需要同時計算兩者,因此您必須將它們相交。 這將導致 4 x 4 = 16 個狀態。 讓我們將這些狀態命名為(a, b); a = n(x) mod 4, b = n(y) mod 4
(a, b); a = n(x) mod 4, b = n(y) mod 4
。
然后,您決定什么是初始狀態,什么是最終狀態。 在這種情況下,初始狀態為(0,0)
,最終狀態為{ (a,b) : a > b }
。
所以,這就是你最終得到的: DFA 抽屜鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.