www.wikidata.de-de.nina.az
In der Informatik ist die Prafixsumme einer Folge von Zahlen a0 a1 a2 die Zahlenfolge s0 s1 s2 ihrer Partialsummen s0 a0 s1 a0 a1 s2 a0 a1 a2 Beispielsweise ist die Prafixsumme der naturlichen Zahlen die Folge der Dreieckszahlen Eingabefolge 1 2 3 4 5 6 Prafixsumme 1 3 6 10 15 21 Die Prafixsumme ist mit einer einfachen Schleife sequenziell berechenbar indem mit der Formel si si 1 aifur i gt 0 jeder Summenwert sukzessive aufaddiert wird Die Prafixsumme bildet die Grundlage fur Algorithmen wie den Countingsort 1 Sie kann statt der Summierung als Basisoperation eine allgemeine assoziative binare Operation verwenden womit sie beispielsweise zur Polynominterpolation oder zur Stringbearbeitung eingesetzt 2 3 und in der funktionalen Programmierung auf Funktionen hoherer Ordnung angewandt werden kann in diesem Falle wird sie auch Scan genannt Da die Prafixsumme mit dem Fork join Modell 4 zudem effizient auf Mehrkernprozessorsystemen und Rechnerclustern berechnet werden kann spielt sie in Betrachtungen zu parallelen Algorithmen eine wichtige theoretische und praktische Rolle als zu losendes Testproblem ebenso wie als Subroutine wichtiger paralleler Algorithmen 5 6 7 Mathematisch kann die Berechnung der Prafixsumme von endlichen auf unendliche Folgen verallgemeinert werden Sie stellt dann eine Reihe dar Die Prafixsummierung ist ein linearer Operator auf einem Vektorraum endlicher oder unendlicher Folgen Seine Inverse ist ein Differenz Operator Inhaltsverzeichnis 1 Prafixoperationen Scans von Funktionen hoherer Ordnung 2 Parallele Berechnung 3 Anwendungen 4 Siehe auch 5 Weblinks 6 EinzelnachweisePrafixoperationen Scans von Funktionen hoherer Ordnung BearbeitenDie eigentliche Prafixsumme basiert auf der binaren Operation der Addition In der funktionalen Programmierung kann die Prafixsumme auf jede binare assoziative Operation verallgemeinert werden also statt einer Prafixsumme eine Prafixoperation darstellen Allerdings wird oft der Begriff Prafixsumme auch dafur verwendet Die aus dieser Verallgemeinerung resultierende Prafixoperation ist eine Funktion hoherer Ordnung und wird auch Scan genannt Zum Beispiel kann die Folge der Fakultaten ak als Prafixprodukt berechnet werden indem die Addition durch die Multiplikation ersetzt wird Eingabefolge 1 2 3 4 5 6 Prafixprodukt 1 2 6 24 120 720 Die Scan Operation ist daher ahnlich der Reduce Operation allerdings liefert Scan die gesamte Folge der Partialoperationen wahrend Reduce nur den Wert der letzten Partialoperation als Ergebnis liefert In Haskell gibt es zwei Varianten von Scan namlich scanl und scanl1 8 Die prozeduralen MPI Bibliotheken bieten eine Operation MPI Scan an um eine Scan Operation zwischen vernetzten Processoreinheiten zu berechnen Die Programmiersprache C hat eine Funktion partial sum in ihrer Standardbibliothek welche trotz ihres Namens eine Scan Operation mit einer beliebigen binaren Operation ausfuhrt Die Programmiersprache Java bietet ab der Version 1 8 in dem Standardpaket java util Arrays eine Methode parallelPrefix in mehreren Varianten an die neben dem zu bearbeitenden Array einen binaren Operator erwartet 9 Die Prafixsumme eines Arrays a k wird damit durch die folgende Anweisung berechnet und in dem Eingabearray gespeichert Arrays parallelPrefix a x y gt x y Der binare Operator ist hier als Lambda Ausdruck also eine anonyme Funktion mit zwei Parametern angegeben Entsprechend kann die Fakultat nach obigem Beispiel als Prafixprodukt Arrays parallelPrefix a x y gt x y programmiert werden Parallele Berechnung Bearbeiten nbsp Abfolge der Rechenschritte einer parallelen Prafixsumme mit 16 EingabeeintragenMit Hilfe des Fork join Modells 4 kann eine Prafixsumme mit den folgenden Schritten effizient parallel berechnet werden 5 10 11 Berechne die Summen der aufeinanderfolgenden Paareintrage in denen der erste Eintrag jeweils einen geraden Index hat z0 a0 a1 z1 a2 a3 Berechne rekursiv die Prafixsumme w0 w1 w2 der Folge z0 z1 z2 Drucke jeden Term der Ergebnisfolge s0 s1 s2 als die Summe von hochstens zwei Termen dieser Zwischenfolge aus y0 a0 y1 z0 y2 z0 a2 y3 w0 etc Nach dem ersten Wert ist jede sukzessive Zahl yi entweder eine Kopie des Werts mit halb so grossem Index in der Folge w oder sie ist der vorherige Wert plus einem Wert in der originalen Folge a Hat die Eingabefolge n Eintrage so schreitet die Rekursion bis zu einer Tiefe von O log n fort was ebenso die Begrenzung der parallelen Laufzeit darstellt Die Anzahl der Schritte des Algorithmus betragt O n und kann auf einer PRAM mit O n log n Prozessoren implementiert werden indem in Runden in denen mehr Eintrage als Prozessoren vorhanden sind einem Prozessor einfach mehrere Indizes zugewiesen werden 5 Parallele Algorithmen fur Prafixsummen konnen auf andere Prafixoperationen Scans assoziativer binarer Operationen verallgemeinert werden 5 6 Sie laufen effizient auf paralleler Hardware wie Mehrkernprozessoren GPU s oder Rechnerclustern ab 12 Viele parallele Implementierungen verwenden dazu zwei Durchgange im ersten Durchgang werden die partiellen Prafixsummen auf jeder Prozessoreinheit berechnet die Prafixsumme dieser Teilsummen wird dann berechnet und zum zweiten Durchgang an die einzelnen Prozessoreinheiten zuruckgesendet die nun mit dem bekannten Prafix als Anfangswert weiterrechnen Asymptotisch angenahert erfordert diese Methode etwa zwei Lese und eine Schreiboperation pro Eintrag Anwendungen BearbeitenCountingsort ist ein Algorithmus zur Sortierung einer Folge ganzer Zahlen der die Prafixsumme eines Histogramms der Schlusselhaufigkeiten verwendet um die Position jedes Schlussels in der sortierten Ausgabefolge zu bestimmen Der Algorithmus hat lineare Zeitkomplexitat O n fur ganzzahlige Schlusselwerte die kleiner als die Anzahl Eintrage sind und ebenso lineare Speicherkomplexitat Countingsort wiederum kann eine von zwei moglichen Subroutinen fur den Radixsort 1 List ranking ist das Problem eine verkettete Liste in ein Array derselben Elementfolge zu transformieren Es kann durch Berechnung einer Prafixsumme der Folge 1 1 1 und der Zuordnung jedes Listenelements zu seinem Prafixsummenwert als Array Index Durch Kombination von List Ranking Prafixsumme und Eulerkreise konnen viele wichtige Probleme an Baumstrukturen effizient durch parallele Algorithmen gelost werden 6 Parallele Prafixsummenalgorithmen konnen fur den Entwurf von Addierwerken verwendet werden also Boole schen Schaltnetzen die zwei n stellige Binarzahlen addieren Hierbei kann eine Folge von Ubertragbits als eine Prafixoperation der Konjunktion f x y x y displaystyle f x y x wedge y nbsp der Folge von Bitpaaren berechnet werden jedes Bit der Ergebniszahl ist dann ein XOR der beiden Eingabebits und des zugehorigen Ubertragbits Damit kann man ein paralleles Addierwerk fur n stellige Binarzahlen mit O n Logikgattern and O log n Rechenschritten realisieren 5 10 11 Der Gray Code einer ganzen binaren Zahl n kann einfach durch Berechnung des XOR von n und n 2 also der Rechtsverschiebung von n um ein Bit gebildet werden Die inverse Operation also die Dekodierung eines Gray Codes x in eine Binarzahl kann als Prafixsumme der Bits von x modulo 2 ausgedruckt werden also als Prafixoperation mit der assoziativen XOR Funktion f x 1 x 2 x 1 x 2 displaystyle f x 1 x 2 x 1 oplus x 2 nbsp 13 Parallele Prafixprodukte mit der Multiplikation als assoziative Operation konnen als Baustein von schnellen parallelen Algorithmen zur Polynominterpolation eingesetzt werden Insbesondere konnen sie zur Koeffizientenberechnung nach dem Schema der dividierten Differenz im Newton schen Algorithmus verwendet werden 14 Ahnlich kann die Hermite Interpolation oder die Interpolation von Funktionen mit Hilfe der Vandermonde Matrizen effizient parallel berechnet werden 15 Siehe auch BearbeitenReihe Mathematik Weblinks BearbeitenEric W Weisstein Cumulative Sum In MathWorld englisch Einzelnachweise Bearbeiten a b Thomas H Cormen Charles E Leiserson Ronald L Rivest Clifford Stein Introduction to Algorithms 2 Auflage MIT Press McGraw Hill 2001 ISBN 0 262 03293 7 8 2 Counting Sort S 168 170 Guy Blelloch Prefix Sums and Their Applications Lecture Notes Carnegie Mellon University 2011 Online PDF Paul Callahan S Rao Kosaraju A Decomposition of Multi Dimensional Point Sets with Applications to k Nearest Neighbors and n Body Potential Fields In Journal of the ACM Band 42 Nr 1 1995 a b A de Vries 2014 Funktionale Programmierung und Streams in Java PDF Einfuhrendes Vorlesungsskript Wirtschaftsinformatik FH Sudwestfalen Hagen 3 a b c d e R E Ladner M J Fischer Parallel Prefix Computation In Journal of the ACM Band 27 Nr 4 1980 S 831 838 doi 10 1145 322217 322232 a b c Robert E Tarjan Uzi Vishkin An efficient parallel biconnectivity algorithm In SIAM Journal on Computing Band 14 Nr 4 1985 S 862 874 doi 10 1137 0214061 S Lakshmivarahan S K Dhall Parallelism in the Prefix Problem Oxford University Press 1994 ISBN 0 19 508849 2 Haskell 98 Language and Libraries The Revised Report 2002 Standard Prelude Online Java SE 8 API 2014 a b Yuri Petrovich Ofman Ob algoritmicheskoj slozhnosti diskretnyh funkcij In Doklady Akademii Nauk SSSR Band 145 Nr 1 1962 S 48 51 russisch English translation On the algorithmic complexity of discrete functions In Soviet Physics Doklady 7 S 589 591 1963 a b V M Khrapchenko Asymptotic Estimation of Addition Time of a Parallel Adder In Problemy Kibernet Band 19 1967 S 107 122 russisch English translation in Syst Theory Res 19 1970 S 105 122 Shubhabrata Sengupta Mark Harris Yao Zhang John D Owens Proceedings of the 22nd ACM SIGGRAPH EUROGRAPHICS Symposium on Graphics Hardware 2007 Scan primitives for GPU computing S 97 106 Online Henry S Warren Hacker s Delight Addison Wesley 2003 ISBN 978 0 201 91465 8 S 236 Google Books O Egecioglu E Gallopoulos C Koc A parallel method for fast and practical high order Newton interpolation Band 30 Nr 2 1990 S 268 288 doi 10 1007 BF02017348 BIT Computer Science and Numerical Mathematics O Egecioglu E Gallopoulos C Koc Fast computation of divided differences and parallel Hermite interpolation In Journal of Complexity Band 5 1989 S 417 437 doi 10 1016 0885 064X 89 90018 6 Abgerufen von https de wikipedia org w index php title Prafixsumme amp oldid 228056973