# DataMatrix-Code auf den Briefmarken der Deutschen Post AG

Ein DataMatrix-Code wird auf den Briefmarken der Deutschen Post AG seit 2021 aufgebracht.
Er dient der Entwertung, soll für eine erhöhte Fälschungssicherheit sorgen und vermittelt über eine von der Deutschen Post angebotene App auch Informationen zum Sendungsverlauf und zur verwendeten Briefmarke.

## Entwertung

Der Matrixcode löst in der Funktion der Entwertung den Poststempel ab. Nachdem eine Briefmarke zum Verkauf freigegeben ist, wird ihr Code in eine Positivliste aufgenommen. Durchläuft eine Sendung mit der Marke ein Briefzentrum, wird der Code dort abgelesen und wieder gelöscht. Der Poststempel dient nur noch der Information.

## Format und Platzierung

Das Symbol genannte Codebild hat das Format 16×48 Pixel (Höhe × Breite gemäß dem Standard ISO/IEC 16022:2006) und ist mit seinem Oberrand zur rechten Seite der Briefmarke orientiert. Sein nutzbarer Inhalt beträgt 14×44 = 616 Pixel, in denen 77 achtstellige Binärzahlen untergebracht sind. Dabei steht ein schwarzes Pixel für die Ziffer 1 und ein weißes Pixel für die Ziffer 0. Die optisch in zwei Hälften geteilte Datenfläche hängt inhaltlich zusammen.

## Der Aufbau des Symbols

Die 77 Binärzahlen, die als Codewörter (engl. codeword) bezeichnet werden, sind in charakteristischer Weise nach dem Standard ISO/IEC 16022:2024-05 in sogenannten Symbolzeichen (engl. symbol character) angeordnet. Das Grundmuster eines Symbolzeichens ist ein 3×3-Pixel-Quadrat, dem die rechte obere Ecke fehlt. Wegen seiner Ähnlichkeit mit dem Aussehen des US-amerikanischen Bundesstaates wird es auch als Utah-förmig bezeichnet. Die darin enthaltene Binärzahl wird zeilenweise von links oben nach rechts unten gelesen. Bei zwei benachbarten Symbolzeichen fasst die linke untere Ecke des einen in die ausgesparte Ecke des anderen. In den Randbereichen liegende Symbolzeichen erhält man durch das Übereinander- oder Nebeneinanderlegen der Datenbereiche zweier Symbole. Das oben angelegte muss um zwei Pixel nach links und das links angelegte um vier Pixel nach oben verschoben werden. Standardmäßig befindet sich das zweite Symbolzeichen in der linken oberen Ecke des Symbols, das erste Symbolzeichen (mit Anlegen) diagonal links darunter und das dritte Symbolzeichen (mit Anlegen) diagonal rechts darüber. Die Diagonalen benachbarter Symbolzeichen verlaufen abwechselnd nach rechts oben und links unten. Anders gebildet werden muss das achte Symbolzeichen, das sich in zwei Bereichen in der linken unteren und rechten oberen Ecke befindet und dessen darin enthaltene Zahl nacheinander erst links von oben nach unten und dann rechts von oben links nach rechts unten in der üblichen Leserichtung zusammengesetzt ist.
Von den 77 Binärzahlen sind die ersten 49 als Informationsträger nutzbar, während die Zahlen in den Symbolzeichen 50 bis 77 der Fehlerkorrektur nach dem Verfahren von Reed und Solomon (s. u.) dienen. Zwei der ersten 49 Zahlen werden hier zum Umschalten vom bei der Kodierung standardmäßig verwendeten Ascii-Modus in den Basis-256-Modus (s. u.) verbraucht, sodass für die Informationsübermittlung 47 achtstellige Binärzahlen zur Verfügung stehen. Diese Anzahl hat auch der von der Deutschen Post erstellte Quellcode. Darin werden die Binärzahlen zur besseren Lesbarkeit als zweistellige Hexadezimalzahlen mit den 16 „Ziffern“ 0 bis 9 und A bis F (oder a bis f) dargestellt, was wegen 2⁴ = 16 möglich ist (z. B. entspricht der Binärzahl 10110110 die Hexadezimalzahl B6). Diese Zahlen können einzeln oder zu mehreren zusammengefasst eine Information tragen. Für solche Zahlengruppen wird bei der Deutschen Post der Begriff Feld verwendet.

