당신이 가정하는 경우 -calculus는 함수형 프로그래밍 언어의 좋은 모델입니다, 다음 사람은 생각 다음 -calculus 시간 복잡도의 단순 해 보이는 개념이 있습니다 단지의 수를 계산 - 환원 단계를 .λλβ(λx.M)N→M[N/x]
그러나 이것이 좋은 복잡성 측정입니까?
이 질문에 대답하기 위해, 우선 복잡성 측정의 의미를 명확히해야합니다. Slot과 van Emde Boas 논문 은 하나의 좋은 해답을 제시 합니다. 좋은 복잡성 측정은 Turing 기계를 사용하여 정의 된 시간 복잡성의 표준 개념과 다항식 관계를 가져야합니다. 다시 말해, -calculus 항에서 Turing 기계에 이르기까지 을 인코딩하는 '합리적인'이 있어야합니다 예를 들어 일부 다항식 의 경우 , 크기 의 각 항 에 대해: 의 값으로 감소 - 환원 단계를 정확히 값에에 감소tr(.)λpM|M|Mp(|M|) βtr(M)p(|tr(M)|)튜링 머신의 단계.
오랫동안 이것이 λ- 미적분에서 달성 될 수 있는지는 불분명했습니다. 주요 문제는 다음과 같습니다.
- 지수 크기의 정규형 (다항식 단계로)을 생성하는 항이 있습니다. 정상적인 형태를 쓰더라도 지수 시간이 걸립니다.
- 선택한 축소 전략이 중요한 역할을합니다. 예를 들어, 다항식 수의 병렬 β- 단계 ( 최적의 λ- 감소 의 의미에서 )를 감소 시키지만 복잡성이 비 기본적 (지수보다 나빠짐) 인 용어 군이 존재합니다 .
B. Accattoli와 U. Dal Lago 의 논문 " Beta Reduction is Invariant, Indeed "는 가장 왼쪽에있는 이름 별 호출 감소를 가정하여 다항식 시간 함수 의 복잡성 클래스 P 를 보존하는 '합리적인'인코딩을 보여줌으로써 문제를 명확하게합니다. . 중요한 통찰력은 지수 분출이 '분별없는'이유에서만 발생할 수 있다는 것입니다. 다시 말해, 클래스 P 는 Turing machine steps 계산 또는 (가장 왼쪽) -reductions 를 정의하든 관계없이 동일합니다 .β
다른 평가 전략의 상황이 무엇인지 잘 모르겠습니다. 공간 복잡성에 대해 비슷한 프로그램이 수행되었음을 알지 못합니다.