카테고리 보관물: cs

cs

튜링 머신의 실질적인 중요성? 대학에서 단 하나의 CS 과정

저는 전기 기술자이며 26 년 전 대학에서 단 하나의 CS 과정 만있었습니다. 그러나 나는 또한 헌신적 인 Mathematica 사용자입니다.

나는 Turing Machines가 컴퓨터 과학에서 매우 중요하다는 것을 알고 있습니다. 컴퓨터 과학 이론에서만 중요한가? 실질적인 영향 / 응용이있는 경우 그 중 일부는 무엇입니까?



답변

튜링 머신의 중요성은 두 가지입니다. (하지 않을 경우 첫째, 튜링 기계는 최초의 일이었다 1936 둘째, 이론적 컴퓨터 과학의 많은에서 컴퓨터, 데이트 이론적 모델을 염두에 튜링 기계를 개발하고, 기본적인 결과의 많은 그래서되었습니다 첫째가) 튜링 기계의 언어로. 이에 대한 한 가지 이유는 튜링 기계가 단순하고 분석하기가 용이하기 때문입니다.

즉, 튜링 머신은 실제 컴퓨팅 모델이 아닙니다. 엔지니어와 Mathematica 사용자는 전혀 걱정하지 않아도됩니다. 이론적 인 컴퓨터 과학 커뮤니티에서도 알고리즘 및 데이터 구조 영역에서보다 현실적인 RAM 시스템이 사용됩니다.

실제로 복잡도 이론의 관점에서 튜링 기계는 다른 많은 기계 모델과 다항식으로 동일하므로 P 및 NP와 같은 복잡성 클래스를 이러한 모델의 관점에서 동등하게 정의 할 수 있습니다. (다른 복잡성 클래스는 더 섬세합니다.)


답변

튜링 머신은 계산을위한 초기 모델 중 하나였습니다. 즉 계산 자체가 잘 이해되지 않았을 때 (1940 년경) 개발되었습니다. 나는 그 당시에 그들이 선호하는 모델이되게했던 두 가지 측면에 초점을 맞추고 자하는데, 그 결과 가장 확립 된 표준 모델이되었다.

  1. 입증의 단순성
    이론 모델로서, 튜링 기계는 현재 기계 상태가 일정한 크기만을 갖는다는 점에서 “단순”하다는 매력을 가지고 있습니다. 다음 머신 상태를 결정하는 데 필요한 모든 정보는 하나의 심볼과 하나의 (제어) 상태 번호입니다. 머신 상태로의 변경은 똑같이 작으며 머신 헤드의 움직임 만 추가합니다. 이를 통해 (공식) 증명, 특히 구별되는 사례 수가 상당히 단순 해집니다.

    이 측면을 RAM 모델과 비교하십시오 (최소한 형식으로 사용되지 않는 경우). 다음 작업은 여러 개의 작업 하나 일 수 있으며이 작업은 임의의 (2) 레지스터에 액세스 수 있습니다 . 여러 제어 구조가 있습니다.

  2. 런타임 및 공간 사용
    Turing Machine과 거의 동시에 발생하는 두 가지 주요 계산 모델, 즉 Church의 calculus 및 Kleene의 recursive 함수가 있습니다. 그들은 튜링이 힐버트의 Entscheidungs 문제로했던 것과 같은 질문에 대답 했지만, 런타임과 공간 사용을 정의하는 데 훨씬 덜 쉽게 빌려 주었다 . 어떤 점에서는 그것들이 너무 추상적이기 때문에보다 현실적인 기계 모델과 관련이 없습니다.

    λ

    μ

    그러나 튜링 기계의 경우 두 가지 개념을 쉽게 정의 할 수 있습니다. 실제로 작업을 수행하는 데 효율성 에 대한 고려 가 곧 매우 중요 했기 때문에 이것은 튜링 머신의 확실한 이점이었습니다.

따라서, 튜링 기계로 설립 된 역사 “사고”와 주요 속성 중 일부의 조합으로 볼 수 계산 모델. 그럼에도 불구하고, 특히 튜링 머신의 단점을 극복하기 위해 많은 모델이 정의되어 열렬히 사용되었습니다. 예를 들어, 그들은 “프로그램”(즉, 정의)하기가 지루합니다.

실제 적용되는 직접적인 응용 프로그램은 없습니다. 특히, 계산 실습은 계산 이론과 병행하여 (그리고 처음에는 대부분 독립적으로) 발전했다. 프로그래밍 언어 공식적인 기계 모델없이 개발 되었습니다 . 그러나 이론에 의해 계산 실습의 많은 발전이 가능하다는 것이 (후시) 분명하다.

또한 이론적 개념이 실제로 가져 왔던 가치는 모든 후손, 즉 후속 작업, 결과 및 그 개념에 의해 가능해진 새로운 아이디어 를 고려하여 측정해야한다는 점 을 명심하십시오. 그런 점에서 튜링 기계의 개념 (다른 것들 중에서)이 세계를 혁명적으로 만들었다 고 말하는 것이 공정하다고 생각합니다.


답변

내가 생각할 수있는 합리적이고 실용적인 응용 프로그램은 (튜링 머신을 실제로 구현할 수 있다는 의미에서) 일종의 언어가 충분한 힘을 가지고 있음을 증명하는 것입니다.

어떤 종류의 프로그래밍 언어 (또는 무언가를 계산하기위한 것)를 디자인하는 경우 Turing 기계를 구현하여 Turing-complete (즉, 계산 가능한 모든 것을 계산할 수 있음)인지 확인하고 싶을 것입니다 그 안에.

물론 C 또는 조합 논리와 같이 Turing-complete 인 다른 것을 구현할 수도 있지만 때로는 Turing 머신이 가장 쉬운 옵션입니다.


답변

튜링 머신은 수학적 계산 모델입니다. 장점은 다음과 같습니다.

1. 결정 가능 여부 확인 TM이 계산 가능한 시간 내에 문제를 해결할 수없는 경우 해당 문제를 해결할 수있는 알고리즘이있을 수 없습니다 (문제는 결정할 수 없습니다).

TM이 모든 유한 길이 입력에 대해 셀 수있는 시간에 멈춘 경우 결정 문제의 경우, 셀 수있는 시간의 알고리즘으로 문제를 해결할 수 있다고 말할 수 있습니다.

2. Classify Problem TM은 결정 가능한 문제를 다항 계층의 클래스로 분류하는 데 도움이됩니다.

문제가 결정 가능한 것으로 나타났습니다. 그렇다면 목표는 얼마나 효율적으로 해결할 수 있습니까? 효율은 단계 수, 사용 된 추가 공간, 코드 길이 / FSM의 크기로 계산되었습니다.

3. Practical Machines TM의 알고리즘 설계 및 구현 TM은 다른 실제 기계에서 알고리즘 아이디어를 전파하는 데 도움이됩니다. 1,2 기준을 성공적으로 확인한 후 실제 장치 / 컴퓨터를 사용하여 알고리즘을 설계하고 구현할 수 있습니다.


답변

튜링 기계는 실용성이 거의없는 좋은 운동입니다. 없어도 해가 없습니다. 튜링 기계의 모든 응용은 증명되거나 반박 할 수 없기 때문에 직관적이거나 종교적인 문제입니다.


답변