簡體   English   中英

將接受具有奇數個 1 和奇數個 0 的字符串的 DFA

[英]DFA that will accepts the string having odd number of 1's and odd number of 0's

我想要 DFA 生成,它將接受具有奇數個 1 和奇數個 0 的字符串。

首先,讓我們構建一個接受奇數 0 的 DFA。我們至少需要一個狀態,否則我們不能接受任何東西。 該狀態不能接受,因為空字符串引導到那里並且空字符串沒有奇數 0。因此,我們至少需要兩個狀態 - 一個不接受的初始狀態和一個接受狀態。 我們需要更多嗎?

為了回答這個問題,讓我們開始填充過渡,看看我們得到了什么。 必須有一個源自接受狀態的轉換。 它去哪兒了? 如果它轉到自身,那么我們不接受字符串 0,它有一個奇數(一)為 0。所以我們需要在初始狀態下進入 0 上的某個接受狀態。 我們恰好已經有一個接受狀態; 讓我們去那里。

接下來,我們必須從接受狀態轉換。 如果我們返回接受狀態,我們將接受字符串 00,所以我們不能這樣做。 我們必須過渡到某種不接受的狀態。 我們已經有了一個不接受的狀態——我們的初始狀態——所以這個選擇可能會起作用。 或者,如果不是,我們必須引入一個新狀態。 讓我們首先考慮返回初始狀態是否有效,因為在這種情況下我們就完成了。

我們已經推斷出字符串 0 和 00 被正確處理了。 從那時起,000 將被正確處理,因為我們在隨后的 0 上從初始狀態返回到接受狀態; 實際上,我們在 0^2k 時返回初始狀態,在 0^(2k+1) 時返回接受狀態,因為 k >= 0。因此,這個 DFA 對於奇數為 0 的字符串的語言是正確的。圖表看起來像:

        /---0----\
        |        |
        V        |
----->(q0)--0-->(q1)

通過更改標簽,我們可以獲得奇數 1 字符串語言的自動機:

        /---1----\
        |        |
        V        |
----->(q2)--1-->(q3)

為了讓自動機接受包含奇數 0 和 1 的字符串,想象一下同時運行兩個自動機:每當我們看到 0 時,我們將其傳遞給第一個,而每當我們看到 1 時,我們將其傳遞給第二個。 然后,如果兩個自動機最終都處於接受狀態,我們就接受。 我們可以通過將來自第一個和第二個自動機的所有四對狀態視為一個新的組合自動機的狀態來表示兩個自動機的組合狀態,其轉移圖如下所示:

          /----0----\
          |         |
          V         |
----->(q0,q2)--0-->(q1,q2)
       ^  |         ^  |
       |  1         |  1
       1  |         1  |
       |  V         |  V
      (q0,q3)--0-->(q1,q3)
          ^         |
          |         |
          \----0----/

這些是關於語言規則性的 Myhill-Nerode 定理和規則語言交集的笛卡爾積機器構造背后的直覺。

意味着您想要odd-odd languageDFA

這是您需要的DFA 在此處輸入圖像描述

看這里當你申請0它不接受..然后你申請1它會達到最終狀態。 由於DFA接受奇數個'0's和奇數個'1's它將接受字符串,除非它們的長度是奇數。您可以在 DFA 上運行字符串來檢查它。 希望對你有幫助

令 q0,q1,q2,q3,q4,q5 是 DFA 的狀態。 還假設構造一個接受奇數個 0 和奇數個 1 的 DFA,以便 0 上的 q0 在 q 1 上給出 q0 和 q0 在 0 上給出 q2 和 q1 q 1 q2 在 0 上給出 q0 和 q2 q3。 q3 on 0 在 1 q4 上給出 q2 和 q3。 並且 q4 on 0 和 1 通過檢查子字符串 1011 q0 on 1 go to q1 q1 on 0 go to q2 q2 on 1 go to q3 q3 on 1 go to q4 最終狀態。 它是必需的 DFA 。 https://i.stack.imgur.com/jy109.jpg

暫無
暫無

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

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