유한 한 오토마타를 공부 한 후에 달성해야하는 깨달음은 무엇입니까?


247

나는 계산을 위해 재미를 위해 계산 이론을 수정 해 왔으며이 질문은 잠시 동안 잔소리가났다. "왜"정확히 결정 론적 및 비결정론 적 유한 오토마타 (DFA / NFA)를 연구 하는가? 그래서 다음은 독백 후에 나왔지만 여전히 'aha'순간에 대한 전반적인 기여를 보지 못한 답변입니다.

  1. 그들이 무엇이며 제한이없는 것을 연구하기 위해
    • 왜?
  2. 그것들은 이론적 계산의 기본 모델이고 다른 더 유능한 계산 모델의 기초를 놓을 것이기 때문입니다.
    • 그것들을 '기본'으로 만드는 것은 무엇입니까? 스토리지 및 상태 전이가 1 비트뿐입니까?
  3. 좋아, 뭐? 이 모든 것이 어떻게 계산 문제에 대한 답을 얻는 데 기여합니까? 튜링 머신은 이것을 잘 이해하는 데 도움이 될 것으로 보이며 PDA, DFA / NFA / Regexes 등과 같은 '더 적은'계산 모델이 있습니다. 그러나 FA를 모르면 빠진 것이 무엇입니까?

그래서 나는 어느 정도 '얻을'지라도이 질문에 스스로 대답 할 수 없습니까? 'D / N-FA를 공부하는 이유'를 가장 잘 설명 할 수있는 방법은 무엇입니까? 그들이 대답하려는 질문은 무엇입니까? 그것이 Automata Theory에서 가장 먼저 가르치는 이유는 무엇입니까?

추신 : 저는 다양한 사전 응용 프로그램과 패턴 매처를 알고 있습니다. 그러나 나는 그것이 실제로 사용될 수있는 것이 아니라 계산 이론을 연구하는 과정에서 사용 / 발명 / 디자인의 이유가 무엇인지 알고 싶지 않습니다. 역사적으로 말해서 이것으로 시작하게 된 것은 무엇이며 'aha'이해는 무엇으로 이어질까요? Automata Theory를 공부하기 시작한 CS 학생들에게 그들의 중요성을 설명하려면 어떻게 했습니까?


10
이것이 TCS의 연구 수준 질문입니까?
Hendrik 1

13
주제에 대한 큰 그림의 관점을 요구하는 것만 큼 연구 문제는 아닙니다. 여기에는 여러 가지 질문이 있습니다. 의견에 대한 토론을 시작하기보다는 그러한 질문의 적절성에 대해 더 논의하고 싶다면 메타에 관한 질문을 게시하는 것이 좋습니다.
Suresh Venkat

6
PhD : 귀하의 질문에 아주 좋은 답변이되었으므로 감사합니다. 당신은 당신의 진술에 정직했으며, 당신이나 당신의 질문을 실격시키는 것이 나의 의도는 아니 었습니다. 실제로 그것은 내 의견에서 제안하는 것과 다른 방법입니다 .FAQ 에서이 인용문을 사용하여 너무 쉽게 기각 된 다른 질문을 보았습니다. 당신은 맞습니다. Suresh : 토론을 시작하기위한 곳이 아닙니다. 죄송합니다.
Hendrik Jan

1
@HendrikJan-걱정 마세요! 텍스트는 톤을 숨 깁니다. 나는 그런 식으로 의미하지 않았다. 나는 이것이 나의 연구 질문인지 나에게 묻는다고 생각했다.
PhD

16
공적 포럼에서 거의 만나지 않는 수준의 시민권을 얻기 위해 박사 학위와 헨드릭에게 전합니다.
Lucas

답변:


342

