복잡성 이론에서 언어를 사용하는 이유


10

방금 계산 이론에 들어가기 시작했습니다. 계산 이론은 얼마나 많은 메모리를 사용하고 어떤 계산 모델을 사용하여 얼마나 빨리 계산할 수 있는지 연구합니다.

나는 매우 기본적인 질문을 가지고 있지만 실제로 여러분 중 일부는 그 개념을 이해하는 데 도움이되기를 바랍니다.

왜 모든 것이 LANGUAGES의 개념과 정의 (즉, 일반 언어와 문맥없는 언어)에 집중되어 있습니까? 그리고 그것들은 알고리즘의 복잡성과 그것들을 해결하기 위해 가능한 계산 모델을 어떻게 연관시키고 묘사합니까?

이러한 종류의 관련 질문을 읽었습니다.

그러나 그들이 왜 중요한지에 대한 실질적인 타당성을 제공하기 때문에 (내가 이해하는) 여전히 복잡한 이론에 근거한 이유를 이해하는 데 도움이되지 않기 때문에 여전히 내 의심에 대한 답이 없다.


1
이것이 우리의 참고 질문에 포함되지 않습니까?
Raphael

@Raphael-그 질문을 지적 해 주셔서 감사합니다. 훌륭한 참고 자료입니다! 나는 지금 그것을 읽고 있지만 현재로서는 이것이 질문 cs.stackexchange.com/questions/13669/…에 대한 부록이 될 수 있다고 생각합니다 . 이미 답변이되어있는 것 같지 않습니다. 달리 얇은 경우 알려주십시오.
Matteo

3
언어는 유한 길이 문자열의 집합 일 뿐이며, 유한 문자열을 1 또는 0에 매핑하는 함수와 동일합니다. 따라서 실제로 "결정 문제에 대한 복잡한 이론이 왜 그렇게 많은지"를 묻는 것입니다. 가장 간단한 (사소한) 종류의 계산 작업과 종종 더 복잡한 계산 작업을 의사 결정 문제로 줄일 수 있습니다.
Sasho Nikolov

답변:


10

언어는 우리가 "문제"의 개념을 공식화하는 가장 좋은 방법 일 뿐이 기 때문입니다.

알고리즘 (Turing Machine)은 성능이 뛰어나며 복잡성을 크게 표현합니다. 문제 (언어)는 복잡성 클래스에 속합니다. 이들은 일반적으로 존재에 의해 정의 됩니다. 주어진 성능 (공간 또는 시간)에서 실행 되는 언어 을 허용하는 기계가 존재 하면 해당 언어는 해당 복잡도 클래스에 속합니다.L

여기에는 몇 가지 이유가 있습니다. 첫째, 언어는 플랫폼에 독립적입니다. 정수가 32 비트인지 64 비트인지 또는 부동 소수점 연산이 다른 연산과 병렬로 실행되는지에 대해 걱정하지 않아도됩니다. 이러한 것들은 마이크로 레벨에서 성능 향상을 제공하지만 복잡성 분석은 매크로 레벨에 관심이 있습니다. 100 ~ ~ ~ 입력으로 확장 할 때 알고리즘 성능은 어떻게 달라 집니까? 우주에 원자가있는 것보다 백만 개의 테이프 셀을 사용하는 것에서 10 억, 또는 백만에서 더 많은 셀을 사용합니까?10 9 10 121061091012

두 번째는 언어는 데이터에 대한 훌륭한 추상화입니다. 증명할 수있는 것, 공식적으로 모델링 할 수있는 것이 필요합니다. 입력과 출력을 문자열로 인코딩하면 메모리의 비트가 아니라 특정 속성을 가진 수학적 객체를 처리하게됩니다. 당신은 그들에 대해 추론하고 공식적이고 매우 간단한 의미로 그들에 대한 증거를 증명할 수 있습니다.

