P- 완전성 및 병렬 계산


23

나는 최근에 유사성을 검사하기위한 알고리즘에 대해 읽고 문제가 P- 완전 하다는 것을 읽었 습니다 . 또한,이 문제 또는 P- 완료 문제는 효율적인 병렬 알고리즘이 없을 가능성이 있습니다.

이 마지막 진술의 직관은 무엇입니까?


이것은 imho가 "효율적으로 병렬화 가능"을 공식화하는 끔찍한 방법 인 NC (답변 참조)와 관련이 있습니다.
Raphael

답변:


17

모든 완전한 문제는 효율적인 병렬 알고리즘을 갖지 않을 것입니다. 왜 ?P

완전 문제 의 존재는 의 가장 중요한 단서입니다 . 그렇다면이 추측이 병렬 컴퓨팅과 관련이있는 이유는 무엇입니까? 계산에 사용되는 리소스부터 시작하겠습니다. 순차적 컴퓨팅 : 시간과 공간; 병렬 컴퓨팅 : 시간 및 하드웨어 (프로세서 수) 관계가 있습니까? 예! 순차적 공간 ↔ 병렬 시간; 순차 시간 ↔ 병렬 하드웨어. 순차적 공간과 병렬 시간 사이의 대응은 채택 된 병렬 컴퓨팅 모델과 무관 한 것으로 보인다. 이것은 입증되지 않은 다음의 소위 병렬 계산 논문으로 이어진다 .P(PPOLYLOGSPACE)P

(찬드라 및 Stockmeyer) 공간 복잡도와 TM의 모든 연산 시간 모델을 계산 병렬로 시뮬레이션 할 수 마다 계산 시간 복잡도 갖는 병렬 컴퓨팅 모델은 공간 복잡도 를 갖는 TM에 의해 시뮬레이션 될 수있다 .S(n)T(n)=O(S(n)O(1))T(n)S(n)=O(T(n)O(1))

문제의 클래스 다항식 공간에 순차적 실밥 것은 다항식 시간 내에 해결 가능한 문제들의 세트는 .Since 보다 문제가 훨씬 더 큰 수준의 것으로 생각되는 , 논문은 효과적인 개선 병렬 의해 가능하게 정량화한다. 이 논문의 결과는 PRAM이 다항식 시간에 완전 문제를 해결할 수 있다는 것입니다 … 불행히도, 아닙니다! 병렬 계산 논문은 실제로 속하는 문제를 처리 할 수 ​​있음을 의미합니다.P P S P A C E P N P P S P A C EPSPACEPPSPACEPNPPSPACE… 그러나 여기에는 지수의 프로세서가 필요합니다! 시공간 트레이드 오프가 작동합니다. 순차 컴퓨팅 모델의 지수 시간은 병렬 컴퓨팅 모델의 지수 수의 프로세서로 변환되는 반면, 순차 컴퓨팅 모델의 다항식 공간은 병렬의 다항식 시간으로 변환됩니다. 컴퓨팅 모델.

병렬 시간과 병렬 하드웨어를 모두 제한하려고하면이 트레이드 오프를 이해하기가 더 쉽습니다. 병렬 컴퓨팅 모델에 다항식 프로세서 수가있는 경우 병렬 다항식 시간에서 해결할 수있는 문제의 클래스는 입니다. 프로세서 수를 다항식으로 제한하면 순차 시스템의 성능을 향상시킬 수 있지만 다항식 요소는 아닙니다. 따라서 우리는 시간 복잡성을 나타내는 다항식의 정도를 줄일 수 있지만, 병렬 식을 사용하여 지수 비용을 다항식 비용으로 줄일 수는 없습니다.P

다항식 시간 복잡성과 함께 해결되는 문제는 속하는 문제 입니다. 프로세서 수에 대한 다항식 제약 조건은 TM과 동등한 병렬 컴퓨팅 모델로 이어집니다. 실질적으로 고려해야 할 두 가지 중요한 사항이 있습니다 : 어느 다항식 프로세서가 허용 / 저가 가능한가? 실제로, 다항식 프로세서 수는 선형이거나 가깝습니다. 달성 할 수있는 다항식 시간은 어느 것입니까? 거의 모든 병렬 실행 가능성 문제는 다항식 병렬 시간을 달성 할 수있는 것으로 나타났습니다. 동시에, 입력 길이에서 로그인 시간 복잡도는 효율적인 병렬 계산을 나타냅니다. 다항식 프로세서 수를 고려할 때 병렬 처리 알고리즘은 시간 복잡성이 다항식 인 경우 효율적인 것으로 간주됩니다.P