나는 개인적으로 여러 Aha를 즐겼습니다 ! 기본 오토마타 이론을 공부 한 순간. NFA와 DFA는 전체적으로 이론적 인 컴퓨터 과학의 소우주를 형성합니다.

  1. 비결정론이 효율성으로 이어 집니까? 언어에 대한 최소 결정 론적 오토 마톤이 최소 비결정론 적 오토 마톤보다 기하 급수적으로 큰 표준 예제가 있습니다. 튜링 머신의 이러한 차이점을 이해하는 것은 (이론적) 컴퓨터 과학의 핵심입니다. NFA와 DFA는 결정론과 비결정론 사이의 엄격한 격차를 명시 적으로 볼 수있는 가장 간단한 예를 제공합니다.
  2. 계산 성! = 복잡성. NFA 쌍이 및 DFAS는 모두 일반 언어를 대표하고있는 동일 무엇을 그들이 계산한다. 계산 방법 이 다릅니다 .
  3. 기계는 언어를 다듬습니다. 이것은 우리가 계산하는 것과 계산하는 방법에 대한 다른 테이크입니다. 계산 가능한 언어 (및 함수)는 동등한 클래스의 오토마타를 정의하는 것으로 생각할 수 있습니다. 이것은 TCS의 근본적인 관점 변화입니다. 여기서 우리는 계산하는 것뿐만 아니라 계산 방법에 중점을두고 알고리즘을 설계 할 때 올바른 '방법'을 선택하거나 복잡한 클래스를 연구 할 때 다른 방법의 공간을 이해하려고합니다.
  4. 정식 표현의 가치. DFA는 표준 표현을 허용하는 데이터 구조의 전형적인 예입니다. 모든 일반 언어에는 고유하고 최소한의 DFA가 있습니다. 이는 최소한의 DFA가 주어지면 언어 포함, 보완 및 단어의 수용 확인과 같은 중요한 작업이 사소한 것임을 의미합니다. 표준 표현을 개발하고 활용하는 것은 알고리즘을 개발할 때 유용한 트릭입니다.
  5. 정식 표현의 부재. 정규 표현식 또는 NFA에 대한 정식 표현은 인정되지 않습니다. 따라서 위의 사항에도 불구하고 정식 표현이 항상 존재하는 것은 아닙니다. 컴퓨터 과학의 여러 영역에서이 점을 알 수 있습니다. 예를 들어, 제안 논리 수식에는 정규 표현이 없지만 ROBDD에는 정규 표현이 없습니다.
  6. 정식 표현의 비용. 알고리즘이 없는 점심 식사 정리 로 NFA와 DFA의 차이점을 이해할 수도 있습니다 . NFA간에 언어 포함을 확인하거나 보완하려는 경우 NFA를 결정하고 최소화 한 다음 계속할 수 있습니다. 그러나이 "감소"작업에는 비용이 듭니다. 컴퓨터 과학의 다른 여러 영역에서 비용으로 정식화의 예를 볼 수 있습니다.
  7. 무한대! = 결정할 수 없습니다. 일반적인 오해는 불의의 문제는 본질적으로 결정할 수 없다는 것입니다. 일반 언어에는 무한히 많은 문자열이 포함되어 있지만 몇 가지 결정 가능한 속성이 있습니다. 정규 언어 이론은 무한대 만 결정 불가능한 근원이 아니라는 것을 보여줍니다.
  8. 당신의 오토 마톤의 손바닥에 무한대를 두십시오. 유한 세트를 나타 내기위한 데이터 구조로 유한 오토 마톤을 순수하게 볼 수 있습니다. ROBDD는 부울 함수를 나타내는 데이터 구조로, 유한 세트를 나타내는 것으로 이해할 수 있습니다. 유한-자동은 ROBDD의 자연스럽고 무한한 확장입니다.
  9. 겸손한 프로세서. 최신 프로세서에는 많은 기능이 있지만 유한 한 자동 장치로 이해할 수 있습니다. 이 실현으로 인해 컴퓨터 아키텍처와 프로세서 디자인이 나에게 덜 위협이되었습니다. 또한 실제로 상태를 신중하게 구조화하고 조작하면 유한 한 오토마타를 사용하여 매우 멀리 갈 수 있음을 알 수 있습니다.
  10. 대수적 관점. 정규 언어는 구문 단일체를 형성하며 그러한 관점에서 연구 할 수 있습니다. 더 일반적으로, 나중의 연구에서도 계산 문제에 해당하는 올바른 대수 구조가 무엇인지 묻습니다.
  11. 조합 적 관점. 유한-자동은 레이블이있는 그래프입니다. 단어가 허용되는지 확인하면 레이블이 지정된 그래프에서 경로를 찾는 것이 줄어 듭니다. 오토마타 알고리즘은 그래프 변환에 해당합니다. 정규 언어의 다양한 하위 가족에 대한 오토마타의 구조를 이해하는 것이 활발한 연구 분야입니다.
  12. 대수 언어 조합은 삼각형을 좋아합니다. Myhill-Nerode 정리를 사용하면 언어로 시작하여 오토 마톤 또는 구문 단일체를 생성 할 수 있습니다. 수학적으로, 우리는 매우 다른 유형의 수학 객체 사이의 번역을 얻습니다. 이러한 번역을 염두에두고 컴퓨터 과학의 다른 영역에서 해당 번역을 찾아보고 응용 프로그램에 따라 다른 번역간에 이동하는 것이 유용합니다.
  13. 수학은 큰 그림의 언어입니다. 정규 언어는 NFA (그래프), 정규 표현식 (공식 문법), 읽기 전용 튜링 기계 (기계), 구문 단일체 (대수), 킨 대수 (대수), 모나드 2 차 논리 등으로 특징 지어 질 수 있습니다. 현상은 중요하고 영속적 인 개념에는 많은 수학적 특성이 있으며, 각각의 개념은 아이디어에 대한 이해에 다른 풍미를 가져옵니다.
  14. 일하는 수학자를위한 정리. Pumping Lemma는 다양한 문제를 해결하기 위해 활용할 수있는 이론적 도구의 훌륭한 예입니다. 기존 결과를 토대로 노력하는 것은 Lemmas와 함께 작업하는 것이 좋습니다.
  15. 필요합니다! = 충분합니다. Myhill-Nerode 정리는 언어가 규칙적이어야하는 필수 조건을 제공합니다. Pumping Lemma는 필요한 조건을 제공합니다. 두 가지를 비교하고 다른 상황에서 사용하면 수학 실습에서 필요한 조건과 충분한 조건의 차이를 이해하는 데 도움이되었습니다. 또한 재사용 가능 하고 충분한 상태는 사치 라는 것을 배웠습니다 .
  16. 프로그래밍 언어 관점. 정규 표현식은 프로그래밍 언어의 단순하고 아름다운 예입니다. 연결하면 순차적 구성의 유사체가 있고 Kleene 스타에는 반복 유사체가 있습니다. 정규 표현식의 구문과 의미를 정의 할 때 귀납적 정의와 구성 의미를보고 프로그래밍 언어 이론의 방향으로 나아가는 단계를 밟게됩니다.
  17. 컴파일러 관점. 정규식에서 유한 오토 마톤으로의 변환도 간단하고 이론적 인 컴파일러입니다. 정규식 읽기, 오토 마톤 생성 및 오토 마톤 최소화 / 결정의 차이로 인해 구문 분석, 중간 코드 생성 및 컴파일러 최적화의 차이점을 확인할 수 있습니다.
  18. 반복의 힘. 루프가 있고없는 루프로 유한 자동으로 수행 할 수있는 작업을 보면 반복의 힘을 이해할 수 있습니다. 이를 통해 회로와 기계 간 또는 기존 논리와 고정 소수점 논리 간의 차이점을 이해할 수 있습니다.
  19. 대수와 대수. 정규 언어는 대수적 구조 인 구문 단일체를 형성합니다. 유한 오토마타는 범주 이론의 언어에서 대수학 (calgebra)이라고하는 것을 형성합니다. 결정 론적 오토 마톤의 경우, 대수와 대 수학적 표현 사이를 쉽게 이동할 수 있지만 NFA의 경우에는 쉽지 않습니다.
  20. 산술 관점. 계산과 수 이론 사이에는 깊은 연관성이 있습니다. 당신은 이것을 수 이론의 힘 및 / 또는 계산의 보편성에 대한 진술로 이해하도록 선택할 수 있습니다. 유한 오토마타는 짝수의 심볼을 인식 할 수 있으며 괄호와 일치 할만큼 카운트 할 수 없다는 것을 알고 있습니다. 그러나 그들이 얼마나 많은 산술을 할 수 있습니까? 유한 오토마타는 Presburger 산술 공식을 결정할 수 있습니다. Presburger 산술에 대해 알고있는 가장 간단한 결정 절차는 수식을 자동으로 줄입니다. 이것은 힐버트의 10 번째 문제로 발전 할 수있는 한 가지 엿보기이며, 디오 판틴 방정식과 튜링 기계 사이의 연결을 발견하게 한 해결책입니다.
  21. 논리적 관점. 계산은 순전히 논리적 관점에서 이해할 수 있습니다. 유한 오토마타는 유한 단어에 대한 약한 모나 딕 2 차 논리를 특징으로 할 수 있습니다. 이것은 계산 장치의 논리적 특성에 대한 내가 가장 좋아하는 사소한 예입니다. 서술 적 복잡성 이론은 많은 복잡성 클래스에도 순전히 논리적 특성이 있음을 보여줍니다.
  22. 유한 한 오토마타는 상상도 못했던 곳에 숨어 있습니다. (코딩 이론과의 관련성에 대한 Martin Berger의 논평에 대한 힌트) 2011 년 노벨 화학상은 준결정 발견에 수여되었습니다. 준결정의 수학은 비 주기적 타일과 연결되어 있습니다. 비행기의 특정 비 주기적 타일링은 연 날리기 모양과 나비 넥타이 모양으로 구성된 Cartwheel Tiling이라고합니다. 이러한 모양을 0과 1로 인코딩 한 다음 패턴 시퀀스를 코딩하는 이러한 시퀀스의 속성을 연구 할 수 있습니다. 실제로 0에서 01로, 1에서 0으로 맵핑하고이 맵을 숫자 0에 반복적으로 적용하면 0, 01, 010, 01001 등이 표시됩니다.이 문자열의 길이는 피보나치 시퀀스를 따르는 지 확인하십시오. 이러한 방식으로 생성 된 단어를 피보나치 단어라고합니다. 펜로즈 타일링에서 관찰되는 특정 모양 시퀀스는 피보나치 단어로 코딩 될 수 있습니다. 이러한 단어는 자동 이론 이론적 관점에서 연구되었으며, 일부 단어 패밀리가 유한 오토마타에 의해 수용되는 것을 추측하고 심지어 Hopcroft의 최소화 알고리즘과 같은 표준 알고리즘에 대한 최악의 동작의 예를 제공합니다. 현기증이 있다고 말해주세요.

