mini|Iterationen 1, 2, 3 und 4 der Z-Kurve Die Z-Kurve (Lebesgue-Kurve, ) ist eine Abbildung, die Punkte aus dem mehrdimensionalen Raum in eine lineare Ordnung, die Z-Ordnung oder Morton-Ordnung, bringt, eine Ordnung mit nachbarschaftserhaltenden Eigenschaften: Wenn zwei Raumpunkte im Mehrdimensionalen nah beisammen liegen, liegen mit hoher Wahrscheinlichkeit auch ihre Z-Werte nah beisammen. Der Z-Wert eines Raumpunktes wird durch bitweises Verschränken der binären Koordinatenwerte berechnet.Streng genommen ist nicht diese Abbildung, sondern allenfalls ihre Umkehrung eine raumfüllende Kurve.
Mit Hilfe der Z-Ordnung lassen sich (effiziente) Verfahren, die auf einer linearen Ordnung beruhen, ins Mehrdimensionale übertragen. Dazu gehört Binäres Suchen, Binärer Suchbaum, Skip-Liste, B-Baum, oder ein B+-Baum.
Für eine effiziente mehrdimensionale Bereichssuche ist ein Algorithmus erforderlich, um, ausgehend von einem in der Datenstruktur außerhalb des Suchbereichs angetroffenen Punkt, den nächstmöglichen Z-Wert im Suchbereich zu bestimmen (BIGMIN/LITMAX)H. Tropf, H. Herzog: Multidimensional Range Search in Dynamically Balanced Trees. (PDF; 1,4 MB) In: Angewandte Informatik, 2/1981, S. 71–77.
Die Z-Ordnung ist beliebt aufgrund ihrer guten Nachbarschaftserhaltung und der einfachen Berechenbarkeit der Z-Werte. Bei der Hilbert-Kurve ist die Nachbarschaftserhaltung besser, doch sind die Rechnungen komplizierter.
Anwendungen finden sich bei der Nachbarschaftssuche in Datenbanken, bei diversen technischen Anwendungen, sowie – zur besseren Nutzung der Speicherhierarchie – in der linearen Algebra.
Zahlentheorie
330px|mini|Z-Kurve (grau) der dritten Iteration x-Bits blau, y-Bits rot Die nebenstehende Abbildung zeigt die Z-Werte im zweidimensionalen Fall für ganzzahlige Koordinaten . Das bitweise Verschränken der und (auch bitweises Verzahnen oder Binärbruchpressung genannt) ergibt die binären Verbindet man diese in ihrer aufsteigenden numerischen Reihenfolge, dann entsteht eine Kurve (Polygonzug), die Z-Kurve genannt wird.In der Literatur ist es Konvention, ganz rechts beim Index 0 mit einer -Stelle (Bit) zu beginnen und nach links alternierend mit einer -Stelle fortzusetzen. Dadurch entsteht die charakteristische Z-Form, wenn (wie in den Abbildungen) die nach rechts und die nach unten wächst. Die zugrunde liegende Abbildung sei in ihrer Iteration durch
spezifiziert. Sie lässt sich leicht auf höhere Dimensionen erweitern und ist umkehrbar eindeutig (bijektiv).Die Injektivität geht bei (genauer: im ) verloren. Die ebenfalls auftretenden Probleme mit der Rechtseindeutigkeit haben dieselbe Ursache (s. u.).
In den binären Darstellungen der Z-Werte für gibt es 1-Bits höchstens an Binärstellen mit geradem Index. Im System zur Basis 4 bestehen diese Zahlen also nur aus Ziffern 0 und Diese Zahlen heißen Z-Werte im engeren Sinn oder Moser-de Bruijn-Zahlen. Sie machen die aus.
Fürs Folgende sei diese Folge angegeben als , wobei der ersten Komponente der Index 0 gegeben wird. Summen und Differenzen zweier lassen sich bilden durch die bitweisen Operationen und falls , mit und mit den Operatoren für bitweises logisches UND und für bitweises logisches ODER, jeweils angewendet auf die in Bitketten aufgelösten Operanden.
Eine Formel zum Erzeugen des Folgeelements aus dem Vorgänger ist .
Anwendungen in der Informatik
Nachbarschaftssuche
rechts|300px|Rechteckiger Suchbereich Durch Bitverschränken werden die Datenbankeinträge in eine (möglicherweise sehr lange) Folge von Bits umgewandelt. Die Bitfolgen werden als Binärzahlen interpretiert, und die Datenbankeinträge werden nach den Binärwerten sortiert oder indiziert, wobei eine beliebige eindimensionale Datenstruktur verwendet wird, wie in der Einleitung erwähnt. Jedoch ist bei der Abfrage eines mehrdimensionalen Suchbereichs in diesen Daten eine binäre Suche nicht wirklich effizient. Trotz der guten Nachbarschaftserhaltung ist für die mehrdimensionale Bereichssuche ein Algorithmus erforderlich, um, ausgehend von einem in der Datenstruktur außerhalb des Suchbereichs angetroffenen Punkt, den nächstmöglichen Z-Wert zu bestimmen, dessen Koordinaten im Suchbereich liegen.
Im Beispiel der nebenstehenden Abbildung ist der Suchbereich (x=2..3, y=2..6), ein 2D-Intervall, als gestricheltes Rechteck angezeigt. Der höchste Z-Wert darin ist MAX=45. Angenommen, im Laufe der Suche wird der Wert F=19 angetroffen, bei Suche nach steigenden Werten. Das 1D-Intervall zwischen F und MAX (schraffiertes Gebiet) ist Obermenge des noch zu durchsuchenden Teils des Rechtecks. Um die Suche zu beschleunigen, wird der nächstmögliche Z-Wert im Suchbereich berechnet, im Folgenden BIGMIN genannt (36 im Beispiel). Dann muss nur das Intervall zwischen BIGMIN und MAX durchsucht werden (fett gezeichnete Werte), dadurch wird der Großteil des schraffierten Gebiets übersprungen. Die Suche nach fallenden Werten ist analog dazu, mit LITMAX, dem größten Z-Wert im Suchbereich, der kleiner ist als F. Das Problem und seine Lösung wurde zuerst im Jahr 1981 von Tropf und Herzog beschrieben. Zur Entwicklungsgeschichte nach der Veröffentlichung siehehttps://hermanntropf.de/media/DB-Artikel_Geschichte_und_Anwendungen.pdf
Die Methode wurde später auch in UB-Bäumen verwendet.
Indem man die Methode hierarchisch (entsprechend der verwendeten Datenstruktur) einsetzt, ggf. nach sowohl steigenden als auch fallenden Z-Werten, erhält man eine hocheffiziente mehrdimensionale Bereichssuche; dies ist nützlich sowohl in kommerziellen als auch technischen Anwendungen, z. B. als Grundfunktion für (Nächste-)Nachbarschaftssuchen.
Eine ausführliche Erläuterung des LITMAX/BIGMIN-Berechnungsalgorithmus, zusammen mit Pascal-Quellcode (3D, leicht an nD anzupassen) und Hinweisen zum Umgang mit Fließkommadaten und möglicherweise negativen Daten, wird bereitgestellt 2021 von Tropf.LITMAX/BIGMIN computation - Pascal source code Hier wird die Bitverschränkung nicht explizit durchgeführt; die Datenstruktur hat nur Zeiger auf die ursprünglichen (unsortierten) Datensätze. Mit einer allgemeinen Datensatz-Vergleichsfunktion (größer-kleiner-gleich, im Sinne des Z-Wertes) werden Komplikationen mit Bitfolgen vermieden, deren Länge die Computerwortlänge übersteigt, und der Code kann leicht an eine beliebige Anzahl von Dimensionen und jede Datensatz-Schlüsselwortlänge angepasst werden.
Die Methode wird verwendet in diversen technischen Anwendungen unterschiedlicher BereicheAnnotierte Liste von Artikeln über technische Anwendungen der Z-Kurve zur mehrdim. Bereichssuche und in DatenbanksystemenAnnotierte Liste von Artikeln über Datenbanken mit der Z-Kurve zur mehrdim. Bereichssuche und ist eine der wenigen mehrdimensionalen Zugriffsmethoden, die Eingang in kommerzielle Datenbanken gefunden haben.
Der Ansatz hängt nicht von der gewählten eindimensionalen Datenstruktur ab. Die freie Wahl der Struktur macht es einfacher, die Methode in bestehende Datenbanken zu integrieren. Dies steht im Gegensatz beispielsweise zu R-Bäumen, bei denen besondere Vorkehrungen erforderlich sind. So können z. B. für dynamische Daten fallbewährte, balancierte Strukturen verwendet werden, bei denen die Beibehaltung des Baumgleichgewichts beim Einfügen oder Löschen O(log n) Zeit benötigt.
Nutzung der Speicherhierarchie Moderne Mikroprozessoren bieten eine umfangreiche Speicherhierarchie. Auf hoher Ebene sind die Speicher schnell und ausschließlich einem einzelnen Kern zugewiesen, aber klein. Wenn der Datenzugriff eine hohe Lokalität aufweist, können übermäßige Datenübertragungen zwischen den verschiedenen Ebenen der Speicherhierarchie vermieden werden.Martin Perdacher: Space-filling curves for improved cache-locality in shared memory environments. Dissertation, Universität Wien 2020
So können Matrizen in der linearen Algebra auch anhand von einer raumfüllenden Kurve durchwandert werden. Herkömmliche Schleifen durchwandern eine Matrix zeilenweise. Das Durchwandern mit der Z-Kurve ermöglicht einen effizienten Zugriff auf den SpeicherMartin Perdacher, Claudia Plant, Christian Böhm: Improved Data Locality Using Morton-order Curve on the Example of LU Decomposition. IEEE BigData 2020: 351-360.
Analysis Binärbruchverschränkung Bemerkung zur Notation Um Undeutlichkeiten oder Verwechslungen mit dem Komma der Notationen für Intervalle oder Koordinatenpaare zu vermeiden, wird im Folgenden als Trennzeichen zu den Stellen mit negativen Exponenten der Punkt verwendet. Wir folgen diesbezüglich M. Bader wie auch in der Platzierung der Basis als Präfix bei diesem Punkt. Ferner verwenden wir zur Kennzeichnung offener reeller Intervalle die umgekehrten eckigen Klammern da die runden zur Kennzeichnung der benötigt werden.
Die durch unendliche Iteration der obigen Vorschrift „definierte“ und auf das Einheitsintervall normalisierte Abbildung
mit Ziffern
ist zunächst nicht wohldefiniert, weil es zu einem gekürzten Bruch mit Zweierpotenz im Nenner, also zu einem Element
mit abbrechender Binärdarstellung, zwei Möglichkeiten der Darstellung gibt.
Beispielsweise hat der Bruch die Darstellung mit einem
und die mit einem . Diese Wahlmöglichkeit (Gleichheit) ist bei endlichem nicht gegeben, im Limes aber sehr wohl, wo sie die für die Funktion erforderliche Rechtseindeutigkeit verletzt, da sie sich auf das Ergebnis der Verschränkung auswirkt. Die Rechtseindeutigkeit lässt sich aber, beispielsweise durch eine der folgenden Vorschriften, herstellen: Vorschrift ↓: Die Binärdarstellung eines Bruchs hat immer ein Das entspricht der üblichen abbrechenden Darstellung und einer Annäherung an von oben her.Diese Variante von sei mit bezeichnet. Vorschrift ↑: Die Binärdarstellung von 0 ist immer 2. Der Binärdarstellung eines (abbrechenden) Bruchs wird immer mit einem ausgestattet. (Ist bspw. die Zahl der Binärstellen rechts vom Binärpunkt, dann ist die zum Index gehörige Binärziffer und die Binärdarstellung zu nehmen.) Das entspricht einer Annäherung an von unten her, also einer linksseitigen Grenzwertbildung bei jeder Funktion, bei der es auf die Binärdarstellung ankommt, beispielsweise einem Limes .Für ist
sowie .Diese Variante von sei mit bezeichnet. Durch jede der beiden Vorschriften wird wohldefiniert und ist auch injektiv.
ist aber nicht surjektiv. Denn bei beiden Vorschriften gibt es bspw. zu Brüchen wie kein Urbild, da hierfür die zwingend ein und die zwingend ein haben müsste (resp. umgekehrt bei .) Das Bild des Einheitsquadrates ist jeweils
| || bei Vorschrift ↓ resp. |- | || bei Vorschrift ↑. |} Ihm fehlt in beiden Fällen zum Einheitsintervall eine abzählbare dichte Teilmenge. Somit ist es nicht kompakt. (Gleichwohl ist die abgeschlossene Hülle beider Bilder das abgeschlossene Intervall
Weder noch ist stetig, da an den Punkten eine infinitesimale Änderung des Arguments eine endliche Änderung des Funktionswerts bewirkt. Das kann man schon in der obigen Abbildung „dritte Iteration“ erkennen, beispielsweise am Einserschritt der von zu oder am Einserschritt der von Punkt zu Punkt , wo die Positionsnummer in der Z-Kurve um mehr als ein Drittel (32−10=22 > 64/3) resp. um mehr als ein Sechstel (16−5=11 > 64/6) ihrer Gesamtlänge (64) zunimmt.
Genaue ÜberlegungEnthält die Binärdarstellung einer Zahl keine 1, dann handelt es sich um die 0, und es gibt keine Wahlmöglichkeit, diese mit einem so darzustellen, dass derselbe Zahlenwert 0 herauskommt.
Für die Untersuchung der Stetigkeit an einem Punkt kann man die koordinatenweisen Differenzen der einseitigen Grenzwerte heranziehen. Denn genau dann, wenn beide Differenzen 0 sind, ist die Funktion am Punkt stetig. Ist weder noch ein abbrechender Binärbruch, dann stimmen die einseitigen Grenzwerte von überein und ist stetig bei . Ist aber beispielsweise ein abbrechender Binärbruch , dann entspricht der linksseitige Grenzwert einem von , während der rechtsseitige Grenzwert einem von entspricht.