### Code-Typen

Der verwendeten Druckmaschine wird der Quellcode eingegeben, die in einer Recheneinheit daraus den Matrixcode berechnet und diesen dem schon fertigen Markenmotiv hinzudruckt. Die Druckerei Bagel Security Print einerseits und die Bundesdruckerei sowie Giesecke+Devrient und die im holländischen Haarlem ansässige Druckerei Koninklijke Joh. Enschedé andererseits verwenden dabei zwei unterschiedliche Softwares. Daraus lassen sich fünf verschiedene Matrixcode-Typen unterscheiden:
Bei den von Bagel gedruckten Marken:
* Bagel-Code: Der Aufruf des Basis-256-Modus (s. u.) erfolgt unmittelbar vor dem ersten Auftreten eines Quellcodewortes mit einem dezimalen Wert größer als 127. Dies ist immer in einem der Symbolzeichen 7 bis 10 der Fall. Die anschließende Längenangabe im Symbolzeichen x (x aus 8 bis 11) beträgt 49-x. Die Codes der bei Bagel gedruckten Marken sind gut an der „Kachelstruktur“ der schwarzen Pixel zu erkennen, mit Ausnahme der ersten dort gedruckten Markenausgaben, bei denen die schwarzen Pixel – wie bei den anderen Druckereien – flächig ineinander übergehen.
Bei den von der Bundesdruckerei, Giesecke+Devrient und Enschedé gedruckten Marken:
* 1-Code: Der Aufruf des Basis-256-Modus (s. u.) erfolgt im ersten Symbolzeichen. Die anschließende Längenangabe ist 0.
* 6-Code: Der Aufruf des Basis-256-Modus erfolgt im sechsten Symbolzeichen. Die anschließende Längenangabe ist 0.
* 7-Code: Der Aufruf des Basis-256-Modus erfolgt im siebenten Symbolzeichen. Die anschließende Längenangabe ist 0.
* 3x3y-Code: Siehe dazu den Abschnitt 3x3y-Verfahren.
    Diese vier Code-Typen werden gemeinsam verwendet. Vorherrschend ist der 1-Code. Ein 7- oder 6-Code tritt (offenbar) dann auf, wenn alle Quellcodewörter der laufenden Nummer (Feld 3, s. untere Tabelle) im dezimalen Zahlenbereich von 0 bis 63 und/oder von 90 oder 91 (das ist noch offen) bis 127 liegen und nicht die Voraussetzungen für einen 3x3y-Code vorliegen. Die theoretische Wahrscheinlichkeit für das Auftreten einer solchen Nummer liegt bei etwa 1/16. Ein 6-Code wird dabei (offenbar) dann verwendet, wenn das dritte und vierte Quellcodewort der laufenden Nummer in einem noch weiter eingeschränkten dezimalen Zahlenbereich (97 bis 122 ?) liegt. Die theoretische Wahrscheinlichkeit für das Auftreten einer solchen Nummer liegt bei etwa 1/250. Damit kommt man auf eine mittlere Wahrscheinlichkeit für das Auftreten eines 7-Codes von etwa 6 % und eines 6-Codes von etwa 0,4 %. Am seltensten ist der 3x3y-Code mit einer theoretischen Wahrscheinlichkeit von etwas mehr als 10²/256² (< 0,2 %).
Ein Algorithmus zum Erkennen der fünf Matrixcode-Typen:
* 1. Hat das zweite Codewort den dezimalen Wert 44?
** ja > 1-Code
** nein (dann hat dieses Codewort den dezimalen Wert 70) > gehe zu 2.
* 2. Wurde die Marke bei Bagel gedruckt? (Kachelstruktur, bei den ersten Ausgaben das 18. Codewort auf den dezimalen Wert 135 hin überprüfen)
** ja > Bagel-Code
** nein > gehe zu 3.
* 3. Hat das siebente Codewort den dezimalen Wert 231?
** ja > 7-Code
** nein > gehe zu 4.
* 4. Hat das sechste Codewort den dezimalen Wert 231?
** ja > 6-Code
** nein > 3x3y-Code (oder etwas bisher unerkanntes)

### Die Felder, deren Bedeutung und Lage im Symbol

