EDIT (marzec 2014) Powinienem powiedzieć, że od tego czasu pracowałem więcej nad algorytmami modeli obliczeniowych typu MapReduce i czuję, że byłem zbyt negatywny. Technika Divide-Compress-Conquer, o której mówię poniżej, jest zaskakująco wszechstronna i może być podstawą algorytmów, które moim zdaniem są nietrywialne i interesujące.
Pozwól, że dam odpowiedź, która będzie znacznie gorsza od Mike'a pod względem kompleksowości, ale z modelu obliczeniowego / teorii algorytmów.
Dlaczego jest podniecenie : MapReduce przeplata obliczenia równoległe i sekwencyjne; każdy procesor ma dostęp do nietrywialnego fragmentu (np. ) wejścia i może na nim wykonywać nietrywialne operacje; to bardzo różni się od modeli PRAM i wydaje się interesującym pomysłem, który może prowadzić do nowych technik algorytmicznych. W szczególności niektóre problemy można rozwiązać w kilku rundach obliczeń (o stałej wielkości wejściowej), natomiast w pamięci PRAM w nie można rozwiązać żadnych niebanalnych problemów .o ( log n )O(nϵ)o(logn)
Dlaczego model jest dla mnie trochę frustrujący : Jedyną techniką algorytmiczną, która wydaje się działać, aby uzyskać algorytmy i jest nieco nowa, są następująceO(1)
- Podziel wystąpienie problemu na partycje (często losowo)
- Czy jakieś obliczenia na każdej partycji równolegle i reprezentują wynik obliczeń kompaktowo
- Połącz wszystkie kompaktowo reprezentowane rozwiązania podproblemów na jednym procesorze i zakończ tam obliczenia
Bardzo prosty przykład techniki: oblicz sumę liczb. Każdy procesor ma tablicy i oblicza sumę tej części. Następnie wszystkie sumy można połączyć na jednym procesorze, aby obliczyć całkowitą sumę. Nieco ciekawszym ćwiczeniem jest obliczenie wszystkich sum prefiksów w ten sposób (oczywiście w takim przypadku dane wyjściowe muszą być reprezentowane w sposób rozproszony). Lub obliczyć rozciągające się drzewo gęstego wykresu.O ( √n √O(n−−√)n−−√
Teraz myślę, że to naprawdę interesujący zwrot akcji dziel i zwyciężaj, przy czym po etapie podziału musisz skompresować rozwiązania podproblemowe, aby pojedynczy procesor mógł zwyciężyć. Wydaje się jednak, że jest to jedyna technika, jaką do tej pory wymyśliliśmy. Nie działa w przypadku problemów z rzadkimi grafami, takich jak na przykład rzadka łączność. Porównaj to z modelem przesyłania strumieniowego, który doprowadził do wielu nowych pomysłów, takich jak genialny algorytm próbkowania Flajoleta i Martina, algorytm deterministycznego parowania Misry i Griesa, moc prostych technik szkicowania itp.
Jako paradygmat programowania redukcja mapy okazała się bardzo udana. Moje komentarze traktują redukcję mapy jako interesujący model obliczeń. Dobre modele teoretyczne są trochę dziwne. Jeśli zbyt blisko podążają za rzeczywistością, są nieporęczne, ale co ważniejsze (aby pożyczyć termin od uczenia maszynowego) twierdzenia udowodnione dla modeli, które są zbyt specyficzne, nie uogólniają, tj. Nie trzymają się innych modeli. Dlatego chcemy wyodrębnić jak najwięcej szczegółów, jednocześnie pozostawiając wystarczająco dużo, aby rzucić nam wyzwanie, aby wymyślić nowe algorytmy. Wreszcie, te nowe pomysły powinny ostatecznie znaleźć drogę do prawdziwego świata. PRAM to jeden nierealistyczny model, który doprowadził do interesujących pomysłów, ale te pomysły rzadko okazały się przydatne do obliczeń równoległych w świecie rzeczywistym. Z drugiej strony streaming jest również nierealny, ale zainspirowało idee algorytmiczne, które są faktycznie stosowane w prawdziwym świecie. Widziećszkic odliczający min . Techniki szkicowania są w rzeczywistości również stosowane w systemach opartych na redukcji map.