나는 계속할 수있었습니다. (그리고 계속해서) * 나는 머리 뒤로 오토마타를 가지고 있고 그것들을 매번 기억하고 새로운 개념을 이해하거나 높은 수준의 수학 아이디어에 대한 직관을 얻는 것이 유용하다는 것을 알게되었습니다. 위에서 언급 한 모든 내용이 강의의 첫 몇 강의 또는 첫 번째 강의에서 전달 될 수 있을지 의심됩니다. 이는 오토마타 이론 강좌의 초기 강의에 대한 초기 투자에 근거한 장기 보상입니다.

당신의 직책을 다루기 위해 : 나는 항상 깨달음을 추구하지는 않지만, 그렇게 할 때 유한 한 오토마타를 선호합니다. 목 마르다 내 친구


27
아름다운 목록. 오토마타는 Schuetzenberger가 개척 한 코딩 이론에 대한 흥미로운 관점을 제공하고 싶다고 덧붙이고 싶습니다. 또한, 동시성 및 프로세스 이론에 대한 현대 이론은 오토마타가 병렬로 구성되고 그들의 동작에 동기화 될 수있는 오토마타 이론의 일반화입니다.
Martin Berger

6
와. (마지막 문장은 + 0.5입니다. :-)
LarsH

6
+1하기 위해 TCS.SE에 가입했습니다.
Tynam