Anmerkung: Beim 3x3y-Code gibt es Abweichungen von den Angaben in der folgenden Tabelle, siehe den Abschnitt 3x3y-Verfahren.
| Laufende Nummer des Feldes | Laufende Nummern der Quellcodewörter | Informationsgehalt, Art der Kodierung, Lage im Symbol |
| 1 | 1 bis 3 | Die Kennung DEA. DE ist das Länderkürzel für Deutschland, A steht für die Deutsche Post AG. Die Buchstaben liegen im Quellcode als Ascii-Werte vor. Sie werden einzeln kodiert, beim 1-Code im Basis-256-Modus, beim 6-, 7- und Bagel-Code im Ascii-Modus. Beim 1-Code sind dies im Symbol das 3. bis 5. Codewort, ansonsten das 1. bis 3. Codewort. |
| 2 | 4 | Die Kennung 5 für die Frankierungsart „Postwertzeichen“. Sie liegt im Quellcode als Ascii-Wert vor. Beim 1-Code wird sie im Basis-256-Modus, beim 6-, 7- und Bagel-Code im Ascii-Modus kodiert. Beim 1-Code ist dies im Symbol das 6. Codewort, ansonsten das 4. Codewort. |
| 3 | 5 bis 9 | Die laufende Nummer der Briefmarke innerhalb einer Ausgabe. Sie wird im Quellcode in eine zehnstellige Hexadezimalzahl umgewandelt, deren Stellen paarweise kodiert werden, beim 1-Code im Basis-256-Modus, beim 6-, 7- und Bagel-Code gemischt nacheinander im Ascii- und im Basis-256-Modus oder ganz im Ascii-Modus (vgl. die obigen Beschreibungen dieser Codes). Beim 1-Code sind dies im Symbol das 7. bis 11. Codewort, beim 6-Code das 5. und 8. bis 11. Codewort, beim 7-Code das 5., 6. und 9. bis 11. Codewort und beim Bagel-Code fünf Codewörter vom 5. bis 11. Codewort, je nachdem, wo in den Basis-256-Modus umgeschaltet wird. Die Hexadezimalzahl bildet, bei Weglassung der führenden Stelle 0, in der bei der Post-App angezeigten Identifikationsnummer der Briefmarke die Stellen 11 bis 19. (Die dortige Stelle 20 ist eine Prüfziffer, die im Code nicht enthalten ist.) |
| 4 | 10 bis 14 | Die sog. Nummernkreiskennung der Briefmarkenausgabe. Sie liegt im Quellcode als zehnstellige Hexadezimalzahl vor, wobei die ersten vier Stellen A4 01 bei allen Ausgaben gleich sind, die fünfte und sechste Stelle stets 0 ist und die letzten vier Stellen eine umgewandelte dezimale Ausgaben-spezifische Kennnummer sind. Die Stellen dieser Hexadezimalzahl werden paarweise im Basis-256-Modus kodiert. Im Symbol sind dies das 12. bis 16. Codewort. Diese Hexadezimalzahl bildet in der bei der Post-App angezeigten Identifikationsnummer der Briefmarke die Stellen 1 bis 10. |
| 5 | 15 | Nummer des abgebildeten Motivs. Sie wird jahrgangsweise vergeben und liegt im Quellcode als Zahl vor, die im Basis-256-Modus kodiert wird und im Symbol das 17. Codewort bildet. |
| 6 | 16 | Kennung der Druckerei. Sie liegt im Quellcode als Zahl vor, die im Basis-256-Modus kodiert wird und im Symbol das 18. Codewort bildet. 1 = Bundesdruckerei 2 = Bagel 3 = Giesecke+Devrient 4 = Enschedé |
| 7 | 17 | Kennung der Art und Form der Briefmarke. Sie liegt im Quellcode als Zahl vor, die im Basis-256-Modus kodiert wird und im Symbol das 19. Codewort bildet. 1 = Dauermarke (DM), nassklebend (nk), aus 10er-Bogen 2 = DM, nk, aus Rolle 3 = Sondermarke (SM), nk, aus 10er-Bogen 4 = SM, selbstklebend (sk), aus Markenset 6 = SM, sk, aus Rolle (Markenbox) 7 = Zuschlagsmarke (ZM), nk, aus 10er-Bogen 8 = ZM, sk, aus Markenset 9 = ZM, sk, aus Rolle (Markenbox) 10 = DM, sk, aus Markenset 11 = DM, sk, aus Rolle (Markenbox) 12 = DM, sk, aus Maxirolle 13 = SM, nk, aus Block 14 = ZM, nk, aus Block 25 = ZM, nk, aus Zusammendruck (auch Markenset) |
| 8 | 18 | Im Quellcode liegt hier bisher stets die (dezimale) Zahl 37 vor. Deren Bedeutung ist unbekannt. Sie wird im Basis-256-Modus kodiert und bildet im Symbol das 20. Codewort. |
| 9 | 19 bis 34 | Ein sogenannter Cryptostring. Dieser ist meist innerhalb einer Briefmarkenausgabe gleich. Er dient offenbar der Erzeugung eines sicheren Hashwertes, der anschließend folgt. Der Cryptostring wird im Basis-256-Modus kodiert und bildet im Symbol das 21. bis 36. Codewort. |
| 10 | 35 bis 38 | Ein sogenannter Hashwert (digitale Signatur). Da bei den bekannten Verfahren (z. B. SHA) der berechnete Hashwert eine größere Länge hat, wird hier offenbar nur ein Ausschnitt angezeigt. Der Hashwert wird im Basis-256-Modus kodiert und bildet im Symbol das 37. bis 40. Codewort. |
| 11 | 39 bis 40 | Das Ausgabedatum der Briefmarke im Format TTTJJ (Tag des Jahres und die beiden letzten Stellen der Jahreszahl). Dieses ist im Quellcode als fünfstellige Dezimalzahl in eine vierstellige Hexadezimalzahl umgerechnet, deren Stellen paarweise im Basis-256-Modus kodiert werden. Im Symbol sind dies das 41. und 42. Codewort. |
| 12 | 41 bis 42 | Der Nennwert der Briefmarke in Eurocent. Dieser ist im Quellcode in eine vierstellige Hexadezimalzahl umgerechnet, deren Stellen paarweise im Basis-256-Modus kodiert werden. Im Symbol sind dies das 43. und 44. Codewort. |
| 13 | 43 bis 47 | Kein eigentliches Feld ohne Information. Es wird jeweils die Zahl 0 im Basis-256-Modus kodiert. Im Symbol sind dies das 45. bis 49. Codewort. |
| - | - | Die Zeichen 50 bis 77 des Symbols beinhalten die Codewörter der Fehlerkorrektur nach dem Reed-Solomon-Verfahren. |