와 가 상수 인 문제 에서 병렬 계산 논문은 에 대한 병렬 알고리즘 이 시간 복잡도 여기서 는 상수입니다. 순차 시간과 병렬 시간을 비교하면 을 (시간 관점에서) 고도로 병렬화 할 수 있는 문제로 분류 할 수 있습니다 .k h R O ( ( l o g n ) k ' ) k RRTIME_SPACETM(nk,(logn)h)khRO((logn)k)kR

병렬 계산 논문에서 는 고도로 병렬화 가능한 문제의 클래스입니다. 에는 로그 공간 축소와 관련하여 완료된 문제가 없습니다. 이것은 의미합니다 . 것 같다P O L Y L O G S P A C E P O L Y L O G S P A C E PPOLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACEP

  1. POLYLOGSPACEP
  2. PPOLYLOGSPACE

P P -- ( P P O L Y L O G S P A C E )PPOLYLOGSPACE 에는 다항식 공간을 사용하여 다항식 시간에 해결할 수있는 문제가 포함되어 있습니다. 완전 문제는 아마도 .PP(PPOLYLOGSPACE)

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 )NC (Nick의 수업-1979 년에 처음으로 그것을 식별하고 특성화 한 Nicholas Pippenger를 기리기 위해 불림)는 다항식 시간 (즉, 시간 복잡도 으로 해결할 수있는 문제의 클래스입니다. 다항식 수의 프로세서 (예 : 이 문제 크기 인 경우 일부 다항식 대해 의해 계산) 병렬 계산 논문은 합니다.O((logn)k))O(f(n))fnNC(PPOLYLOGSPACE)

그러나 불행히도 정의에 따르면 에는 효율적으로 병렬화 할 수 없는 많은 문제가 있습니다 . 가장 악명 높은 예는 병렬 이진 검색 입니다. 문제는이 문제가 = 1의 경우에도 다항식 시간 복잡성을 갖는다는 것입니다. 최악의 경우 최대 로그 시간이 필요한 순차 알고리즘 은 병렬 실행 가능성에 관계없이 !p N CNCpNC

이제, 완전 문제가 왜 가장 어려운 병렬화 가능한 문제 인지 설명 할 수 있습니다. 완전한 문제 주어지면, 효율적인 병렬 알고리즘이 존재하지 않을 가능성이 높습니다 : 만약 그러한 병렬 알고리즘이 시간 복잡도 와 함께 존재 한다면, 병렬 계산 논문은 다음과 같이 존재합니다. 동일한 문제에 대해 공간 복잡도 를 갖는 순차 알고리즘 이후 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 )PPQO((logn)k)O((logn)k)QPP(PPOLYLOGSPACE)=P(PPOLYLOGSPACE)P , 아직 증명할 수는 없지만.

다항식 프로세서 요구 사항에 대한 마지막 관찰. 그것은 이론적 인 진술입니다. 실제로 : 문제 크기보다 빠르게 증가하는 프로세서 요구 사항은 실제로 유용하지 않을 수 있습니다.


10

"효율적인 병렬는"내부에 떨어질 때문에 (프로세서의 다항식 번호 polylogarithmic 시간에 decidable 문제 "닉의 클래스"), 그리고 널리되는 것으로 그 . 따라서 모든 문제는 효율적인 병렬 알고리즘을 갖는 것으로 여겨 지지 않습니다 (따라서 ).NCN CP P - c o m p l e t e P = N CNCPP-completeP=NC

물론이 모든 것이 라고 추측 할 수 있습니다. 가 의 첫 번째 수준에 있지 않다는 공개적인 문제입니다 . 즉, 우리는하지 않습니다 알고있는 경우 .P N C N C 1PNCPPNCNC1P

더욱이, 에서 문제를 해결할 수 없는지 , 즉 게이트가있는 일정한 깊이 (= 일정한 병렬 시간) 부울 회로도 .A C 0 [ 6 ]PAC0[6]mod6

자세한 내용은 다음 책을 참조하십시오.

Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, " 병렬 계산의 한계 : P- 완전성 이론 ", 1995.


NC는 또한 효율적으로 병렬화 할 수없는 많은 문제를 포함합니다. 자세한 내용은 내 답변을 참조하십시오.
Massimo Cafaro