5
이 목록의 거의 모든 것을 알고 있지만 여전히 읽은 것에 대해 어떻게 든 깨달음을 느낍니다. (또한, (그리고 계속해서) *는 나를 괴롭 혔습니다.)
CA McCann

2
솔직히, 나는이 물건들 (그리고 내가 들어 본 적이없는 일부 이론)에 대해 전혀 생각하지 않았으며 계산 이론에 대한 과정을 밟았습니다. 이 계시를 지적하기 위해 특별히 훌륭한 교사 나 교과 과정이 있어야합니까?
Ken Bloom

33

N / DFA를 연구해야하는 좋은 이론적 이유가 많이 있습니다. 즉시 생각 나는 두 가지는 다음과 같습니다.

  1. 튜링 머신은 우리가 계산할 수있는 모든 것을 포착합니다. 그러나 튜링 기계의 어떤 부분이 "필수"인가? 튜링 기계를 다양한 방법으로 제한하면 어떻게됩니까? DFA는 매우 심각하고 자연스러운 제한 사항입니다 (메모리 가져 오기 ). PDA는 그다지 제한적이지 않습니다. 어떤 메모리가 당신에게 제공되는지, 그리고 당신이없이 그것을 할 때 어떤 일이 일어나는지 보는 것은 이론적으로 흥미 롭습니다. 그것은 나에게 매우 자연스럽고 기본적인 질문 인 것 같습니다 .

  2. 튜링 기계에는 무한 테이프가 필요합니다. 우리의 우주는 유한하기 때문에 어떤 의미에서든 모든 컴퓨팅 장치는 DFA입니다. 공부하는 것이 중요하고 또 자연스러운 주제 인 것 같습니다.

