Lexikographische Ordnung
# Lexikographische Ordnung

Die lexikographische Ordnung ist eine Methode, um aus einer linearen Ordnung für einfache Objekte, beispielsweise alphabetisch angeordnete Buchstaben, eine lineare Ordnung für zusammengesetzte Objekte, beispielsweise aus Buchstaben zusammengesetzte Wörter, zu erhalten. Das namengebende Beispiel ist die Anordnung der Wörter in einem Lexikon: Sie werden zunächst nach ihren Anfangsbuchstaben sortiert, dann die Wörter mit gleichen Anfangsbuchstaben nach dem jeweils zweiten Buchstaben usw. Ist ein Wort ganz in einem anderen als Anfangsteil enthalten (wie beispielsweise „Tal“ in „Talent“), so wird das kürzere Wort zuerst aufgeführt.

Die lexikographische Ordnung über dem Standard-Alphabet wird generell als derart selbstverständlich angesehen, dass man kurz und einfach von der alphabetischen Ordnung spricht. Ein Suchbegriff kann außerordentlich schnell in einer sehr großen Menge von Suchbegriffen gefunden werden, wenn diese (nach einer totalen Ordnungsrelation) sortiert ist.

## Definition

Gegeben sei ein quasigeordnetes Alphabet $(\Sigma ,\leq )$, d. i. eine Menge von Zeichen $\Sigma$ mit der Relation $\leq$. Eine Zeichenkette $a=(a_{1},a_{2},\ldots )$ aus Zeichen dieses Alphabets ist lexikographisch kleiner als eine Zeichenkette $b=(b_{1},b_{2},\ldots )$, das heißt $a$ liegt in der Sortierung vor $b$, wenn beim komponentenweisen Vergleich Zeichen für Zeichen

| Maßgabe (A): | das Zeichen $a_{i}$ von $a$ mit dem niedrigsten Index $i$, in dem sich die beiden Zeichenketten unterscheiden, (echt) kleiner ist als das entsprechende Zeichen $b_{i}$ von $b$, also $a_{i}\leq b_{i}\wedge b_{i}\not \leq a_{i}$, |
| - | - |
| oder, wenn |
| Maßgabe (B): | $a$ ein Anfang von $b$ (d. h. $a_{i}\leq b_{i}\wedge b_{i}\leq a_{i}$ für alle verfügbaren $i$), aber kürzer ist. |

Meist wird für die zusammengesetzte Relation dasselbe Vergleichszeichen $\leq$ (resp. $<$ für die zugehörige Striktordnung) wie im Alphabet $\Sigma$ verwendet, da letztere Relation eine Einschränkung der ersteren ist und so Widersprüche nicht entstehen können.

Durch die lexikographische Zusammensetzung wird aus einer Quasiordnung im Alphabet eine Quasiordnung auf der Menge der Zeichenketten, aus einer totalen Quasiordnung wieder eine totale Quasiordnung, aus einer Halbordnung wieder eine Halbordnung und aus einer Totalordnung wieder eine Totalordnung (der häufigste Fall).

Ein Spezialfall dieser Zusammensetzung ist die lexikographische Ordnung von Folgen einer festen endlichen Länge. Dann wird die Maßgabe (B) nicht benötigt. Beispielsweise ist ein geordnetes Paar $(a_{1},a_{2})\in \Sigma ^{2}$ lexikographisch kleiner als ein Paar $(b_{1},b_{2})\in \Sigma ^{2}$, wenn

* entweder $a_{1}<b_{1}$
* oder $a_{1}=b_{1}$ und $a_{2}<b_{2}$

gilt.

## Beispiele

Ein Beispiel für eine derartige Ordnung ist die zeitliche Reihenfolge für Zahlentripel (Jahr, Monat, Tag): Ein Datum X ist früher als ein anderes Datum Y, wenn

* entweder die Jahreszahl von X kleiner ist als die Jahreszahl von Y
* oder die Jahreszahlen gleich sind, aber X in einem im Jahresverlauf früheren Monat liegt
* oder die Jahreszahlen und Monate gleich sind, aber der Tag von X kleiner als der Tag von Y ist.

Ein weiteres Beispiel ist die übliche Rangfolge innerhalb eines Medaillenspiegels, bei der als erstes Kriterium die Anzahl der Goldmedaillen ausschlaggebend ist, bei gleicher Goldmedaillenzahl die Anzahl der Silbermedaillen und bei nochmaligem Gleichstand die Anzahl der Bronzemedaillen:

| Land | Gold | Silber | Bronze |
| - | - | - | - |
| Land 1 | 10 | 5 | 7 |
| Land 2 | 8 | 7 | 4 |
| Land 3 | 8 | 5 | 7 |
| Land 4 | 5 | 3 | 7 |
| Land 5 | 5 | 3 | 2 |

