답변:
모든 완전한 문제는 효율적인 병렬 알고리즘을 갖지 않을 것입니다. 왜 ?
완전 문제 의 존재는 의 가장 중요한 단서입니다 . 그렇다면이 추측이 병렬 컴퓨팅과 관련이있는 이유는 무엇입니까? 계산에 사용되는 리소스부터 시작하겠습니다. 순차적 컴퓨팅 : 시간과 공간; 병렬 컴퓨팅 : 시간 및 하드웨어 (프로세서 수) 관계가 있습니까? 예! 순차적 공간 ↔ 병렬 시간; 순차 시간 ↔ 병렬 하드웨어. 순차적 공간과 병렬 시간 사이의 대응은 채택 된 병렬 컴퓨팅 모델과 무관 한 것으로 보인다. 이것은 입증되지 않은 다음의 소위 병렬 계산 논문으로 이어진다 .
(찬드라 및 Stockmeyer) 공간 복잡도와 TM의 모든 연산 시간 모델을 계산 병렬로 시뮬레이션 할 수 마다 계산 시간 복잡도 갖는 병렬 컴퓨팅 모델은 공간 복잡도 를 갖는 TM에 의해 시뮬레이션 될 수있다 .
문제의 클래스 다항식 공간에 순차적 실밥 것은 다항식 시간 내에 해결 가능한 문제들의 세트는 .Since 보다 문제가 훨씬 더 큰 수준의 것으로 생각되는 , 논문은 효과적인 개선 병렬 의해 가능하게 정량화한다. 이 논문의 결과는 PRAM이 다항식 시간에 완전 문제를 해결할 수 있다는 것입니다 … 불행히도, 아닙니다! 병렬 계산 논문은 실제로 속하는 문제를 처리 할 수 있음을 의미합니다.P P S P A C E P N P P S P A C E… 그러나 여기에는 지수의 프로세서가 필요합니다! 시공간 트레이드 오프가 작동합니다. 순차 컴퓨팅 모델의 지수 시간은 병렬 컴퓨팅 모델의 지수 수의 프로세서로 변환되는 반면, 순차 컴퓨팅 모델의 다항식 공간은 병렬의 다항식 시간으로 변환됩니다. 컴퓨팅 모델.
병렬 시간과 병렬 하드웨어를 모두 제한하려고하면이 트레이드 오프를 이해하기가 더 쉽습니다. 병렬 컴퓨팅 모델에 다항식 프로세서 수가있는 경우 병렬 다항식 시간에서 해결할 수있는 문제의 클래스는 입니다. 프로세서 수를 다항식으로 제한하면 순차 시스템의 성능을 향상시킬 수 있지만 다항식 요소는 아닙니다. 따라서 우리는 시간 복잡성을 나타내는 다항식의 정도를 줄일 수 있지만, 병렬 식을 사용하여 지수 비용을 다항식 비용으로 줄일 수는 없습니다.
다항식 시간 복잡성과 함께 해결되는 문제는 속하는 문제 입니다. 프로세서 수에 대한 다항식 제약 조건은 TM과 동등한 병렬 컴퓨팅 모델로 이어집니다. 실질적으로 고려해야 할 두 가지 중요한 사항이 있습니다 : 어느 다항식 프로세서가 허용 / 저가 가능한가? 실제로, 다항식 프로세서 수는 선형이거나 가깝습니다. 달성 할 수있는 다항식 시간은 어느 것입니까? 거의 모든 병렬 실행 가능성 문제는 다항식 병렬 시간을 달성 할 수있는 것으로 나타났습니다. 동시에, 입력 길이에서 로그인 시간 복잡도는 효율적인 병렬 계산을 나타냅니다. 다항식 프로세서 수를 고려할 때 병렬 처리 알고리즘은 시간 복잡성이 다항식 인 경우 효율적인 것으로 간주됩니다.
와 가 상수 인 문제 에서 병렬 계산 논문은 에 대한 병렬 알고리즘 이 시간 복잡도 여기서 는 상수입니다. 순차 시간과 병렬 시간을 비교하면 을 (시간 관점에서) 고도로 병렬화 할 수 있는 문제로 분류 할 수 있습니다 .k h R O ( ( l o g n ) k ' ) k ′ R
병렬 계산 논문에서 는 고도로 병렬화 가능한 문제의 클래스입니다. 에는 로그 공간 축소와 관련하여 완료된 문제가 없습니다. 이것은 의미합니다 . 것 같다P O L Y L O G S P A C E P O L Y L O G S P A C E ≠ P
P P -- ( P ∩ P O L Y L O G S P A C E ) 에는 다항식 공간을 사용하여 다항식 시간에 해결할 수있는 문제가 포함되어 있습니다. 완전 문제는 아마도 .
O ( ( l o g n ) k ) ) O ( f ( n ) ) f n N C ⊂ ( P ∩ P O L Y L O G S P A C E ) (Nick의 수업-1979 년에 처음으로 그것을 식별하고 특성화 한 Nicholas Pippenger를 기리기 위해 불림)는 다항식 시간 (즉, 시간 복잡도 으로 해결할 수있는 문제의 클래스입니다. 다항식 수의 프로세서 (예 : 이 문제 크기 인 경우 일부 다항식 대해 의해 계산) 병렬 계산 논문은 합니다.
그러나 불행히도 정의에 따르면 에는 효율적으로 병렬화 할 수 없는 많은 문제가 있습니다 . 가장 악명 높은 예는 병렬 이진 검색 입니다. 문제는이 문제가 = 1의 경우에도 다항식 시간 복잡성을 갖는다는 것입니다. 최악의 경우 최대 로그 시간이 필요한 순차 알고리즘 은 병렬 실행 가능성에 관계없이 !p N C
이제, 완전 문제가 왜 가장 어려운 병렬화 가능한 문제 인지 설명 할 수 있습니다. 완전한 문제 주어지면, 효율적인 병렬 알고리즘이 존재하지 않을 가능성이 높습니다 : 만약 그러한 병렬 알고리즘이 시간 복잡도 와 함께 존재 한다면, 병렬 계산 논문은 다음과 같이 존재합니다. 동일한 문제에 대해 공간 복잡도 를 갖는 순차 알고리즘 이후 A는 - 완전한 문제 차례로 이것은 모든 문제 것을 의미한다 : 폴리 로그 공간에서 해결 될 수있다 . 아시다시피 대신에P Q O ( ( l o g n ) k ) O ( ( l o g n ) k ' ) Q P P ( P ∩ P O L Y L O G S P A C E ) = P ( P ∩ P O 리 Y L O G S P A C E ) , 아직 증명할 수는 없지만.
다항식 프로세서 요구 사항에 대한 마지막 관찰. 그것은 이론적 인 진술입니다. 실제로 : 문제 크기보다 빠르게 증가하는 프로세서 요구 사항은 실제로 유용하지 않을 수 있습니다.
"효율적인 병렬는"내부에 떨어질 때문에 (프로세서의 다항식 번호 polylogarithmic 시간에 decidable 문제 "닉의 클래스"), 그리고 널리되는 것으로 그 . 따라서 모든 문제는 효율적인 병렬 알고리즘을 갖는 것으로 여겨 지지 않습니다 (따라서 ).N C ≠ P P - c o m p l e t e P = N C
물론이 모든 것이 라고 추측 할 수 있습니다. 가 의 첫 번째 수준에 있지 않다는 공개적인 문제입니다 . 즉, 우리는하지 않습니다 알고있는 경우 .P N C N C 1 ≠ P
더욱이, 에서 문제를 해결할 수 없는지 , 즉 게이트가있는 일정한 깊이 (= 일정한 병렬 시간) 부울 회로도 .A C 0 [ 6 ]
자세한 내용은 다음 책을 참조하십시오.
Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, " 병렬 계산의 한계 : P- 완전성 이론 ", 1995.
Kaveh의 답변은 NC 인 "병렬"의 일반적인 정의를 다룹니다. P NC가 복잡한 이론에서 어려운 질문 중 하나 인지에 대한 질문 (그리고 어떤 식 으로든 P NP 질문 과 관련이 있음 ).<
선형 프로그래밍이나 DFS 순서와 같은 P의 일부 문제는 병렬화 할 수없는 긴 "핵심 경로"를 강요하는 많은 종속성이 있다고 생각합니다. 이것은 비결정론이 강력하다고 생각되는 것 이상의 증거는 아니지만 이것이 기본 아이디어입니다.
편집 : 의견을 명확히하기 위해이 답변의 요점은 왜 (일부) 사람들이 P와 NC가 동일하다고 생각하지 않는지 말하는 것입니다. P와 NP와 마찬가지로, 두 사람이 다른지 여부를 증명하는 방법을 아무도 모릅니다. 그러나 컴퓨터 과학자들이 생각하는 어려운 문제에 대해서는 뭔가가 있습니다.
또 다른 점은 NC 는 "다수 적으로 많은 프로세서에서 폴리 로그 시간"으로 매우 빠른 속도를 요구하지만 많은 프로세서를 제공한다는 것입니다. 따라서 실제 병렬화 개념에 맞지 않을 수 있습니다.
특히 P NP 라고 생각 하면 NP- 완전 문제에 대해 휴리스틱 및 근사 알고리즘을 즉시 살펴볼 것입니다. 반면에 NC가 P보다 작다고 생각하더라도 오늘날 컴퓨터에서 사용할 수있는 병렬 처리의 종류로 인해 사소한 속도 향상을 얻을 수 있습니다.
누가 "효율적인 병렬 알고리즘"을 사용하여 정확히 무엇을 의미하는지주의하십시오.
이전 답변은 복잡성 이론의 관점을 설명합니다. 여기서 "효율적인"은 일반적으로 " 프로세서의 시간 런타임"과 같은 모호한 것을 의미합니다 . 프로세서 수는 입력 크기에 따라 달라질 수 있습니다!O ( g ( n ) )
특히, 종종 NC라는 이름의 클래스 는
다항식 수의 프로세서가있는 병렬 컴퓨터에서 다항식 시간으로 결정 가능한 결정 문제 세트.
보다 실용적인 용어로 효율적인 이러한 문제에 대한 병렬 알고리즘이 있는지 여부와 는 아무런 관련 이 없습니다 ¹ :
문제에 대한 NC 알고리즘이 없다고해서 "실제"알고리즘이 없다는 의미는 아닙니다. 우리가 문제를 polynomially로 나눌 수 없다고해서 아주 작은 조각으로 나눌 수 있다고해서 이 자라 면서 끊임없이 많은 작은 조각으로 나눌 수는 없습니다 .
예를 들어, 공유 메모리가있는 지속적으로 많은 프로세서에서 CYK 구문 분석은 무조건 최적 속도 향상과 병행하여 수행 할 수 있습니다 ( 문맥없는 구문 분석이 P- 완료 임에도 불구하고 마스터 논문 참조) .
유용한 방법으로 유한하게 많은 프로세서가있는 머신에서 효율성을 설명하려면 속도 증가가 유한 한 상수, 프로세서 수 ²에 의해 제한되므로 보다 더 정밀한 분석이 필요합니다 . 복잡성 이론에서는 거의 찾을 수 없습니다. 따라서 실제 환경에서 사용되는 병렬 알고리즘에 대해 배우려면 다른 곳을 살펴 보는 것이 좋습니다.
내일 누군가 P = NC라는 증거를 발견했다고 가정하자. 이 경우 컴퓨터 과학 연구와 실제 응용 프로그램의 결과는 무엇입니까?
이 질문은 이 질문 과 중복되는 것으로 표시 되었으므로 실제로는 중복 된 것으로 가정하고 가능한 대답을 하나 제공하겠습니다.
우리는 NC! = PSPACE이므로 P = NC가 P! = PSPACE임을 증명한다는 증거입니다. 큰 문제는 아니지만 컴퓨터 과학 연구의 결과 중 하나입니다.
왜 NC! = PSPACE를 알고 있습니까? 우리는 NC k ⊆ DSPACE (O (log k ))를 알고 있으므로 공간 계층 정리를 사용할 수 있습니다.
실제 응용 분야에서 선형 (및 볼록한) 프로그래밍 관련 응용 프로그램은 선형 프로그래밍 공식을 해당 하드웨어로 효율적으로 변환하기위한 컴파일러와 함께 사용자 지정 병렬 아키텍처를 개발하여 판매 할 수 있습니다.