추상 기계와 컴퓨터 구조 간의 격차를 해소 하는가? [닫은]


11

나는 항상 튜링 머신과 같은 추상 머신과 가상 머신의 아키텍처, 폰 뉴만의 아키텍처를 포함한 컴퓨터 아키텍처 사이에서 단절된 느낌이 듭니다. 그래서 나는 그들이 어떻게 관련되어 있는지 알고 싶습니다. 한 사람이 다른 사람에게 어떤 영향을 미칩니 까? 참조도 감사합니다. 감사.


7
튜링 머신은 계산 가능성 에 대한 이론적 컴퓨터 과학 모델 입니다. 마찬가지로 람다 미적분학은 계산을위한 컴퓨터 과학 모델이지만 프로그래밍 언어 설계에서 실제 응용 프로그램을 찾았습니다. 람다 미적분학, 튜링 머신 및 실제 컴퓨터는 계산할 있는 작업과 관련하여 서로 동일하지만 작동 방식이 완전히 다릅니다. 특히 이러한 이론적 계산 모델은 실제 하드웨어가 효율적으로 수행 할 수있는 기능을 설명하지 않습니다.
amon

2
@amon 이미 대부분의 답변을 작성한 것 같습니다. 왜 코멘트에 "낭비"해야합니까?

다른 사람들이 지적했듯이, "컴퓨터"에 대한 몇 가지 수학적 모델이 있습니다. 원하는 경우 RAM 머신 ( Wikipedia link )을 살펴 봐야 합니다. 튜링 머신보다 실제 하드웨어에 더 가깝습니다.
Lorenzo Dematté

답변:


23

튜링 머신 및 이와 유사한 "머신"은 계산 모델이며 다음과 같은 문제를 조사하기위한 것입니다.

  • 계산할 수있는 것
  • 문제의 복잡성 클래스
  • 복잡성 클래스 간의 관계
  • 무언가를 계산하는 다양한 방법의 동등성

이를 위해서는 기계 자체가 가능한 단순해야합니다. 프로그래머의 편의성이나 성가신 구현 문제는 중요하지 않습니다. 왜냐하면 수학적 대상이며 직접 작성된 프로그램은 거의 없기 때문입니다.

반대로, 가상 머신 아키텍처와 실제 실리콘 기반 머신 아키텍처는 주어진 프로그램실행하는 데 중점을 둡니다 . 기계는 위의 문제에 대해 필요한 것보다 더 복잡하게 만들어졌으며, 흥미로운 일을하기 위해 더 적은 (그리고 더 명백한) 지시가 필요합니다. 아니 너무 그들은 여전히 이해 (효율적으로 구현 가능한) 일 필요로 복잡하지만, 더 복잡.

따라서 두 가지 접근 방식은 근본적으로 상충됩니다. 둘 다 컴퓨터 과학 분야에있는 것 외에도 서로 관련이 없습니다.


1
감사. 그러나 " 튜링 머신과 가상 머신과 유사한 범용 튜링 머신 "을 찾았습니다 . 이는 관계를 암시하지만 세부 사항은 없습니다.
Tim

4
@Tim 나는 튜링 머신을 추상 머신의 개념을 도입하기위한 출발점으로 삼은 다음, 더 유용한 추상 머신으로 빠르게 넘어 간다고 생각합니다.

4

주요 관계는 물리적 구성에서 이론적 구성을 시뮬레이션 할 수 있다는 것입니다.

물리적 인 것이 이론적 인 것의 모든 것을 할 수 있다는 사실은 이론적 인 기계의 이론적 인 테스트와 분석이 현실 세계에서 구현 가능한 것으로 인식 될 수있는 능력을 낳습니다.

정지 문제는 튜링 머신에서 해결할 수없는 것으로 보여진 것의 완벽한 예이며, 튜링 머신의 증거에 의해 튜링 머신의 법칙을 위반하는 실제 머신에서는 해결할 수없는 것으로 알려져 있습니다.

종이에 기록하여 계산하고 계산하여 물건을 합산하는 것의 차이점은, 계산의 현실이 종이에 대한 합산을 수행하는 것과 동일한 규칙을 충족한다는 것이 입증되었습니다. 따라서 물건의 물리적 계산을 시뮬레이션하면 결과가 실제 세계에 적용 가능한 것으로 인식되므로 결과를 내기 위해 물리적 돈을 계산할 필요없이 계산을 정신적으로 시뮬레이션하여 사탕 막대 2 개가 얼마나 많은지 알 수 있습니다.