명시 적으로 말을 할 수 있습니다 그 "어떤 경우 문제에 다음 ". N C N C = PP-completeNCNC=P
Alex ten Brink

1
@forforvenven, 어떤 클래스가 "효율적인 병렬"알고리즘을 올바르게 캡처하는지에 대한 다양한 의견이 있습니다. 그 이유로 나는 상한으로 간주되는 클래스를 사용했습니다. P 대 NC가 사람들이 P- 완전 문제에 효율적인 병렬 알고리즘이 없다고 생각하는 전형적인 이유라고 생각합니다. 답변에 명시된 흥미로운 세부 사항이 있습니다. 내 답변에 대한 참조를 추가했습니다.
Kaveh

1
@Kaveh, 동의합니다. 대부분의 사람들은이 용어에 대해 정확하게 생각합니다. 그렇기 때문에 병렬 계산 논문에 따라 약간 다른 관점을 제시하고 싶었습니다. 당신이 제공 한 참고 문헌은 훌륭하며 실제로 내가 읽은 주제의 최상의 치료법을 나타냅니다.
Massimo Cafaro

6

Kaveh의 답변은 NC 인 "병렬"의 일반적인 정의를 다룹니다. P NC가 복잡한 이론에서 어려운 질문 중 하나 인지에 대한 질문 (그리고 어떤 식 으로든 P NP 질문 과 관련이 있음 ).<<<

선형 프로그래밍이나 DFS 순서와 같은 P의 일부 문제는 병렬화 할 수없는 긴 "핵심 경로"를 강요하는 많은 종속성이 있다고 생각합니다. 이것은 비결정론이 강력하다고 생각되는 것 이상의 증거는 아니지만 이것이 기본 아이디어입니다.

편집 : 의견을 명확히하기 위해이 답변의 요점은 왜 (일부) 사람들이 P와 NC가 동일하다고 생각하지 않는지 말하는 것입니다. P와 NP와 마찬가지로, 두 사람이 다른지 여부를 증명하는 방법을 아무도 모릅니다. 그러나 컴퓨터 과학자들이 생각하는 어려운 문제에 대해서는 뭔가가 있습니다.

또 다른 점은 NC 는 "다수 적으로 많은 프로세서에서 폴리 로그 시간"으로 매우 빠른 속도를 요구하지만 많은 프로세서를 제공한다는 것입니다. 따라서 실제 병렬화 개념에 맞지 않을 수 있습니다.

특히 P NP 라고 생각 하면 NP- 완전 문제에 대해 휴리스틱 및 근사 알고리즘을 즉시 살펴볼 것입니다. 반면에 NC가 P보다 작다고 생각하더라도 오늘날 컴퓨터에서 사용할 수있는 병렬 처리의 종류로 인해 사소한 속도 향상을 얻을 수 있습니다.<


당신이 제공하는 직감이 정확하지 않습니다. 특정 알고리즘을 효율적인 병렬 알고리즘으로 바꿀 수 없다는 것이 효율적인 병렬 시간으로 문제를 해결할 수 없다는 것을 의미하지는 않습니다. 하나는 주로에없는 말을 비슷한 말했다 수 는 숫자를 많이 테스트해야하고 있기 때문에 보인다 대부분이 관련이 있음을, 그러나 우리가 알고 소수성이에서와 같이 그 거짓 . PPP
Kaveh

그러나 루이스의 요점은 직관으로 여겨 져야하며 완전히 잘못된 것은 아닙니다. 그러나 문제는 DFS의 P- 완전성이 매우 취약하다는 것입니다. 사전 편집 법 DFS가 필요하며 RNC 등에도 있습니다.
Suresh

@Suresh : 그렇습니다. 그 렉스를 어떻게 증명해야할지 모르겠습니다. order DFS는 단순히 수행하는 것보다 훨씬 나은 방식으로 결정적으로 시뮬레이션 할 수 없지만 사람들은 무작위성없이 가능하다고 느끼지 않습니다. (중요하다면, 나의 "종교"는 많은 무작위성이 힘을 가지고 있다는 것입니다.)
Louis

@Kaveh :이 "핵심 경로"( "작업 깊이"라고도 함)는 알고리즘의 기능이 아니라 문제의 기능입니다. 그것이 보여주기 어려운 이유입니다. (모든 알고리즘에 의해) 순차적으로 조사 된 것은 "작업 파이브"의 가장 긴 시퀀스입니다.
Raphael