왜 DFA를 공부해야하는지 묻는 것은 정말로 흥미로운 것이 불완전 할 때 왜 Godel의 완전성 정리를 배워야 하는지를 묻는 것과 같습니다. 정리 .

그들이 오토마타 이론에서 첫 번째 주제 인 이유는 덜 복잡한 모드에서 더 복잡한 모드를 만드는 것이 당연하기 때문입니다.


2
# 1은 의미가 있고 그 이유를 알 것 같습니다. 그러나 FA로부터 '앞으로 나아가는'이유를 어떻게 설명하겠습니까? ToC에 대해 알고있는 사람들은 역으로 되돌아 갈 수 있으며 궁리 할 수도 있습니다. 오토마타 이론을 배우기 시작하고 FA 만 알고있는 학생들에게 '이유'를 설명하는 가장 좋은 방법은 무엇입니까? 우리는 하나의 비트 머신이 기본이기 때문에 시작한다고 말합니까? 왜 그렇습니까? 왜 '그것'이라고 대답 하는가? ToC에 대한 총 멍청한 놈에 대해이 질문에 대답 할 때 약간의 빛을 주셔서 감사합니다 :)
PhD

2
"앞으로"주장은 상태 머신이 아마도 가장 기본적인 컴퓨팅 장치라는 사실 (Sariel이 언급했듯이)에서 비롯됩니다. 당신은 상태에 있습니다 : 무언가가 일어난 다음 새로운 상태로 옮깁니다. 기계 학습에서 매우 중요한 마르코프 체인은 확률 론적 FSM 일뿐입니다.
Suresh Venkat

31

나머지 답변에 하나 이상의 관점을 추가하려면 : 실제로 튜링 머신과 달리 유한 오토마타로 작업을 수행 할 수 있기 때문입니다.

튜링 머신의 거의 모든 흥미로운 속성은 결정할 수 없습니다. 그러나 유한 오토마타와는 거의 모든 것이 decidable. 언어 평등, 포용, 공허함 및 보편성은 모두 결정 가능합니다. finite automata와 결합하면 생각할 수있는 거의 모든 작업에서 닫히고 이러한 작업은 계산 가능하므로 finite automata로하고 싶었던 모든 작업을 수행 할 수 있습니다.