사람들은 현재 "Quantum Turing Machine"으로 알려진 이론적 모델의 분석 및 테스트를 수행하여 양자 컴퓨팅 머신에서 어떤 기능을 사용할 수 있는지 확인하고 있습니다. 모델의 실제 버전이 지나치게 비싸고, 드문 경우이며, 현재 구현이 여전히 부족한 경우 사람들이 이러한 모델로 작업하는 것이 좋습니다. 이론적 모델은 물리적 구현이 개선 될 때 수행 할 수있는 작업을 보여주기 위해 사용됩니다.


1

그들은 우주 왕복선이 당신이 숨을 불어 넣은 풍선과 관련이있는 것과 거의 같은 방식으로 관련되어 있습니다.

어떤 방향으로 무언가를 추진하여 반대 방향으로 무언가를 추진하는 기본 원리가 있습니다.

그것이 유사점이 끝나는 곳입니다.


1

나는 이론적 기계가 실제 계산과 수학의 격차를 메우는 것으로 본다. 튜링 머신은 실제 아키텍처 또는 프로그래밍 언어를 시뮬레이션 할 수있을 정도로 강력하며, 쉽게 시뮬레이션 할 수있을 정도로 단순하며, 가장 중요한 것은 합리적으로 간단한 수학적 추론 및 증거의 주제가 될 수있을만큼 간단합니다.


1

계산 의 정의 가 "컴퓨터가하는 일"이 아님 을 아는 것이 중요합니다 . 계산은 컴퓨터보다 이전 버전입니다. 컴퓨터는 컴퓨터 를 정의하기 때문이 아니라 계산 작업을 돕기 위해 만들어 졌기 때문에 이름이 부여되었습니다 .

따라서 튜링 머신은 컴퓨터 작동 방식이 아닙니다. 문제가 계산 가능한지 여부 , 즉 공식적인 논리 / 수학적 프로세스로 해결할 수 있는지 여부 입니다. 그 프로세스가 어떻게 구현 될 수 있는지에 대해서는 아무 것도 말하지 않습니다. 계산 가능한 경우 충분한 시간이 주어지면 연필이나 종이로 컴퓨터를 사용하거나 튜링 완료 로 표시 될 수있는 모든 시스템을 사용하여 (중요한 사항) 연필로 종이로 해결 해야합니다 .

따라서 튜링 머신은 두 가지 중요한 작업을 수행합니다.

  1. 모든 문제 / 작업의 계산 가능성에 대한 테스트를 제공합니다.
  2. 시스템이 계산 가능한 작업을 계산할 수 있는지 보여주는 테스트를 제공합니다.

첫 번째 요점은 실제 구현에 방해가되지 않고 문제에 대해 생각할 수있게합니다. 실제 하드웨어는 종종 튜링 머신이 무한한 자원을 가지고 있기 때문에 메모리 나 저장 공간이 부족하면 어떻게됩니까? 튜링 머신을 위해 입증 가능한 이론적 솔루션을 개발 한 다음 누군가가해야 할 일은 주어진 아키텍처에서 작동하는 것으로 변환하는 것입니다.

두 번째 요점은 다양한 테스트를 수행하지 않고도 구현 기능을 확인할 수 있습니다. Turing Machine을 시뮬레이션 할 수 있으면 Turing Machine이 수행 할 수있는 모든 작업을 수행 할 수 있습니다. 튜링 머신은 계산 가능한 모든 것을 계산할 수 있으므로 그렇게 할 수 있습니다.

즉, 튜링 머신과 실제 컴퓨터 아키텍처 (가상 가상 아키텍처) 사이의 관계는 계산할 수있는 한 가지 일뿐입니다.

Von Neumann의 아키텍처는 효과적인 범용 전자 디지털 컴퓨터를 위한 디자인 템플릿을 만들려는 시도였습니다 . 튜링의 연구는 타당성의 증거를 제공했다


-1

생각해 보면, 아키텍처는 추상적 인 기계입니다. 그들은 신중하게 만들어진 실리콘 덩어리가 어떻게 동작해야하는지 설명한다. 아키텍처와 튜링 머신의 차이점은 근본적인 접근 방식의 변화보다 규모의 문제입니다.

튜링 기계의 장점은 튜링 기계를 사용하여 매우 쉽게 사용할 수있는 유용한 증거가 있다는 것입니다. 튜링 머신을 시뮬레이션 할 수있을만큼 강력한 모든 머신이 튜링 머신 (duh)으로 발생할 수있는 모든 문제를 해결할 수 있음을 증명하는 것은 간단합니다. 그러나 Computable 함수 를 정의하면 더욱 흥미로워집니다 . 계산 가능한 함수에 대한 많은 호환 가능한 정의가 있음이 밝혀졌습니다. 모든 동작을 계산 가능한 함수로 정의 할 수 있으면 튜링 머신에서 시뮬레이션 할 수 있습니다.