## Mathematische Verwendung

### Unendliche Folgen

Die lexikographische Ordnung lässt sich auf unendliche Folgen fortsetzen: Eine Folge $(s_{i})_{i\in \mathbb {N} }$ ist lexikographisch kleiner als eine Folge $(t_{i})_{i\in \mathbb {N} }$ wenn beide Folgen vor einem Index $k$ gleich sind, aber $s_{k}<t_{k}$ ist. Besteht das Alphabet z. B. aus den Ziffern $\Sigma :=\{0,1,2,3,4,5,6,7,8,9\}$, so kann die Folge als ein Dezimalbruch interpretiert werden, der eine reelle Zahl zwischen $0$ und $1$ darstellt. Die lexikographische Ordnung der Folgen entspricht im Wesentlichen der reellen Ordnung im Intervall $[0,1]$. Allerdings haben die (abzählbar unendlich vielen) abbrechenden Dezimalbrüche, die also an ihren Enden nur Ziffern $0$ oder $9$ haben, zwei lexikographisch verschiedene Urbilder, bspw. $0{,}14=0{,}14000\ldots =0{,}13999\ldots$, aber lexikographisch $(1,3,9,9,9,\ldots )<(1,4,0,0,0,\ldots )$.

### Weitere Verallgemeinerung

Das Prinzip kann weiter ausgedehnt werden auf Folgen, in denen der Indexbereich eine beliebige wohlgeordnete Menge $W$ ist. In diesem Fall definiert man $f<g$ für Funktionen $f,g\colon W\to X$ (wobei $X$ linear geordnet ist), falls für das minimale Element $w$ des Definitionsbereiches $W$, für das sich $f$ und $g$ unterscheiden, $f(w)<g(w)$ gilt. Die so entstandene Ordnung auf den Funktionen ist wieder linear geordnet.

### Anwendung: Ketten in der Potenzmenge einer Ordinalzahl

In der Mengenlehre wird oft der Spezialfall betrachtet, bei dem die Indexmenge eine Ordinalzahl $\lambda$ ist und die Folgenglieder nur die Werte $0$ oder $1$ annehmen. Diese Grundmenge wird mit $2^{\lambda }$ bezeichnet und sie steht in einer bijektiven Beziehung zu der Potenzmenge von $\lambda$. Eine Ordinalzahl wird immer als die Menge ihrer Vorgänger-Ordinalzahlen gesehen. Einer Teilmenge $X$ von $\lambda$ kann man die Funktion $f_{X}\in 2^{\lambda }$ zuordnen für die $f_{X}(\sigma )=1$, wenn $\sigma \in {X}$ und $f_{X}(\sigma )=0$, wenn $\sigma \not \in {X}$. Umgekehrt kommt man von einer Funktion $f\in 2^{\lambda }$ mit der Menge $\{\sigma \in \lambda :f(\sigma )=1\}$ wieder zu einer Teilmenge von $\lambda$ . Wir betrachten jetzt $2^{\lambda }$ mit der lexikographischen Ordnung, wie sie oben definiert wurde. Diese lineare Ordnung kann für kombinatorische Fragen über unendliche Kardinalzahlen verwendet werden. Es gilt:

    Für jede wohlgeordnete Teilmenge $S$ von $2^{\lambda }$ gilt $|S|\leq |\lambda |$ .

Zum Beweis durch Induktion nehmen wir an, dass die Aussage für alle Ordinalzahlen $<\lambda$ bereits gegeben ist. Ist $\mu <\lambda$ so betrachten wir die Einschränkungen $f\mid _{\mu }$ der Funktionen $f\in 2^{\lambda }$ auf die Teilmenge $\mu =\{\nu <\mu \}$. Die Mengen $S_{\mu }=\{f\mid _{\mu }:f\in {S}\}$ sind dann wohlgeordnete Teilmengen der lexikographisch geordneten Mengen $2^{\mu }$ . Aus der Induktionsvoraussetzung folgt, dass $|S_{\mu }|\leq |\mu |\leq |\lambda |$. Jetzt nehmen wir wieder ein f in der wohlgeordneten Menge $S\subseteq 2^{\lambda }$ und betrachten auch den direkten Nachfolger $f^{+}\in {S}$. Wir definieren $\mu _{f}$ als das kleinste $\mu \in \lambda$ mit $f(\mu ){\neq }f^{+}(\mu )$. Dann gilt für $\mu <\mu _{f}$ stets $f(\mu )=f^{+}(\mu )$ sowie $f(\mu _{f})=0$ und $f^{+}(\mu _{f})=1$ . Zwei Funktionen $f$ und $g$ in $2^{\lambda }$ mit $\mu _{f}=\mu =\mu _{g}$ müssen sich schon unterhalb von $\mu$ unterscheiden. Nehmen wir an, dass $f\mid _{\mu }=g\mid _{\mu }$ gilt. Dann ist $f(\mu )=0$, $g(\mu )=0$, $f^{+}(\mu )=1$ und $g^{+}(\mu )=1$. Daraus folgt, dass in der lexikographischen Ordnung auch $f<g^{+}$ und $g<f^{+}$ gilt und folglich $f{\leq }g$ und $g{\leq }f$ , also $f=g$ . Die Mengen $\{f\in 2^{\lambda }:\mu _{f}=\mu \}$ für ein gegebenes $\mu \in \lambda$ werden also jeweils durch die Einschränkung auf $\mu$ injektiv auf eine Teilmengen von $S_{\mu }$ abgebildet und haben somit auch nur eine Mächtigkeit $\leq \lambda$. Da aber $S=\bigcup _{\mu \in \lambda }\{f{\in }S:\mu _{f}=\mu \}$, ist $|S|\leq |\lambda |\cdot |\lambda |=|\lambda |$ bewiesen.

