簡體   English   中英

模比較的確定性有限狀態自動機

[英]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 相對於彼此出現的次數。

我嘗試通過轉換表而不是使用轉換圖來定義 DFA 行為來回答您的問題 - 表更容易在此處鍵入,並且在功能上等同於相應的轉換圖。

在下表中

  • 第一列列出了所有州; 每個狀態都由一個有序對表示,其元素分別表示到目前為止讀取的x的數量和y的數量
  • 第二列和第三列分別包含當 DFA 處於表格第一列所示狀態時讀取xy時達到的狀態
  • 黃色突出顯示的狀態是接受狀態:如果 DFA 在檢查字符串中的最后一個符號后處於其中一種狀態,則接受該字符串,即它屬於該語言。

在此處輸入圖像描述

查看此表,您應該能夠輕松地調整圖表以使事情正常工作。 例如,表中的第一行對應於圖表的以下部分

>(0,0) -y-> (0,1)
   x
 (1,0)

您幾乎已經得出了問題本身的答案。

首先,您會看到需要哪些狀態。 您需要計算 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 DFA 抽屜鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM