[오토마타] 24. RL vs CFL vs TM

2024. 12. 12. 16:49·CS/오토마타
반응형

이번 글에서는 지금까지 배운 내용을 토대로 RL, CFL, TM 을 비교해본다.

 

 

aⁿ 은 레귤러 언어로서, DFA로 그릴 수 있었고, RE로 표현할 수도 있었고, 위와 같은 RG로 표현할 수도 있었다.

(RG는 Linear Grammar 중에서 변수가 왼쪽에만 있거나, 오른쪽에만 있는 형태이면 된다.)

 

 

 

CFL 의 경우, 대표적인 예시가 aⁿbⁿ 으로, 펌핑 렘마를 통해 RL 가 아님을 보일 수 있었고,

CFG 를 통해 표현하거나, NPDA를 통해 표현할 수 있었다.

 

 

 

마지막으로 CFG 가 아닌 언어로 대표적인 것이 aⁿbⁿcⁿ 이었다. (이때, n ≥ 1 이어야 한다. 튜링머신은 λ를 취급하지 않기 때문)

이 언어는 펌핑 렘마를 통해 CFL이 아니라는 것을 보일 수 있었고, 지난 글에서 마지막 예제 문제를 풀어본 것처럼, 튜링 머신으로 만들 수도 있었다.

 

그렇다면 이런 언어를 문법으로도 기술할 수 있을까?

바로 위 그림에서 보는 것처럼 기술이 가능하다.

현재 화살표 왼쪽에 변수 하나 말고도 터미널이 같이 등장하는 것을 볼 수 있다.

따라서 이 문법은 CFG가 아니다.

 

이 문법에서 대문자 A 는 일종의 메신저 또는 TM 에서 헤드라고 생각하면 된다.

A가 하는 일은 오른쪽에 b가 있는지 확인하고, c까지 있다면 abc를 만드는 일을 도와주는 역할을 수행한다.

 

Ab 를 읽었다면 A 오른쪽에 b 가 존재한다는 뜻이므로, bA 로 produce 하여 마치 헤드를 오른쪽으로 한칸 이동시키는 것과 같이 만든다.

Ac 를 읽었다면 c까지 모두 만난 것이니 abc를 만들면 된다. 이때 bc만 만든 이유는 a, b, c를 각각 한군데에 몰아넣어야 하기 때문에 A를 만들 위치는 B 라는 새로운 포인터를 통해 찾아서 넣어준다. 따라서 Bbcc 를 생성한다.

 

B는 계속해서 왼쪽으로 이동하여 a를 추가할 위치를 찾아야 한다.

따라서 bB 로 왼쪽에 b가 존재하면 Bb 로 왼쪽으로 이동하고

aB 로 해서 a를 만나면, 이 위치에 aa 로서 a 를 추가하고 모든 과정을 종료하거나, aaA 를 produce해서 다음에 abc를 추가할 수 있도록 A 포인터를 세팅한다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 오토마타' 카테고리의 다른 글

[오토마타] 23. Standard Turing Machine  (0) 2024.12.12
[오토마타] 22. CFL의 Closure Property  (0) 2024.12.12
[오토마타] 21. Pummping Lemma (for CFL)  (0) 2024.12.12
[오토마타] 20. DPDA & DCFL  (0) 2024.12.12
[오토마타] 19. NPDA & CFL  (0) 2024.12.12
'CS/오토마타' 카테고리의 다른 글
  • [오토마타] 23. Standard Turing Machine
  • [오토마타] 22. CFL의 Closure Property
  • [오토마타] 21. Pummping Lemma (for CFL)
  • [오토마타] 20. DPDA & DCFL
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614) N
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8) N
        • express.js (1)
        • Spring & Spring Boot (7) N
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[오토마타] 24. RL vs CFL vs TM
상단으로

티스토리툴바