## Verwendung in der Informatik

Der Arbeitsspeicher eines Computers kennt eine kleinste adressierbare Einheit, auch „Speicherstelle“ genannt. Ein Beispiel ist das Byte bestehend aus 8 Bits, sie kann aber auch aus einer anderen Anzahl von Bits bestehen, oder, wenn die Maschine im Dezimalsystem rechnet, eine Dezimalziffer beherbergen.

Zweckmäßigerweise sind die Inhalte zweier Speicherstellen (Bytes) auf der untersten Maschinenebene immer miteinander (im Sinne einer Totalordnung) vergleichbar. Zweckmäßigerweise sind die Ziffern resp. Buchstaben den Bitkombinationen eines Bytes so zugeordnet, dass diese Ordnung mit der üblichen Ordnung im Ziffernsystem resp. Alphabet übereinstimmt. Aufbauend auf diesem Grundbaustein eines Vergleichs lassen sich durch lexikographische Zusammensetzung zusammengesetzte Datentypen, beispielsweise mehrstellige Zeichenketten, miteinander vergleichen.

Korreliert die lexikographische Indizierung mit den Speicheradressen, hat also das beim Vergleichen höherrangige Byte die niedrigere Adresse, dann geschieht der Vergleich im Big-Endian-Stil, und im Little-Endian-Stil, wenn das höherrangige Byte die höhere Adresse hat. Da sich der lexikographische Vergleich im günstigsten Fall schon im ersten, höchstrangigen Byte entscheidet, ist er schneller, wenn dieses erste Byte im unmittelbaren Zugriff liegt.

### Vergleich langer numerischer Daten

Auf vielen neueren Maschinen werden numerische Datentypen fester Länge (hardware-mäßig) im Little-Endian-Format gespeichert. (Für die Motivation und die Maschinen-Typen siehe den Artikel Byte-Reihenfolge.) Für diese kurzen Aggregate (meist in der Länge 2, 4, 8 oder 16 Bytes) gibt es entsprechende Maschineninstruktionen für die Vergleiche. Diese Instruktionen sind nicht zusammengesetzt, so dass das lexikographische Prinzip nicht zum Zuge kommt.

Die Langzahlarithmetik unterstützt das Rechnen mit ganzen Zahlen beliebiger Länge, einer Länge, die nur durch den verfügbaren Arbeitsspeicher begrenzt ist. Der numerische Vergleich beginnt wie der lexikographische bei beiden Operanden am höchstrangigen Ende. Dabei wird der Rang einer Stelle nicht von ihrem Abstand von diesem bestimmt, sondern von ihrem Abstand vom niedrigstrangigen Ende, der »Einerstelle«. Vor dem Vergleich müssen also die Längen der beiden Operanden durch Auffüllen mit führenden Nullen angeglichen werden. Danach werden (beim numerischen wie beim lexikographischen Vergleich) gleiche Ränge in beiden Operanden miteinander verglichen.

Eine Auswahl von Langzahlarithmetik-Implementierungen findet sich im Abschnitt Langzahlarithmetik#Programmiersprachen. Das Vergleichen ist in diesen Softwarepaketen verglichen mit den vier Grundrechenarten aber eher ein Abfallprodukt. Die Verarbeitungsrichtung ist wie bei der Division von hochrangig zu niedrigrangig, bei Addition, Subtraktion und Multiplikation jedoch umgekehrt. Beide Arten der Speicherung, Big- und Little-Endian, können bei diesen fünf Operationen gut unterstützt werden, sofern auf beide Enden der Kette effizient zugegriffen werden kann.

