계산이론및 오토마타

오토마타

추상적인 계산 모델을 의미한다. 물리적인 하드웨어가 아니라, “이런 상태에서 이런 입력을 받으면 다음 상태로 넘어간다”는 수학적 논리 구조를 공부한다

계산이론

오토마타를 도구로 삼아 다음 세 가지를 탐구한다

  • 오토마타 이론: 계산 모델의 종류와 특징 연구
  • 가해성 이론 (Computability): 어떤 문제가 컴퓨터로 풀릴 수 있는가?
  • 복잡도 이론 (Complexity): 문제를 푸는 데 자원(시간, 메모리)이 얼마나 드는가?

언어

언어라는 것은 먼저 alphabet과 string을 정의 해야 한다

알파벳

알파벳(Alphabet, )

알파벳은 더 이상 쪼갤 수 없는 기호들의 유한한 집합이다. 보통 시그마()로 표시한다. 집합은 비어있지 않아야 하며, 원소의 개수가 유한해야 한다

예시:

  • 영문 소문자 알파벳:
  • 이진 알파벳:

알파벳의 확장 알파벳 를 가지고 만들 수 있는 모든 문자열의 집합을 정의한다

  • 레이니 스타(Kleene Star, ): 알파벳 로 만들 수 있는 길이가 0 이상인 모든 문자열의 집합이다
    • 특징: 반드시 빈 문자열( 또는 )을 포함한다
    • 예시: 이면, (무한 집합)
  • 포지티브 클로저 (Positive Closure, ): 에서 빈 문자열만 뺀 집합입니다. 즉, 길이가 최소 1 이상인 문자열들만 모은 것이다
    • 예시: 이면,

문자열

문자열(String, )

문자열은 알파벳 집합에서 선택한 기호들을 순서대로 나열한 유한한 수열이다

개념

  • 길이(Length, ): 문자열에 포함된 기호의 개수이다
    • 예: 이면
  • 빈 문자열(Empty String, 또는 ): 기호가 하나도 없는 문자열입니다. 길이는 이다
  • 연접(Concatenation): 두 문자열을 이어 붙이는 연산이다
    • 예: 이면
  • 반전(Reverse, ): 문자열을 뒤집은 문자열이다
    • 예: 이면

문자열의 부분 구조(Substring) 문자열 가 있을 때, 그 안에 포함된 마디들을 어떻게 부르는지에 대한 정의이다

  • Prefix (접두사): 문자열의 앞부분부터 시작하는 부분 문자열이다
    • 예: 일 때, Prefix는 입니다. (빈 문자열 도 항상 포함된다)
  • Suffix (접미사): 문자열의 뒷부분으로 끝나는 부분 문자열이다
    • 예: 일 때, Suffix는 이다
  • Substring (부분 문자열): 문자열 내부에 연속적으로 나타나는 모든 마디이다
    • Prefix와 Suffix는 모두 Substring에 해당한다

문자열의 거듭제곱() 문자열을 자기 자신과 여러 번 연접하는 연산이다

  • (또는 ): 어떤 문자열이든 0번 반복하면 빈 문자열이 된다
  • : 1번 반복은 자기 자신이다
  • : 2번 반복
  • : 번 반복한 결과이다

언어

언어

알파벳 로부터 만들어지는 모든 가능한 스트링의 집합 의 임의의 부분집합이다. 언어는 일반적으로 무하한 크기를 가진다.

예: 일 때,

문장(Sentence): 언어 에 포함되어 있는 각각의 스트링 을 그 언어의 문장이라고 부른다

언어의 주요 연산 언어는 집합이므로 일반적인 집합 연산 외에도 언어 특유의 연산이 존재한다

연산 종류기호정의 및 설명
여집합전체 집합에서 을 제외한 나머지이다
역어에 속한 모든 스트링의 순서를 뒤집은 집합이다
결합두 언어의 원소를 순서대로 이어 붙인 집합이다
거듭제곱번 결합한 것. (공집합과 다르다)
클레이니 스타0번 이상의 결합이다
양의 폐쇄와 유사하다

문법(Grammar, )

문법

문법은 언어의 구조를 정의하는 규칙의 집합이다. 수학적으로는 로 정의한다