## Erläuterungen zu den Verfahren
### Basis-256-Modus

Neben dem beim DataMatrix-Code standardmäßig verwendeten Ascii-Modus, bei dem zur Vermeidung der Null der Matrixcodewert bei (dezimalen) Werten bis 128 gegenüber dem Quellcodewert um 1 höher ist, wird hier weitgehend der für die Kodierung von Zahlen und Nummern besonders geeignete Basis-256-Modus verwendet. Das Umschalten aus dem Ascii-Modus geschieht durch die Binärzahl 11100111 (dezimal 231). Im folgenden Symbolzeichen ist dann noch eine Längenangabe erforderlich, die schon im Basis-256-Modus kodiert ist. Die Kodierung der Null bedeutet hier, dass alles Weitere in diesem Modus kodiert ist.
Im Basis-256-Modus wird zur Vermeidung von eventuell gehäuft auftretenden Nullen jedem Symbolzeichen ein sogenannter R-Wert – eine sog. Pseudozufallszahl (engl. pseudo random number) – zugeordnet. Dieser wird (dezimal) wie folgt berechnet: Man multipliziert die Nummer des Symbolzeichens (NrZ) mit 149, teilt das Ergebnis durch 255, zieht davon den ganzzahligen Anteil ab, multipliziert den Rest wiederum mit 255 und addiert dazu noch die Zahl 1 ($((NrZ\cdot 149){\bmod {2}}55)+1$). Der Matrixcodewert ist die Summe vom Quellcodewert mit dem R-Wert, von der, falls sie größer oder gleich 256 ist, noch die Zahl 256 abgezogen werden muss. Umgekehrt ist der Quellcodewert die Differenz von Matrixcodewert und R-Wert, zu der, falls sie negativ ist, noch die Zahl 256 hinzugezählt werden muss.
Die R-Werte für die Symbolzeichen 2 bis 49 :
| Nummer des Zeichens | R-Wert | Nummer des Zeichens | R-Wert | Nummer des Zeichens | R-Wert | Nummer des Zeichens | R-Wert |
| 2 | 44 | 14 | 47 | 26 | 50 | 38 | 53 |
| 3 | 193 | 15 | 196 | 27 | 199 | 39 | 202 |
| 4 | 87 | 16 | 90 | 28 | 93 | 40 | 96 |
| 5 | 236 | 17 | 239 | 29 | 242 | 41 | 245 |
| 6 | 130 | 18 | 133 | 30 | 136 | 42 | 139 |
| 7 | 24 | 19 | 27 | 31 | 30 | 43 | 33 |
| 8 | 173 | 20 | 176 | 32 | 179 | 44 | 182 |
| 9 | 67 | 21 | 70 | 33 | 73 | 45 | 76 |
| 10 | 216 | 22 | 219 | 34 | 222 | 46 | 225 |
| 11 | 110 | 23 | 113 | 35 | 116 | 47 | 119 |
| 12 | 4 | 24 | 7 | 36 | 10 | 48 | 13 |
| 13 | 153 | 25 | 156 | 37 | 159 | 49 | 162 |