즉, 유한 오토마타를 사용하여 무언가를 캡처 할 수 있으면이를 분석 할 수있는 많은 도구가 자동으로 제공됩니다. 예를 들어, 소프트웨어 테스트에서 시스템 및 해당 사양은 유한 오토마타로 모델링 될 수 있습니다. 그런 다음 시스템이 사양을 올바르게 구현하는지 자동으로 테스트 할 수 있습니다.

따라서 튜링 기계와 유한 오토마타는 사람들에게 흥미롭고 편재적인 대비를 가르쳐줍니다. 더 다루기 쉬운 힘과 함께 더 설명적인 힘이 함께 나옵니다. 유한 한 오토마타는 많은 것을 설명 할 수는 없지만 적어도 그들과 함께 할 수는 있습니다.


2
"... 튜링 머신과는 달리 유한 한 오토마타로 작업 할 수 있습니다." pt를 이해하십시오. 그러나 아이러니하게 들리거나 문맥에서 벗어난 의미는 없습니다 ...
vzn

27

상태. 당신은 유한 상태 공간으로 세계를 (특정 문제에 대해) 모델링 할 수 있고이 설정에서 계산에 대해 생각할 수 있다는 것을 배워야합니다. 이것은 간단한 통찰력이지만 프로그래밍을 할 때 매우 유용합니다. 상태를 반복해서 반복하게 될 것이며 FA는 당신에게 생각할 수있는 방법을 제공합니다. 나는 이것이 완전한 수업을 가르치기에 충분한 변명이라고 생각합니다. 물론 국가는 결정 론적이거나 비결정론적일 수있다. 따라서 DFA와 NFA는 서로 전환 할 수 있습니다.

두 번째로 배울 것은 Halting 정리입니다. 그것은 고델 불완전 성 정리와 관련이 있습니다. (모든 것을 계산할 수있는 기계를 만들 수 없으며, 증명하거나 반증 할 수없고 공리로 간주해야하는 수학적인 주장이 있습니다. 즉, 우리는 유한 한 설명이나 실제가없는 세상에 살고 있습니다 오라클-그래 우리를 위해!)

자, 저는 수학에서 저학년을했고, 왜 당신이 배우고 있는지 전혀 모르는 것들 (그룹 이론, 이론 측정, 이론 설정, 힐버트 공간 등)을 배우는 아이디어에 익숙해졌습니다. , BTW]). 배우는 방법을 배우는 것에 대해 이야기 할 것이 있습니다. 다음에 기괴한 수학을 배우어야합니다 (실제 세계에서 무언가를하기 위해 그것을 사용해야하기 때문에). 특히 세 번째로 배우는 것은 수학적 성숙도입니다. 사물에 대해주의 깊게 논쟁하고, 증거가 정확한지 아닌지를 알고, 증거를 적는 등입니다. 이미 가지고 있다면이 과정은 쉬우 며 너무 신경 쓰지 않아도됩니다. 많은 이유를 배우고 있습니다.

이것들을 제외하고, 코스는 다른 모든 것과 마찬가지로 시간 낭비입니다. 특히, 당신은이 물건을 몰라도 행복한 삶을 살 수 있습니다. 그러나 이것은 문자 그대로 모든 지식에 해당됩니다. 다소간. 저에게있어 대학교 과정은 배운 후에 세상을 다르게 본다면 그만한 가치가 있습니다. 이것은 내가 세상에 대해 생각하는 방식을 바꾼 과정 중 하나입니다. 무엇을 더 요청할 수 있습니까?


21

비록 그들이 원래 연구 된 이유는 아니지만, 유한 오토마타와 그들이 인식하는 정규 언어는 더 복잡한 수학 이론을위한 빌딩 블록으로 사용되기에 충분히 다루기 쉽다. 이와 관련하여 특히 자동 그룹 (요소가 일반 언어로 문자열로 표현 될 수 있고 그룹 생성기 별 요소 제품이 유한 상태 변환기에 의해 계산 될 수있는 그룹) 및 sofic 서브 시프트 (이동 범위의 서브 시프트) 금지 된 단어는 일반 언어를 형성합니다). 따라서 컴퓨터 과학보다는 순수한 수학에 관심이 있더라도 공부해야 할 이유가 있습니다.