LISP 스타일 프로그램을 직접 지원하는 아키텍처와보다 절차적인 x86과 같은 아키텍처가 있다고 가정하겠습니다. 친구는 "LISP가보다 표현력이 뛰어 나기 때문에이 컴퓨터에서 x86으로 작성할 수없는 프로그램을 작성할 수 있습니다"라고 말합니다. 이것은 반대하기에 잔인합니다 (특히 LISP를 충분히 알지 못하기 때문에). 그러나 튜링 머신과 같은 여러 추상 머신을 남용 할 수 있습니다.

  • LISP 머신은 멋지지만 람다 미적분으로 환원 할 수 있습니다. 친구가 열심히 고개를 끄덕입니다. 람다 미적분학은 기능 프로그래머에게 약간의 컬트입니다.
  • 내 x86은 훌륭 할 수 있지만 할 수있는 모든 작업은 레지스터 시스템으로 환원 할 수 있습니다. 다시 한 번, 친구의 질문은 없습니다. 현대 컴퓨터 이론에서 레지스터는 매우 화제가됩니다!
  • 모든 레지스터 머신은 해당 레지스터 머신을 시뮬레이션하는 Turing 머신으로 모델링 할 수 있습니다. 이제 친구는 왜 당신이 펀치 테이프 시대로 돌아가고 있는지 궁금해합니다.
  • 람다 미적분 기계도 Turing 기계로 줄일 수 있습니다. * 친구는 반대하지만 교회 튜링 논문을 가리키며 부끄러워합니다.
  • 따라서 내 x86 상자는 멋진 LISP 기반 시스템으로 할 수있는 모든 작업을 수행 할 수 있습니다!

물론 다른 많은 예들이 있습니다. Conway의 Game of Life는 Turing이 완료된 것으로 입증되었으며 이론적으로 컴퓨터가 할 수있는 모든 것을 할 수 있습니다. 가장 쉬운 방법 은 Life에서 Turing 기계 를 만드는 것 입니다 . 나는 이것이 당신이 리터럴 아키텍처로 취급되는 추상 기계라고 부르는 경우이기 때문에 이것을 제기합니다! Life에서 컴퓨팅에 대한 주장이 추상적 모델의 도움없이 얼마나 어려울 지 상상할 수 있습니다 (x64를 모델링하지 않고 캐시 엿보기로 완성한 것은 Life가 컴퓨팅 가능하다는 것을 증명하기 위해 확실합니다!)


결국 아키텍처와 추상 머신의 큰 차이점은 아키텍처가 일반적으로 성능과 관련이 있다는 것입니다. 아키텍처는 무언가를 얼마나 빨리 할 수 ​​있는지 알고 싶어합니다. 추상 기계는 가능한지 아는 것으로 만족하는 경향이 있습니다. von Neuman 상태 머신 용으로 개발 된 Universal Constructor를 고려하십시오 . UC 작동 할 수 있다는 것을 증명하는 것으로 충분했으며 , 저자가 실제로 그것을 볼 수있는 충분한 컴퓨팅 능력을 가지고 있지 않다는 것을 신경 쓰지 마십시오.

가격 아키텍처는 그들이 얼마나 빨리 작동 할 수 있는지를 보여주기 위해 비용을 지불 한다 . 모든 것을 계산할 수 있다는 것을 증명하는 것은 굉장히 어렵다는 것이다 . 이를 위해 아키텍처는 다시 돌아가서 추상 머신을 사용하기 시작합니다.


1
주어진 추론 예제가 기술적으로 정확하지 않습니다. 만약 튜링 머신이 레지스터 머신이나 x86 마인이 할 수있는 모든 것을 할 수 있다고 말하더라도, 반드시 x86 머신이 레지스터 머신이나 튜링 머신이하는 모든 것을 할 수있는 것은 아닙니다 할 수있다. 이에 반해 예로서, 유한 오토 마톤은 튜링 기계로 축소 될 수 있지만 람다 미적분 또는 LISP와 동등하지는 않습니다. 방향성 문제- "내 x86 상자가 멋진 LISP 기반 시스템으로 할 수있는 모든 작업을 수행 할 수 있습니다"라고 표시하려면 x86에서 Turing으로가 아니라 Turing에서 x86으로의 축소가 필요합니다.
Peteris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.