@Raphael, 언어가 주어지면 알고리즘을 해결하는 알고리즘이 특정 단계의 순서를 따라야하는 이유가 알려져 있지 않습니다. 이것이 하한값을 증명하는 것이 어려운 이유 중 하나입니다. 문제를 해결하는 알고리즘 계산이 어떻게 보이는지에 대해서는 아무 것도 가정 할 수 없습니다. 그게 내 요점이야
Kaveh

3

누가 "효율적인 병렬 알고리즘"을 사용하여 정확히 무엇을 의미하는지주의하십시오.

이전 답변은 복잡성 이론의 관점을 설명합니다. 여기서 "효율적인"은 일반적으로 " 프로세서의 시간 런타임"과 같은 모호한 것을 의미합니다 . 프로세서 수는 입력 크기에 따라 달라질 수 있습니다!O ( g ( n ) )O(f(n))O(g(n))

특히, 종종 NC라는 이름의 클래스

다항식 수의 프로세서가있는 병렬 컴퓨터에서 다항식 시간으로 결정 가능한 결정 문제 세트.

보다 실용적인 용어로 효율적인 이러한 문제에 대한 병렬 알고리즘이 있는지 여부와 는 아무런 관련없습니다 ¹ :

  • NC 알고리즘이있는 경우 고정 된 수의 프로세서가있는 시스템에서 문제를 효율적으로 해결하는 방법에 대한 정보를 얻지 못합니다 .
  • 문제에 대한 NC 알고리즘이 없다고해서 "실제"알고리즘이 없다는 의미는 아닙니다. 우리가 문제를 polynomially로 나눌 수 없다고해서 아주 작은 조각으로 나눌 수 있다고해서 이 자라 면서 끊임없이 많은 작은 조각으로 나눌 수는 없습니다 .n

    예를 들어, 공유 메모리가있는 지속적으로 많은 프로세서에서 CYK 구문 분석은 무조건 최적 속도 향상과 병행하여 수행 할 수 있습니다 ( 문맥없는 구문 분석이 P- 완료 임에도 불구하고 마스터 논문 참조) .

유용한 방법으로 유한하게 많은 프로세서가있는 머신에서 효율성을 설명하려면 속도 증가가 유한 한 상수, 프로세서 수 ²에 의해 제한되므로 보다 더 정밀한 분석이 필요합니다 . 복잡성 이론에서는 거의 찾을 수 없습니다. 따라서 실제 환경에서 사용되는 병렬 알고리즘에 대해 배우려면 다른 곳을 살펴 보는 것이 좋습니다.O()


  1. 하자 병렬 알고리즘의 실행 기능. 당신은 "효율적인"알고리즘을 호출 할 수있는 경우 , 또는 경우 대한 좋은 순차적 알고리즘의 실행 기능. 나는이 논문 에서 인용 된 문학을 바탕으로 석사 논문 에서보다 엄격한 방식으로 이것을 제안 한다. T 1 ( n ) / T p ( n ) p T 1 ( n ) T ( n ) TTp:NR0T1(n)/Tp(n)pT1(n)T(n)T

  2. 항상 그런 것은 아닙니다. 메모리 계층 구조와 하드웨어는 적어도 때때로 더 빠른 속도를 허용 할 수 있습니다. 그러나 또 다른 상수 한계가 있습니다.


0

내일 누군가 P = NC라는 증거를 발견했다고 가정하자. 이 경우 컴퓨터 과학 연구와 실제 응용 프로그램의 결과는 무엇입니까?

질문은 이 질문 과 중복되는 것으로 표시 되었으므로 실제로는 중복 된 것으로 가정하고 가능한 대답을 하나 제공하겠습니다.

우리는 NC! = PSPACE이므로 P = NC가 P! = PSPACE임을 증명한다는 증거입니다. 큰 문제는 아니지만 컴퓨터 과학 연구의 결과 중 하나입니다.

왜 NC! = PSPACE를 알고 있습니까? 우리는 NC k ⊆ DSPACE (O (log k ))를 알고 있으므로 공간 계층 정리를 사용할 수 있습니다.


실제 응용 분야에서 선형 (및 볼록한) 프로그래밍 관련 응용 프로그램은 선형 프로그래밍 공식을 해당 하드웨어로 효율적으로 변환하기위한 컴파일러와 함께 사용자 지정 병렬 아키텍처를 개발하여 판매 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.