복잡성 이론은 결정 문제가 어려워지기 때문에 결정 문제에 초점을 맞추는 경향이 있습니다. 여행 판매원의 의사 결정 버전이 NP- 완료되면 (즉 , 길이 보다 짧은 투어가있는 경우 ) 가장 짧은 경로를 찾는 것이 더 어렵습니다. 간단한 의사 결정 문제에 대한 미결 문제와 미해결 문제가 여전히 많기 때문에 기능 / 최적화 문제에 초점을 두지 않습니다.k

언어가 아닌 문제를 수학적으로 설명하는 방법을 찾으십시오. 언어가 특별한 지 모르겠지만, 우리가 가지고있는 가장 간단한 도구, 처리하기 가장 쉬운 도구라고 생각합니다.


7
언어 만이 문제를 공식화하는 유일한 방법은 아닙니다. 예를 들어, 색수와 같은 것을 그래프에서 자연수까지 함수 로 공식화 할 수 있습니다. 실제로 함수 및 최적화 문제에 대한 많은 작업이 있습니다.
David Richerby

2
그러나 언어 나 기계에 대한 개념없이 색도 계산의 복잡성을 어떻게 처리 할 수 ​​있습니까?
jmite

1
답장을 보내 주셔서 감사합니다. 그러나 여전히 두 가지 질문이 있습니다. 1) 언어를 사용한다는 사실이 문제의 복잡성 또는 결정 가능성에 영향을 미치지 않습니까? 즉, 부동 소수점 산술에서는 문제를 해결할 수 있지만 정수 산술에서는 문제가되지 않을 수 있습니까 (예 : 정수 프로그래밍)? 2) 문제의 복잡성을 평가하고 특정 입력에서 추상화하기 때문에 모든 종류의 데이터에서 모든 데이터를 설명하는 고유 한 언어로이 매핑을 어떻게 수행합니까? 다시 감사합니다!
Matteo

3
@jmite 기계가 필요하지만 반드시 언어는 아닙니다.
Raphael

2
@Raphael 일반적으로 기계의 작동 시간과 관련하여 정의 된 많은 복잡성 클래스는 설명의 복잡성으로 특성화 할 수 있습니다.
Sasho Nikolov

7

질문에 대한 두 가지 기본 답변이 있습니다.

  1. 언어보다 복잡한 이론, 예를 들어 함수 클래스, 산술 복잡성, 근사 알고리즘 및 근사치의 하위 영역이 있습니다.

  2. 역사적 이유 : 계산 이론의 기본 논문 중 하나는 힐버트의 엔츠 이둔 스 문제 (중지 문제의 한 형태)를 논의하는 것이 었습니다.

불행히도 나는 후자에 대해 많이 알지 못하지만 전자를 확장시켜 드리겠습니다.

언어 이상의 복잡성

모든 계산 복잡성 클래스는 관련 함수 클래스 와 함께 제공됩니다 . 예를 들어, 다항식 시간으로 결정 가능한 모든 문제의 클래스 P는 다항식 시간으로 계산 가능한 모든 함수의 클래스 인 FP와 연관됩니다. FP는 NP 경도를 정의하는 데 사용되므로 중요합니다. NP의 모든 언어 에 대해 iff 과 같이 FP에 함수가 있으면 언어 은 NP-hard 입니다. 함수의 또 다른 복잡한 클래스 인 #PToda의 정리 를 통한 소위 다항식 계층 구조 와 관련이 있습니다.M f M x M f M ( x ) LLMfMxMfM(x)L

산술 회로 복잡도 (또는 대수 복잡도 이론 )는 다양한 다항식 계산의 복잡성을 처리합니다. 여기서 중요한 복잡성 클래스는 VP와 VNP이며 기하학적 복잡성 이론 은 대수 기하학과 표현 이론을 사용하여 VP와 VNP (및 나중에 P와 NP)를 분리하려는 중요한 프로젝트입니다.

