편집 (2014 년 3 월) 이후 MapReduce 유형의 계산 모델 알고리즘에 대해 더 많은 노력을 기울였으며 지나치게 부정적이라고 생각합니다. 아래에서 이야기하는 Divide-Compress-Conquer 기술은 놀랍도록 다재다능하며, 사소하고 흥미 롭다고 생각되는 알고리즘의 기초가 될 수 있습니다.
포괄적 인 측면에서 Mike의 계산보다 열등 할 수 있지만 계산 / 알고리즘 이론의 관점에서 볼 때 답을 제시하겠습니다.
흥분되는 이유 : MapReduce 는 병렬 및 순차적 계산을 인터리브합니다. 각 프로세서는 입력의 사소한 청크 (예 : )에 액세스 할 수 있으며 사소한 작업을 수행 할 수 있습니다. 그것은 PRAM 모델과는 매우 다르며 새로운 알고리즘 기법으로 이어질 흥미로운 아이디어처럼 보입니다. 특히, 일부 문제는 몇 번의 (입력 크기에 따라) 계산 계산으로 해결할 수있는 반면, PRAM에서는 시간 내에 사소한 문제를 해결할 수 없습니다 .O(nϵ)o(logn)
왜 모델이 약간 실망스러워 하는가 : 라운드 알고리즘 을 얻는데 효과가 있고 다소 새로운 알고리즘 기법 은 다음과 같습니다.O(1)
- 문제 인스턴스를 분할 (종종 무작위로)
- 각 파티션에서 일부 계산을 병렬로 수행하고 계산 결과를 컴팩트하게 나타냅니다.
- 컴팩트하게 표현 된 모든 하위 문제 솔루션을 단일 프로세서에 결합하고 계산을 완료하십시오.
이 기술의 매우 간단한 예 : 숫자 의 합을 계산하십시오 . 각 프로세서는 어레이의 를 가지며 해당 부분의 합계를 계산합니다. 그런 다음 모든 합계를 단일 프로세서에서 결합하여 총 합계를 계산할 수 있습니다. 약간 더 흥미로운 연습은 이런 방식으로 모든 접두사 합계를 계산하는 것입니다 (물론 출력은 분산 방식으로 표현되어야합니다). 또는 밀도 그래프의 스패닝 트리를 계산하십시오.nO(n−−√)n−−√
이제는 이것이 분할 및 정복에 대한 흥미로운 왜곡이라고 생각합니다. 분할 단계 후에 단일 프로세서가 정복 할 수 있도록 하위 문제 솔루션을 압축해야한다는 것이 비결입니다. 그러나 이것은 지금까지 우리가 생각 해낸 유일한 기술인 것 같습니다. 예를 들어 스파 스 연결과 같은 스파 스 그래프 문제에서는 실패합니다. 이것을 스트리밍 모델과 비교하면 Flajolet과 Martin의 독창적 인 샘플링 알고리즘, Misra와 Gries의 결정 론적 페어링 알고리즘, 간단한 스케치 기술의 힘 등과 같은 풍부한 새로운 아이디어가 생겼습니다.
프로그래밍 패러다임으로서 맵 축소는 매우 성공적이었습니다. 저의 의견은 맵 축소를 흥미로운 계산 모델로 간주합니다. 좋은 이론적 모델은 조금 이상합니다. 만약 그들이 현실을 너무 밀접하게 따르는 경우, 다루기 힘들지만, 더 중요한 것은 (머신 러닝에서 용어를 빌리기 위해) 너무 특이한 모델에 대한 이론은 일반화되지 않는다는 것, 즉 다른 모델에서는 유지하지 않는다는 것이 증명되었다. 그렇기 때문에 우리는 가능한 한 많은 세부 사항을 추상화하고 새로운 알고리즘을 생각해내는 데 어려움을 겪고 있습니다. 마지막으로, 새로운 아이디어는 결국 현실 세계로 돌아갈 수 있어야합니다. PRAM은 흥미로운 아이디어로 이어지는 비현실적인 모델이지만 실제 병렬 계산에는 거의 적용되지 않는 것으로 판명되었습니다. 반면 스트리밍은 비현실적입니다. 그러나 실제로 현실에서 사용되는 알고리즘 아이디어에 영감을주었습니다. 보다카운트 분 스케치 . 실제로 스케치 기법은 맵 축소를 기반으로하는 시스템에서도 사용됩니다.