### 3x3y-Verfahren

Bei diesem im Ascii-Modus anwendbaren Verfahren werden zwei aufeinanderfolgende Quellcodewörter der hexadezimalen Form 3x und 3y mit den (hexadezimalen) Ziffern x und y aus dem Bereich von 0 bis 9 in ein einziges Matrixcodewort umgewandelt. Dabei werden die hexadezimalen Zahlen 3x und 3y gemäß der Ascii-Tabelle als Ascii-Zeichen x und y interpretiert, die zusammengefasst als zweistellige Zahl im Ascii-Modus (dezimal) mit {xy} + 130 kodiert werden. Umgekehrt erhält man aus so einem Matrixcodewort (das notwendigerweise (dezimal) zwischen 130 und 229 liegen muss) die beiden hexadezimalen Quellcodewörter, indem man davon (dezimal) 130 abzieht, die beiden Stellen des Ergebnisses (eventuell = 0) als einzelne Ascii-Zeichen auffasst und deren hexadezimale Ascii-Werte bestimmt (also jeweils hexadezimal 30 hinzuzählt).
Bekannte Anwendungen dieses Verfahrens:
* Treten zwei derartige Quellcodewörter innerhalb der laufenden Nummer der Briefmarkenausgabe (Feld 3) auf, so wird (wie bisher bekannt) bei in der Bundesdruckerei und bei Enschedé hergestellten Marken dieses Verfahren angewandt. Unmittelbar danach wird dann in den Basis-256-Modus umgeschaltet. Wegen des so eingesparten Matrixcodewortes rückt alles Weitere um ein Symbolzeichen nach vorne und im 49. Symbolzeichen erscheint das Codewort für das Auffüllen (padding), dezimal 129, allerdings nicht dann, wenn die beiden 3x3y-Quellcodewörter das vierte und fünfte der laufenden Nummer sind und das dritte dezimal größer als 127 ist, weil dafür im Ascii-Modus ein zusätzliches Umschaltcodewort nötig ist.
* Treten zwei derartige Quellcodewörter übergreifend am Ende der Nummernkreiskennung und bei der Motivnummer (Felder 4 und 5) auf, so wird bei den bisher drei dafür in Frage kommenden Ausgaben (95c Ballonpost, 2022, Mi.-Nr. 3705; 370c Leuchtmarke, 2022, Mi.-Nr. 3715; 85c Schloss Neuschwanstein, 2022, Mi.-Nr. 3716) – soweit bekannt – dieses Verfahren dann angewandt, wenn die Quellcodewerte im Bereich der laufenden Nummer (Feld 3) sämtlich (dezimal) kleiner als 128 sind. Dann werden die ersten drei Felder wie in der obigen Tabelle dargestellt im Ascii-Modus kodiert, wobei das dritte Feld im Symbol das 5. bis 9. Codewort bildet. Im 10. Symbolzeichen wird in den erweiterten Ascii-Modus umgeschaltet (Codewort dezimal 235), um das führende Quellcodewort der Nummernkreiskennung (hexadezimal A4) im 11. Symbolzeichen darzustellen. Die Kodierung der weiteren Quellcodewörter der Nummernkreiskennung erfolgt in den Symbolzeichen 12 bis 15, wobei das 15. Codewort die Motivnummer mit einschließt. Bei den beiden Ausgaben 370c Leuchtmarke und 85c Neuschwanstein wird der Basis-256-Modus offenbar stets im 17. Codewort aufgerufen, während dieser Aufruf bei der Ausgabe 95c Ballonpost im 18. Codewort erfolgt. In beiden Fällen wird die Kennung der Druckerei (Feld 6) im Ascii-Modus kodiert und bildet im Symbol das 16. Codewort. Die Kennung der Art und Form der Briefmarke (Feld 7) wird im ersten Fall im Basis-256-Modus kodiert und bildet im Symbol das 19. Codewort, im zweiten Fall wird sie im Ascii-Modus kodiert und bildet im Symbol das 17. Codewort. Ab dem 20. Symbolzeichen wird, soweit bisher bekannt, wie in der Tabelle beschrieben weiter verfahren (ab Feld 8).