유한 오토마타는 다른 종류의 객체에 대한 알고리즘 설계에도 사용되었습니다. 예를 들어, 1 차원 셀룰러 오토 마톤의 가역 여부를 테스트하기위한 Culik 알고리즘 에는 특정 NFA의 속성을 구성, 수정 및 테스트하는 것이 포함됩니다. 그리고 Natarajan1986 년 FOCS 논문 은 기계식 조립 라인 설계에서 특정 오토마타에 대한 계산으로 축소함으로써 특정 문제를 해결하는 방법을 보여주었습니다.


18

당신은 (적어도) 두 가지 다른 질문을합니다 : (a) 요즘 유한 오토마타에 이론의 어떤 부분이 있습니까? (ᄂ) 처음에 유한 오토마타가 개발 된 이유는 무엇입니까? 후자를 해결하는 가장 좋은 방법은 다음과 같은 오래된 논문을 보는 것입니다.

처음 두 단락은 다음과 같습니다.

튜링 머신은 디지털 컴퓨터의 추상 프로토 타입으로 널리 알려져 있습니다. 그러나 현장 작업자들은 튜링 머신의 개념이 실제 컴퓨터의 정확한 모델로 사용하기에는 너무 일반적이라는 생각이 점점 더 많이 느껴졌습니다. 간단한 계산의 경우에도 튜링 머신이 주어진 계산에 필요한 테이프의 양에 대해 사전에 상한값 을 부여하는 것이 불가능하다는 것은 잘 알려져 있습니다. Turing의 개념을 비현실적으로 만드는 것은 바로이 기능입니다.

지난 몇 년 동안 유한 오토 마톤에 대한 아이디어가 문헌에 나타났습니다. 이들은 메모리와 계산에 사용될 수있는 한정된 수의 내부 상태를 가진 머신입니다. 유한에 대한 제한은 물리적 기계의 아이디어에 더 근사한 것으로 보입니다. 물론 이러한 기계는 튜링 기계만큼 많은 기능을 수행 할 수 없지만, 임의의 일반적인 재귀 함수를 계산할 수 있다는 이점은 의문의 여지가 있습니다. 이러한 함수 중 일부는 실제 응용 분야에서 발생하기 때문입니다.

요컨대, 그들은 유한 자원을 가진 실제 컴퓨터의 모델로 개발되었습니다.


16

또 다른 이유는 그것들이 비교적 실용적인 이론적 모델 이기 때문입니다 . 무한 테이프의 불가능 함과는 별개로 튜링 머신은 컴퓨터를 프로그래밍하는 것과는 조금 어색합니다 (이것은 처음에는 좋은 비유가 아닙니다!). 그러나 PDA와 DFA는 PDA / DFA 디자인이 종종 실제 프로그램으로 쉽게 전환 될 수 있다는 점에서 실제 프로그램의 모델이되기 쉽다. 예를 들어 컴파일러 디자인은 광범위하게 사용합니다. 따라서 이론과 실습 사이의 이러한 연결 지점에서, 우리는 그것이 어떻게 연결되고, 우리가 할 수있는 것과 할 수없는 것에 대한 핸들을 얻습니다.


10

여기에 "생활 이진 가산기"게임을 체크 아웃 : http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html 나는 DFA에 대한 초기 장에서 학생들이 게임을 제공하는 데 사용 / NFA. 오토마타 이론에서 중요한 두 가지를 설명합니다.

  1. 정신 과정을 간단한 기계 과정으로 변환하는 방법
  2. 추상화가 실제로 의미하는 것. 위의 C 및 Z 상태와 같은 두 가지 상태는 컴퓨터의 트랜지스터, 유압 메커니즘 또는 두 개의 인간 플레이어가 될 수 있습니다!

