2014-02-26 3 views
2

제 계산 이론 수업에서 우리는 언어가 규칙적임을 증명하는 과제를 가지고 있습니다. 이 언어는 다음과 같이 정의된다 : 1ky특정 언어 증명하기 일반

B = {| y{0, 1}*에 있으며 y 누군가가 올바른 방향으로 날 밀어 수 있다면이를위한 기계를 만들기 위해 푸시 다운 오토마타가 필요하지만 것처럼

이 언어 나에게 보이는} k >= 1를 들어, 적어도 k 1 초를 포함 이것을 정규 언어라고 증명해보십시오. 나에게 NFA, DFA, 정규 표현식 또는 일반 문법을 만드는 것이 도움이 될 것입니다.

+0

*'이 언어는 기계를 만들기 위해 푸시 다운 오토 마톤이 필요해 보인다 "* 네, 실제로이 언어는'n^'에 대한 **'a^nb^n' = 0'은 CFL입니다. 그러나이 언어가 **'a^n a^n' **과 같은 것인데, 정규 언어 인'n> = 0' (**'**'**)의 수임을 이해하십시오! –

답변

4

언어 L :

L = {1ky | y{0, 1}*에 있으며 yk >= 1에 대한 1, 적어도 k 수}

정규 언어가 포함되어 있습니다. 실제로이 언어는 매우 간단합니다. L에 대한 간단한 영어 설명은 다음과 같습니다. "모든 문자열 집합은 '0' 및 으로 구성되며 모든 문자열은 '1'으로 시작하며 적어도 두 개는 '1'"으로 제한됩니다.

문제의 언어 설명은 고의적으로 질문을 복잡하게 만듭니다. 이런 종류의 문제를 해결하는 간단한 접근법은 다음과 같습니다. 언어 읽기 언어의 문자열 패턴을 이해하려고 시도합니다. 가능한 모든 문자를 으로 작성하고 문자열을 작성한 다음 두 번째로 작은 문자열을 작성하십시오.
또한 이 (가)이 아닌 가장 작은 길이의 문자열을 찾으십시오. 아래에서는 영어 설명에서 RE 또는 FA를 작성하는 예제를 사용하여 접근 방식을 보여 줬습니다. 1ky에 따르면

있는 언어 L에
  1. 모든 문자열 '0'으로 구성되어 있으며 '1'
  2. : 우리가 언어 L.에서 허용되는 문자열의 종류를 이해하려고 처음 몇 단계

    하자가 다음 사항을 읽을 수 강판은'1'k 언어로 문자열 0.1

  3. 패턴보다 k >= 1 및 언어 L의 모든 문자열로 시작해야 210 (또는 우리는 1+y라고 말할 수 있습니다). 더 자세히 설명하기 위해 문자열 시작 부분에 1을 입력하고 y이라는 접미사를 사용합니다. 여기서 y0 및의 임의의 하위 문자열이 될 수 있습니다.
    참고 : k은 0보다 큰 숫자 일 수 있으므로 하위 문자열 y 앞에 적어도 하나의 '1'이 있어야한다는 단순한 제한이 있습니다. 처음으로 '1' 하위 문자열 y의 일부로 접미사를 남길 것을 고려하십시오.

    1. 일부 가능한 가장 작은 문자열이 될 수 있습니다 : 나는 언어로 몇 가지 예를 들어 문자열을 작성하려고 말했듯 즉

    2. , 우리는 또한 지금 언어 L = { 1y, where y contains at least a 1}

    을 설명 할 수

    '11' where k = 1 and y = '1' 
    '101' where k = 1 and y = '01' 
    '110' where k = 1 and y = '10' 
    
  4. 하나 더 예 :

    '111' where k = 1 and y = 11 #remember in `y` there must be atleat k ones 
    
  5. 또 다른 예제 '1111', 이제는 ky이 될 수 있습니까? 문자열 '1111'는 다음과 같은 방법으로 해석 될 수있다 :

    '1111' with k = 1 and y = 111 #remember in `y` there must be atleat k ones 
         or k = 2 and y = 11 #remember in `y` there must be atleat k ones 
    

일부 예는 사람들은하지 언어로 된 문자열 : L에있을 수 없습니다

  1. 문자열 '00', '0' 있습니다, 문자열은 '1'으로 시작해야하므로 '01111'입니다. 따라서 패턴이 0(0 + 1)* 인 모든 문자열은 '0'으로 시작하며 언어가 아닙니다.

  2. '1'으로 시작하지만 아직 언어로 표시되지 않는 다른 가능한 문자열이 있습니다. 예 : '10' 인 경우 k = 1 (최소 값은 k)이면 y'0'입니다. 같은 이유로 문자열에이 없습니다. 따라서 패턴이 10* 인 모든 문자열은 '1'이고 0이 아닌 숫자는이며 그 뒤에는 언어가 없습니다. 또한 적어도 '1'를 포함하는 부분 '1'y

그래서 언어의 모든 문자열이 시작됩니다. y에는 '1'이 표시 될 수있는 제한이 없습니다. 하위 문자열 y은 0이 아닌 임의의 문자열 일 수 있으며 y에 대한 정규 표현식은 0*1(1 + 0)*입니다. L에 대한

정규 표현식은 다음과 같습니다 10*1(1 + 0)* 이제

이 비슷한 접근 방식은 하나 drawing minmal DFA for the given regular expression @ 답을 참조 할 수 있습니다 및 Left-Linear and Right-Linear Grammars @ 정규 문법 읽고 답을 작성하는 언어에 대한 DFA를 작성하기위한 도움이 될 수 있습니다.