문법의 구성 요소:

  • (Variables): 문장을 만드는 과정에서 사용하는 중간 매개체이다
  • (Terminal symbols): 최종적으로 생성된 문장에 나타나는 기호이다
  • (Start variable): 시작 기호이다
  • (Productions): 변수를 어떻게 변환할지 정의하는 규칙이다

데리베이션(Derivation, 유도)

  • (Yields): 한 단계를 거쳐 변환한다
  • (Derives): 0번 이상의 단계를 거쳐 변환한다 (여러 단계의 과정을 축약)
  • 문장 형태 (Sentential Form): 유도 과정 중에 나타나는 모든 형태이다 (변수와 터미널의 혼합)
  • 문장 (Sentence): 터미널 기호()로만 구성된 최종 결과물이다

문법 가 생성하는 언어에 대한 정의

문법 규칙을 사용해 시작 기호 로부터 변수가 하나도 남지 않을 때까지 변형해서 만들 수 있는 모든 단어들의 모음이다

동일한 언어. 다른 문법 돟일한 언너 에 대해서도 이를 기술하는 문법 는 여러 개 존재할 수 있다

문법 설계 예시

예시1: 이 언어는 의 개수보다 의 개수가 항상 하나 더 많은 구조이다

  • 생성 규칙(P):
    • (마지막에 하나를 추가하여 균형을 맞춤)
    • (를 동시에 생성하여 개수를 맞춤)

예시 2: (개수가 같은 언어) 의 순서에 상관없이 개수만 같으면 되는 경우이다

  • 생성 규칙(P):
    • (두 개의 균형 잡힌 문자열 결합)
    • ( 사이에 균형 잡힌 문자열)
    • ( 사이에 균형 잡힌 문자열)
    • (종료 조건)

DFA(Deterministic Finite Accepters)

DFA

DFA는 결정적 유한 인식기로, 입력받은 스트링이 특정 언어에 속하는지(Accept) 아닌지(Reject)를 판별하는 가장 단순한 형태의 계산 모델이다

DFA의 수학적 정의 DFA, 은 다음과 같이 5개의 요소로 정의된다

  • (Set of all states): 시스템이 가질 수 있는 모든 상태들의 유한 집합
  • (Input alphabet): 입력 가능한 기호들의 유한 집합
  • (Transition function): 가장 중요한 요소. 현재 상태에서 입력 기호를 받았을 때 다음 상태로 가는 규칙 ()
  • (Initial state): 시작 상태(, 단 하나만 존재)
  • (Final states): 수락 상태들의 집합(, 여러 개일 수 있음)

표현 방식

사람이 이해하기 쉬운 그래프 방식과 컴퓨터가 처리하기 쉬운 방식이 있다

상태 전이 그래프(Transition Graph)

  • 노드(Node): 상태()를 나타냄
  • 에지(Edge): 전이 함수()를 나타냄
  • 이중 원: 수락 상태()를 표시
  • 화살표(Entry): 시작 상태()를 표시
  • Trap State(Dead State): 한 번 들어가면 절대로 수락 상태로 갈 수 없는 상태를 말한다
    • 모든 입력 기호에 대해 자신으로 되돌아오는 루프를 가진다
    • 문제 조건을 어기는 스트링이 들어왔을 때 이를 Reject 처리하기 위해 사용한다다

상태 전이표(Transition Table) 그래프를 행렬 형태로 표현한 것이다

현재 상태입력 0입력 1

확장 전이 함수와 DFA의 언어

델타 스타 () 노테이션 기존의 가 기호 하나에 대한 이동이라면, 스트링(문자열) 전체에 대한 이동을 의미한다

델타 스타 노테이션

는 상태 에서 스트링 를 모두 읽었을 때 최종적으로 도달하는 상태이다

예시:

DFA가 인식하는 언어 $L(M)

DFA 이 수락하는 언어는 다음과 같이 정의된다

즉, 시작 상태에서 스트링 를 따라갔을 때 마지막에 도착한 곳이 수락 상태()에 포함되면 그 스트링은 이 언어의 멤버이다

정규 언어(Regular Language)

정규 언어

어떤 언어 이 정규 언어라는 것은, 그 언어를 인식할 수 있는 유한 오토마타가 적어도 하나 존재한다는 것을 의미한다 is regular there exists a DFA such that

특징: 복잡한 언어라도 DFA로 표현 가능하다면 그것은 정규 언어이디