### Reed-Solomon-Verfahren

Bei der hier verwendeten BCH-Methode des Reed-Solomon-Verfahrens werden die Codewörter C1 bis C49 der Symbolzeichen 1 bis 49 als Koeffizienten eines Polynoms vom Grad 48 im endlichen Zahlenkörper $\operatorname {GF} (256)$ aufgefasst, der als Faktorring $\operatorname {GF} (2)[X]/(f(X))$ zu dem (irreduziblen) Polynom $f(X)=X^{8}+X^{5}+X^{3}+X^{2}+1$ gebildet wird. Das obige Polynom wird noch mit $x^{28}$ multipliziert, so dass man das Polynom $C1\cdot x^{76}+C2\cdot x^{75}+...+C48\cdot x^{29}+C49\cdot x^{28}$ erhält. Dieses wird geteilt durch das sogenannte Generatorpolynom $x^{28}+255\cdot x^{27}+93\cdot x^{26}+168\cdot x^{25}+233\cdot x^{24}+151\cdot x^{23}+120\cdot x^{22}+136\cdot x^{21}+141\cdot x^{20}$$+213\cdot x^{19}+110\cdot x^{18}+138\cdot x^{17}+17\cdot x^{16}+121\cdot x^{15}+249\cdot x^{14}+34\cdot x^{13}+75\cdot x^{12}+53\cdot x^{11}$$+170\cdot x^{10}+151\cdot x^{9}+37\cdot x^{8}+174\cdot x^{7}+103\cdot x^{6}+96\cdot x^{5}+71\cdot x^{4}+97\cdot x^{3}+43\cdot x^{2}$$+231\cdot x+211\ (=(x-2)\cdot (x-2^{2})\cdot \ ...\ \cdot (x-2^{28}))$. Der Rest dieser Division ist ein Polynom vom Grad höchstens 27, dessen Koeffizienten (eventuell = 0) in absteigender Reihenfolge die Codewörter für die Fehlerkorrektur in den Symbolzeichen 50 bis 77 bilden.
Zu beachten ist die besondere Arithmetik in dem verwendeten Zahlenkörper. Addition und Subtraktion sind ein und dasselbe, dabei werden die einzelnen Stellen der binär dargestellten Zahlen mittels der Operation XOR verglichen (1 + 1 = 0, 1 + 0 = 1, 0 + 1 = 1, 0 + 0 = 0). Bei der Multiplikation werden die binär dargestellten Zahlen in entsprechende Polynome umgewandelt (z. B. wird 01001101 zu $x^{6}+x^{3}+x^{2}+1$). Das Produkt der Polynome wird durch das obige Polynom $x^{8}+x^{5}+x^{3}+x^{2}+1$ geteilt, der Rest dieser Division, wieder als Binärzahl dargestellt, ist dann das Ergebnis. Eine effektive Multiplikation (und Division) erfolgt mit Hilfe des in einer Wertetabelle zusammengestellten diskreten Logarithmus und dessen Umkehrfunktion.
Zum Auffinden und Verbessern von etwaigen Fehlstellen im Code, z. B. wegen Unleserlichkeit, ist im Standard ISO/IEC 16022:2006 als Möglichkeit der Peterson-Gorenstein-Zierler-Algorithmus beschrieben.