이것은 때때로 학생들에게 "Aha"순간을 가져옵니다.


9

DFA의 개념은 여러 유형의 문제에 대한 효율적인 솔루션을 설계하는 데 매우 유용합니다. 한 가지 예는 네트워킹입니다. 모든 프로토콜은 상태 머신으로 구현 될 수 있습니다. 이 방법으로 솔루션을 구현하면 코드가 단순하고 단순 해져 결함률이 낮아집니다. 또한 코드 변경이 더 쉽고 더 적은 영향을 미치며 결함 비율이 다시 낮아짐을 의미합니다.

어떤 사람들은 네트워크 프로토콜을 상태 머신으로 보는 것이 어렵다고 생각하지만 점프를 할 수있는 사람들은 노력에 대한 수익면에서 매우 보람을 느낍니다.


매우 섭취하는 것처럼 들리지만 좀 더 설명해 주시겠습니까? 네트워크 프로토콜을 상태 머신으로 상상 하기 어렵습니다. 감사합니다.
hkoosha

3

실제로, 학생들은 유한 오토마타에서 한 학기 동안 많은 학기를 보내고 마침내 튜링 머신에 도착한 후 정확하게 이것을 묻습니다. 더 강한 형식을 사용할 수있을 때 더 약한 형식에 많은 시간을 소비하는 이유는 무엇입니까? 따라서 표현력과 분석 복잡성의 본질적인 상충 관계에 대해 설명합니다. 더 풍부한 모델은 일반적으로 분석하기가 더 어렵습니다. DFA 대 TM 이분법은 멤버쉽 문제가 사소하고 다른 사람에게는 계산할 수 없기 때문에 극단적입니다. 덜 극단적 인 예는 DFA 대 PDA입니다. 후자의 회원 문제는 효율적으로 해결할 수있는 것으로 판명되었지만 해결책은 결코 사소한 것이 아닙니다. 우리는 많은 수학과 과학 분야에서 이러한 현상이 발생하는 것을 본다. 가능한 한 완전한 이해를 얻기 위해 간단한 모델을 연구하면 보통 더 복잡한 모델에 대한 통찰력을 얻는다.


-4

튜링 머신보다 FM을 "더 적게"호출하는 답변이 여러 개 있습니다.

Post-grad 클래스의 주요 초점은 차이점이 아니라 동등성에 있습니다. 우리가 연구 한 모든 FSM 모델에 대해, 우리는 Turing Machines와 동등 함을 증명해야했습니다. 이는 FSM에서 Turing Machine을 구현하여 수행됩니다. IIRC에서는 TM을 구현하지 않는 다른 컴퓨팅 모델도 연구했지만 그 모델을 잊었습니다. 요점은 TM을 구현할 수 있으면 실행중인 문제에 대해 충분히 큰 테이프 아날로그가 주어지면 모델에서 TM 프로그램을 실행할 수 있다는 것입니다.

이 질문에 대한 답은 TM은 기본 계산 모델이지만 유용한 기계를 만들 때 실용적이지는 않습니다. 따라서 FSM 모델.

거의 동시에 (1984 년), 나는 FORTH 언어를 발견했을 때 이것은 본질적으로 나에게 집으로 돌아왔다. 실행 엔진은 듀얼 스택 PDA의 순수한 구현을 기반으로 구축되었습니다. 더 깊이 들어가면 표현식 컴파일러에서 동일한 엔진을 좋아합니다.

비록 FSM의 진정한 영향은 제가 18 세 때 Trakhtenbrot와 Korzynski (?)가 쓴 "Finite Automata 이론"을 발견 한 것이 었습니다.


1
비 결정 론적 유한 오토마타와 튜링 머신의 동등성을 입증하지는 않았다고 가정합니다. OP가 요구 한이 특정 대상이며 우리 중 나머지는 "더 적은"전화를합니다.
Vijay D

2
FA는 FSM과 동일하지 않습니다.
Suresh Venkat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.