알고리즘 3 판 소개에서 다중 스레드 병합 정렬 읽기 중이었습니다. 그러나 나는 다음 병합-정렬 너 한테 필요한 프로세서의 수와 혼란 스러워요 :병합 정렬을위한 PRAM (병렬) 알고리즘
MERGE-SORT(A, p, r)
1 if p < r
2 q = (p+r)/2
3 spawn MERGE-SORT(A, p, q)
4 MERGE-SORT(A, q + 1, r)
5 sync
6 MERGE(A, p, q, r)
병합 표준 병합 알고리즘이다. 이제이 알고리즘에 필요한 프로세서의 수는 얼마입니까 ?? 비록 그것이 O (N)이어야한다고 가정하고 있지만 책은 O (log n)라고 주장하고 있습니다, 왜? 참고 MERGE 프로 시저를 다중 스레드하지 않습니다. 예를 들어 설명하는 것이 도움이 될 것입니다. 미리 감사드립니다.
나는 O (log n)가 평행법이라는 것을 이해했다. 그러나 책에서이 알 고를 설명 한 후에,이 알고리즘은 선 속도를 달성 할 것이고 이것이 선형 속도를 달성한다면 정의에서 Tp = O (n)와 같이 프로세서의 수를 O (log n)로 정의했다. optiaml을 작동하십시오. 나중에이 책은 병렬 처리가 O (n/(log n)^2) 인 곳에서 Tp = O ((log n)^3)을 가진 알고리즘을 소개했다. 하지만 내 질문은 병렬성에 관한 것이 아닙니다! –
O (lg3 n) 알고리즘은 MERGE도 병렬 처리하는 알고리즘입니다. 하지만 당신은 그 질문에 스스로 대답했습니다. 병렬 처리로 만 O (log n) 요소를 제거 할 수 있기 때문에 병렬 병합없이 O (log n) 병렬 실행 = CPU를 사용하면 최대 이점을 얻을 수 있습니다. –
음 재귀 깊이가 있으므로 우리는 Tp = O (n) 시간에 해결하기 위해 O (log n) 개의 프로세서 만 사용합니다. 따라서 p * Tp = O (n log n). 고마워요. –