### Verwendung bei Bitketten

Konzeptionell sind Bitketten nichts anderes als Zeichenketten über dem zweiziffrigen Alphabet $\Sigma :=\{0,1\}$. Wird eine Bit-Ziffer in (mindestens) einem Byte gespeichert, dann entspricht die Implementierung (und der lexikographische Vergleich) den üblichen Zeichenketten.

Bei einer kompakteren Implementierung mit 1 Bit pro Ziffer, also bspw. 8 Bit-Ziffern pro Byte oder 32 pro Wort, kann es, da alle Wörter genau gleich viele Bits enthalten und eine Kette eine beliebige nicht-negative Länge haben kann, passieren, dass im letzten (niedrigstrangigen) Wort unspezifizierte Bits anfallen, sog. Füllbits.

Wie bei den Zeichenketten startet der lexikographische Vergleich von Bitketten am Kettenanfang, bei der höchstrangigen Komponente (das ist Big-Endian-Stil und ist unabhängig von der Endianness der Maschine). Auf Big-Endian-Maschinen hat das höchstrangige Wort den niedrigsten Index und der Vergleich geht in die höheren Adressen wie bei den Zeichenketten. Auf Little-Endian-Maschinen müssen jedoch, wenn (pro Wort) die von der Maschine angebotenen Vergleichsinstruktionen verwendet werden sollen, die Komponenten genau umgekehrt angeordnet sein und das höchstrangige Wort den höchsten Index haben: der lexikographische Vergleich muss dort beginnen und sich zu den Bits niedrigeren Ranges (und niedrigerer Adresse) fortsetzen.

### Verwendung bei Zeichenketten

Beim Datentyp Zeichenkette ist die höchstrangige Komponente auf jedem Maschinentyp die (erste) mit der niedrigsten Adresse. Zeichenketten sind also auch auf Little-Endian-Maschinen im Big-Endian-Stil gespeichert.

Recht gute Unterstützung für den lexikographischen Vergleich von Zeichenketten gibt es in C, C++ mit:

* strcmp, lexikographischer Vergleich unter Berücksichtigung unterschiedlicher Längen im Sinn der Maßgabe (B), aber Einschränkung auf einen Zeichensatz (Alphabet) ohne das Abschlusszeichen null.
* memcmp, lexikographischer Vergleich mit gleichen (Byte-)Längen der beiden Zeichenketten, voller Zeichensatz.
* wcscmp, lexikographischer Vergleich von 16-Bit wide strings mit dem Basistyp wchar_t unter Berücksichtigung unterschiedlicher Längen im Sinn der Maßgabe (B), aber Einschränkung auf einen 2-Byte-Zeichensatz (Alphabet) ohne das Abschlusszeichen (wide) null.

## Anwendung in der Mikroökonomik

→ Siehe auch: Präferenzrelation

Sei durch $\mathbf {x} _{i}=\left(x_{i}^{1},x_{i}^{2},\ldots ,x_{i}^{m}\right)$ mit $i=a$ das Güterbündel / die Alternative $\mathbf {x} _{a}$ gegeben und mit $i=b$ die Alternative $\mathbf {x} _{b}$ ($x_{b}^{2}$ ist entsprechend beispielsweise die Menge von Gut 2 im Güterbündel $\mathbf {x} _{b}$). Man bezeichnet eine Präferenz-Indifferenz-Relation R als lexikographisch, wenn $\mathbf {x} _{a}R\mathbf {x} _{b}$ dann und nur dann, wenn entweder $x_{a}^{1}>x_{b}^{1}$ oder $x_{a}^{1}=x_{b}^{1}$ und zugleich $x_{a}^{2}\geq x_{b}^{2}$. Mit anderen Worten wird bei einer lexikographischen Präferenz-Indifferenz-Relation ein Güterbündel nur dann schwach gegenüber einem zweiten vorgezogen (das heißt als mindestens so gut wie dieses angesehen), wenn es mehr Einheiten vom ersten Gut enthält oder hilfsweise, falls beide Güterbündel gleich viele Einheiten von diesem Gut umfassen, wenn es mehr Einheiten vom zweiten Gut beinhaltet.

Eigenschaften der lexikographischen Präferenzenordnung:

* Eine lexikographische Präferenzenordnung ist vollständig, asymmetrisch (und folglich auch antisymmetrisch), negativ transitiv und transitiv. (Zur Definition der Eigenschaften wird auf den Artikel Präferenzrelation verwiesen.)
* Eine lexikographische Präferenzenordnung kann nicht durch eine Nutzenfunktion repräsentiert werden. (Debreu 1959)