대수 복잡성의 또 다른 중요한 예는 빠른 행렬 곱셈입니다. 여기서 기본적인 질문은 두 행렬을 얼마나 빨리 곱할 수 있는가입니다. 비슷한 질문은 정수를 얼마나 빨리 곱할 수 있는지, 정수에 대한 정수를 얼마나 빨리 테스트 할 수 있는지 (이것은 결정 문제입니다!), 정수를 얼마나 빨리 인수 분해 할 수 있는지 묻습니다.

볼록 최적화 는 효율적으로 해결할 수있는 최적화 문제를 처리합니다. 예제는 선형 프로그래밍과 반 정확한 프로그래밍이며 둘 다 효율적인 알고리즘을 가지고 있습니다. 여기서 우리는 최적 솔루션과 최적 솔루션 자체에 관심이 있습니다. 최적 솔루션이 둘 이상있는 경우가 많으므로 최적 솔루션 계산은 의사 결정 문제로 잘 표현되지 않습니다.

근사 성은 다항식 시간에서 최적화 문제에 대한 근사치를 얼마나 잘 얻을 수 있는지 연구하는 영역입니다. 예를 들어 세트 표지의 고전적인 문제를 생각해보십시오. 세트 모음이 주어지면 전체 우주를 얼마나 많은 세트에 포함시켜야합니까? 최적의 숫자를 찾는 것은 NP-hard이지만 근사값을 계산할 수 있습니까? 근사 알고리즘은 하위 영역이 있지만, 근사 계산을위한 알고리즘을 연구 inapproximability의 근사 알고리즘 연구의 한계. Set Cover의 특별한 경우, 우리는 근사치 (욕심 많은 알고리즘)를 제공하는 알고리즘을 가지고 있으며 더 잘하는 것은 NP-hard입니다.lnn


3

카테고리 이론의 관점에서이 질문을 살펴 보자. 그런 다음 결정 문제 (또는 언어)는 범주의 객체에 해당하고 두 문제 사이의 허용 된 축소는 범주의 형태 (화살표)에 해당합니다.

언어에 대해 이야기하면 언어의 동등성이 잘 정의되어 있다는 장점이 있습니다 (즉, 확장 평등에 의해). 관련이없는 두 가지 문제가 같은 언어로 이어질 수 있으며, 그에 상응하는 것으로 간주 할 수 있습니다. 동형 문제에 대해 이야기하고 싶다면, 두 문제 사이에 허용되는 형태를 정의해야합니다. 그러나 허용되는 형태는 고려중인 실제 복잡성 클래스에 따라 달라 지므로이 방법은 다른 복잡성 클래스를 비교하는 데 적합하지 않습니다.

동형 문제의 개념은 일반적으로 동등한 언어의 개념보다 거칠다. 즉, 관련된 언어가 동일하지 않더라도 두 가지 문제는 동형 일 수있다. 더 나쁜 것은 허용 된 형태에 대한 합리적인 다른 개념이 종종 있으며, 이는 허용 된 동형에 대해서만 동의한다는 것입니다. 언어에 중점을두면 합리적 감소에 대한 합리적인 개념에 대해 이야기 할 때까지 이러한 문제를 연기 할 수 있습니다 (카르 프 감소와 쿡 감소 등).


이것은 질문에 대답하지 않는 것 같습니다. 해당 범주의 객체로 사용하는 모든 문제 간의 형태에 대해 여전히 이야기 할 수 있습니다.
David Richerby

@DavidRicherby 내가 가져오고 싶은 요점은 적절한 형태를 정하는 것이 적절한 물체를 정복하는 것보다 더 어렵다는 것입니다 (= 언어). (특히, 일반적으로 하나 이상의 적절한 형태의 개념이 있기 때문에) 형태가 없으면 동형 문제 (또는 알고리즘)에 대해 이야기 할 수 없습니다. 그러나 언어는 문제의 동등성에 대해 여전히 이야기 할 수있는 방법을 제공합니다. 어쩌면 나는 이것을 올바르게 설명하지 않았지만 이것이 "복잡성 이론에서 언어를 사용하는"좋은 이유입니다.
Thomas Klimpel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.