Z-Kurve

Iterationen 1, 2, 3 und 4 der Z-Kurve

Die Z-Kurve (Lebesgue-Kurve, englisch Z-order curve) ist eine Abbildung, die Punkte aus dem mehrdimensionalen Raum in eine lineare Ordnung, die Z-Ordnung oder Morton-Ordnung,[1] 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.[Anm 1]

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)[2]

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

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 0 x 7 , 0 y 7 {\displaystyle 0\leq x\leq 7,\,0\leq y\leq 7} . Das bitweise Verschränken der x {\displaystyle x} - und y {\displaystyle y} -Werte (auch bitweises Verzahnen oder Binärbruchpressung genannt) ergibt die binären z {\displaystyle z} -Werte. Verbindet man diese in ihrer aufsteigenden numerischen Reihenfolge, dann entsteht eine Kurve (Polygonzug), die Z-Kurve genannt wird.[Anm 2] Die zugrunde liegende Abbildung sei in ihrer n {\displaystyle n} -ten Iteration durch

M n : ( { 0 , 1 , , 2 n 1 } 2 n ) 2 { 0 , 1 , , 4 n 1 } 4 n ( i = 1 n z 2 i 1 2 i , i = 1 n z 2 i 2 i ) i = 1 2 n z i 2 i {\displaystyle {\begin{array}{lllll}M_{n}\;\colon &{\Bigl (}\{0,1,\dotso ,2^{n}\!\!-\!\!1\}\cdot 2^{-n}{\Bigr )}^{2}&\to \{0,1,\dotso ,4^{n}\!\!-\!\!1\}\cdot 4^{-n}\\&\displaystyle {\Biggl (}\sum _{i=1}^{n}z_{2i-1}2^{-i},\;\sum _{i=1}^{n}z_{2i}2^{-i}{\Biggr )}&\mapsto \displaystyle \sum _{i=1}^{2n}z_{i}2^{-i}\\\end{array}}}

spezifiziert. Sie lässt sich leicht auf höhere Dimensionen erweitern und ist umkehrbar eindeutig (bijektiv).[Anm 3]

In den binären Darstellungen der Z-Werte M n ( x , 0 ) {\displaystyle M_{n}(x,0)} für y = 0 {\displaystyle y=0} 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 1.[Anm 4] Diese Zahlen heißen Z-Werte im engeren Sinn oder Moser-de Bruijn-Zahlen. Sie machen die Folge A000695 in OEIS aus.

Fürs Folgende sei diese Folge angegeben als

z [ ] = { 0 2 , 1 2 , 100 2 , 101 2 , 10000 2 , 10001 2 , 10100 2 , 10101 2 , } {\displaystyle z[\,]=\{0_{2},1_{2},100_{2},101_{2},10000_{2},10001_{2},10100_{2},10101_{2},\,\dotso \}} ,

wobei der ersten Komponente der Index 0 gegeben wird. Summen und Differenzen zweier z {\displaystyle z} -Komponenten lassen sich bilden durch die bitweisen Operationen

z [ i + j ] = ( ( z [ i ] 10 ¯ 2 ) + z [ j ] ) 01 ¯ 2 {\displaystyle z[i+j]=((z[i]\lor {\overline {10}}_{2})+z[j])\land {\overline {01}}_{2}} und
z [ i j ] = ( ( z [ i ] 01 ¯ 2 ) z [ j ] ) 01 ¯ 2 {\displaystyle z[i-j]=((z[i]\land {\overline {01}}_{2})-z[j])\land {\overline {01}}_{2}} falls i j {\displaystyle i\geq j} ,

mit 01 ¯ 2 := 01 ¯ 0101 2 {\displaystyle {\overline {01}}_{2}:=\dotso {\overline {01}}0101_{2}} und mit den Operatoren {\displaystyle \land } für bitweises logisches UND und {\displaystyle \lor } für bitweises logisches ODER, jeweils angewendet auf die in Bitketten aufgelösten Operanden.

Eine Formel zum Erzeugen des Folgeelements z [ i + 1 ] {\displaystyle z[i+1]} aus dem Vorgänger z [ i ] {\displaystyle z[i]} ist

z [ i + 1 ] := ( ( z [ i ] 10 ¯ 2 ) + 1 ) 01 ¯ 2 {\displaystyle z[i+1]:=((z[i]\vee {\overline {10}}_{2})+1)\land {\overline {01}}_{2}} .[3]

Anwendungen in der Informatik

Nachbarschaftssuche

Rechteckiger Suchbereich
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[2].

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.[4] 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 Bereiche[5] und in Datenbanksystemen[6] und ist eine der wenigen mehrdimensionalen Zugriffsmethoden, die Eingang in kommerzielle Datenbanken gefunden haben.[7]

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.[8]

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 Speicher[9].

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 ] 0 , 1 [   , {\displaystyle ]0,1[~,} da die runden zur Kennzeichnung der ( x , y ) {\displaystyle (x,y)} -Paare benötigt werden.

Die durch unendliche Iteration der obigen Vorschrift M n {\displaystyle M_{n}} „definierte“ und auf das Einheitsintervall normalisierte Abbildung

M : [ 0 , 1 [ × [ 0 , 1 [ [ 0 , 1 [ ( i = 1 z 2 i 1 2 i , i = 1 z 2 i 2 i ) i = 1 z i 2 i = lim n M n ( i = 1 n z 2 i 1 2 i , i = 1 n z 2 i 2 i ) {\displaystyle {\begin{array}{lllll}M\;\colon &[0,1[&\times &[0,1[&\to &[0,1[\\&{\Biggl (}\displaystyle \sum _{i=1}^{\infty }z_{2i-1}2^{-i}&,&\displaystyle \sum _{i=1}^{\infty }z_{2i}2^{-i}{\Biggr )}&\mapsto &\displaystyle \sum _{i=1}^{\infty }z_{i}2^{-i}\\&&&&=&\displaystyle \lim _{n\to \infty }M_{n}\left(\displaystyle \sum _{i=1}^{n}z_{2i-1}2^{-i},\;\;\sum _{i=1}^{n}z_{2i}2^{-i}\right)\\\end{array}}}

mit Ziffern z i { 0 , 1 } {\displaystyle z_{i}\in \{0,1\}} ist zunächst nicht wohldefiniert, weil es zu einem gekürzten Bruch mit Zweierpotenz im Nenner, also zu einem Element

x E := N 2 N ] 0 , 1 [ {\displaystyle x\in E:=\mathbb {N} 2^{-\mathbb {N} }\,\cap \,\,]0,1[}

mit abbrechender Binärdarstellung, zwei Möglichkeiten der Darstellung gibt.

Beispielsweise hat der Bruch x = 1 2 {\displaystyle x={\tfrac {1}{2}}} die Darstellung mit einem 02-Ende

1 2 = 1 2 1 + i = 2 0 2 i = 0 2 .1 0 ¯ {\displaystyle {\tfrac {1}{2}}=\displaystyle 1\cdot 2^{-1}+\sum _{i=2}^{\infty }0\cdot 2^{-i}=0_{2}.1{\overline {0}}}

und die mit einem 12-Ende

1 2 = 0 2 1 + i = 2 1 2 i = 0 2 .0 1 ¯ {\displaystyle {\tfrac {1}{2}}=\displaystyle 0\cdot 2^{-1}+\sum _{i=2}^{\infty }1\cdot 2^{-i}=0_{2}.0{\overline {1}}} .

Diese Wahlmöglichkeit (Gleichheit) ist bei endlichem n {\displaystyle n} nicht gegeben, im Limes lim n {\displaystyle \textstyle \lim _{n\to \infty }} aber sehr wohl, wo sie die für die Funktion M {\displaystyle M} 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 w E {\displaystyle w\in E} hat immer ein 02-Ende. Das entspricht der üblichen abbrechenden Darstellung und einer Annäherung an w {\displaystyle w} von oben her.
Diese Variante von M {\displaystyle M} sei mit M {\displaystyle M_{\downarrow }} bezeichnet.
Vorschrift ↑:  Die Binärdarstellung von 0 ist immer 02. Der Binärdarstellung eines (abbrechenden) Bruchs w E {\displaystyle w\in E} wird immer mit einem 12-Ende ausgestattet. (Ist bspw. k := min { k w 2 k Z } {\displaystyle k:=\min\{k\mid w\cdot 2^{k}\in \mathbb {Z} \}} die Zahl der Binärstellen rechts vom Binärpunkt, dann ist die zum Index k {\displaystyle k} gehörige Binärziffer z k = 1 {\displaystyle z_{k}=1} und die Binärdarstellung w = 2 k ( w 2 k 1 + i = 1 2 i ) {\displaystyle w=2^{-k}\cdot {\bigl (}w\cdot 2^{k}-1+\textstyle \sum _{i=1}^{\infty }2^{-i}{\bigr )}} zu nehmen.) Das entspricht einer Annäherung an w {\displaystyle w} von unten her, also einer linksseitigen Grenzwertbildung bei jeder Funktion, bei der es auf die Binärdarstellung ankommt, beispielsweise einem Limes lim n M ( x 2 n , y 2 n ) {\displaystyle \textstyle \lim _{n\to \infty }M(x-2^{-n},y-2^{-n})} .[Anm 5]
Diese Variante von M {\displaystyle M} sei mit M {\displaystyle M_{\uparrow }} bezeichnet.

Durch jede der beiden Vorschriften wird M {\displaystyle M} wohldefiniert und ist auch injektiv.

M {\displaystyle M} ist aber nicht surjektiv. Denn bei beiden Vorschriften gibt es bspw. zu Brüchen wie z = 0 2 .01 10 ¯ = 0 4 .1 2 ¯ = 5 12 [ 0 , 1 [ {\displaystyle z=0_{2}.01{\overline {10}}=0_{4}.1{\overline {2}}={\tfrac {5}{12}}\in [0,1[} kein Urbild, da hierfür die x {\displaystyle x} -Koordinate zwingend ein 02-Ende und die y {\displaystyle y} -Koordinate zwingend ein 12-Ende haben müsste (resp. umgekehrt bei z = 0 2 .10 01 ¯ = 0 4 .2 1 ¯ = 7 12 {\displaystyle z=0_{2}.10{\overline {01}}=0_{4}.2{\overline {1}}={\tfrac {7}{12}}} .) Das Bild des Einheitsquadrates ist jeweils

M ( [ 0 , 1 [ 2 ) = [ 0 , 1 [ ( N 2 N + { 1 3 , 1 3 } ) {\displaystyle M_{\downarrow }{\bigl (}[0,1[^{2}{\bigr )}\;=\;\;\;[0,1[\;\setminus \;{\bigl (}\mathbb {N} 2^{-\mathbb {N} }+\{-{\tfrac {1}{3}},{\tfrac {1}{3}}\}{\bigr )}} bei Vorschrift ↓ resp.
M ( [ 0 , 1 [ 2 ) = ( [ 0 , 1 [ ( N 2 N + { 1 3 , 1 3 } ) ) ( 1 3 2 N ) {\displaystyle M_{\uparrow }{\bigl (}[0,1[^{2}{\bigr )}\;=\;{\Bigl (}[0,1[\;\setminus \;{\bigl (}\mathbb {N} 2^{-\mathbb {N} }+\{-{\tfrac {1}{3}},{\tfrac {1}{3}}\}{\bigr )}{\Bigr )}\cup {\bigl (}{\tfrac {1}{3}}\cdot 2^{-\mathbb {N} }{\bigr )}} 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 [ 0 , 1 ] {\displaystyle [0,1]} .)

Weder M {\displaystyle M_{\downarrow }} noch M {\displaystyle M_{\uparrow }} ist stetig, da an den Punkten E {\displaystyle \in E} 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 y {\displaystyle y} -Koordinate von ( 000 2 , 011 2 ) 001010 2 = 10 d e z {\displaystyle (000_{2},011_{2})\mapsto 001010_{2}=10_{\rm {dez}}} zu ( 000 2 , 100 2 ) 100000 2 = 32 {\displaystyle (000_{2},100_{2})\mapsto 100000_{2}=32} oder am Einserschritt der x {\displaystyle x} -Koordinate von Punkt ( 011 2 , 000 2 ) 000101 2 = 5 {\displaystyle (011_{2},000_{2})\mapsto 000101_{2}=5} zu Punkt ( 100 2 , 0 ) 010000 2 = 16 {\displaystyle (100_{2},0)\mapsto 010000_{2}=16} , 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 Überlegung

Enthält die Binärdarstellung einer Zahl [ 0 , 1 [ {\displaystyle \in [0,1[} keine 1, dann handelt es sich um die 0, und es gibt keine Wahlmöglichkeit, diese mit einem 12-Ende so darzustellen, dass derselbe Zahlenwert 0 herauskommt.

Für die Untersuchung der Stetigkeit an einem Punkt ( x , y ) ] 0 , 1 [ 2 {\displaystyle (x,y)\in \,]0,1[^{2}} kann man die koordinatenweisen Differenzen der einseitigen Grenzwerte heranziehen. Denn genau dann, wenn beide Differenzen 0 sind, ist die Funktion am Punkt ( x , y ) {\displaystyle (x,y)} stetig. Ist weder x {\displaystyle x} noch y {\displaystyle y} ein abbrechender Binärbruch, dann stimmen die einseitigen Grenzwerte von M ( x , y ) {\displaystyle M(x,y)} überein[Anm 5] und M {\displaystyle M} ist stetig bei ( x , y ) {\displaystyle (x,y)} . Ist aber beispielsweise x {\displaystyle x} ein abbrechender Binärbruch E {\displaystyle \in E} , dann entspricht der linksseitige Grenzwert einem 12-Ende von x {\displaystyle x} , während der rechtsseitige Grenzwert einem 02-Ende von x {\displaystyle x} entspricht.[Anm 6]

Zunächst werde eine Binärbruchverschränkung M ( x , y ) {\displaystyle M(x,y)} für ( x , y ) ] 0 , 1 [ × E {\displaystyle (x,y)\,\in \;\,]0,1[\,\times E} untersucht mit nicht abbrechendem x ] 0 , 1 [ {\displaystyle x\in \,]0,1[} und abbrechendem y = 0 2 . y 1 y k 1 y k y k + 1 {\displaystyle y=0_{2}.y_{1}\dotso y_{k-1}y_{k}y_{k+1}} mit y k = 1 {\displaystyle y_{k}=1} und y k + 1 = 0 {\displaystyle y_{k+1}=0} .

y {\displaystyle y} mit 02-Ende y k 1 {\displaystyle y_{k-1}} x k 1 {\displaystyle x_{k-1}} 1 {\displaystyle 1} x k {\displaystyle x_{k}} 0 {\displaystyle 0} x k + 1 {\displaystyle x_{k+1}} 0 {\displaystyle 0} x k + 2 {\displaystyle x_{k+2}}
y {\displaystyle y} mit 12-Ende y k 1 {\displaystyle y_{k-1}} x k 1 {\displaystyle x_{k-1}} 0 {\displaystyle 0} x k {\displaystyle x_{k}} 1 {\displaystyle 1} x k + 1 {\displaystyle x_{k+1}} 1 {\displaystyle 1} x k + 2 {\displaystyle x_{k+2}}
Überträge   0 {\displaystyle \scriptstyle 0}   0 {\displaystyle \scriptstyle 0}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 ¯ {\displaystyle \scriptstyle {\overline {1}}}
Differenz 0 {\displaystyle 0} 0 {\displaystyle 0} 0 {\displaystyle 0} 1 {\displaystyle 1} 0 {\displaystyle 0} 1 {\displaystyle 1} 0 {\displaystyle 0} 1 {\displaystyle 1}

Die erste Zeile enthält die verschränkten Binärziffern von M ( x , y ) {\displaystyle M(x,y)} , wenn y {\displaystyle y} mit 02-Ende dargestellt wird, die zweite für dasselbe y {\displaystyle y} dargestellt mit 12-Ende, die dritte enthält die Überträge der binären Subtraktion und die vierte Zeile enthält die Sprunghöhe, d. i. die Differenz »abbrechendes y {\displaystyle y} « der ersten beiden Zeilen im Limes, also

lim η y M ( x , η ) lim η y M ( x , η ) = M ( x , y ) M ( x , y ) = 0 2 .00 . . 01 ¯ = 0 4 .0 . 1 ¯ = 4 k + 1 3 = 2 2 k + 2 3   . {\displaystyle \lim _{\eta \downarrow y}M(x,\eta )-\lim _{\eta \uparrow y}M(x,\eta )=M_{\downarrow }(x,y)-M_{\uparrow }(x,y)=0_{2}.00..{\overline {01}}=0_{4}.0.{\overline {1}}={\frac {4^{-k+1}}{3}}={\frac {2^{-2k+2}}{3}}~.}

Für ( x , y ) E × ] 0 , 1 [ {\displaystyle (x,y)\in E\times \,]0,1[} mit abbrechendem x = 0 2 . x 1 x k 1 x k x k + 1 {\displaystyle x=0_{2}.x_{1}\dotso x_{k-1}x_{k}x_{k+1}} bei x k = 1 {\displaystyle x_{k}=1} und x k + 1 = 0 {\displaystyle x_{k+1}=0} und mit nicht abbrechendem y ] 0 , 1 [ {\displaystyle y\in \,]0,1[} ist analog

x {\displaystyle x} mit 02-Ende y k {\displaystyle y_{k}} 1 {\displaystyle 1} y k + 1 {\displaystyle y_{k+1}} 0 {\displaystyle 0} y k + 2 {\displaystyle y_{k+2}} 0 {\displaystyle 0}
x {\displaystyle x} mit 12-Ende y k {\displaystyle y_{k}} 0 {\displaystyle 0} y k + 1 {\displaystyle y_{k+1}} 1 {\displaystyle 1} y k + 2 {\displaystyle y_{k+2}} 1 {\displaystyle 1}
Überträge   0 {\displaystyle \scriptstyle 0}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 {\displaystyle \scriptstyle 1}   1 ¯ {\displaystyle \scriptstyle {\overline {1}}}
Differenz 0 {\displaystyle 0} 0 {\displaystyle 0} 1 {\displaystyle 1} 0 {\displaystyle 0} 1 {\displaystyle 1} 0 {\displaystyle 0}

Die Differenz »abbrechendes x {\displaystyle x} « ist im Limes

lim ξ x M ( ξ , y ) lim ξ x M ( ξ , y ) = M ( x , y ) M ( x , y ) = 0 2 .00 . . . . 10 ¯ = 0 4 .0 . . 2 ¯ = 4 k + 1 2 3 = 2 2 k + 1 3   . {\displaystyle \lim _{\xi \downarrow x}M(\xi ,y)-\lim _{\xi \uparrow x}M(\xi ,y)=M_{\downarrow }(x,y)-M_{\uparrow }(x,y)=0_{2}.00....{\overline {10}}=0_{4}.0..{\overline {2}}={\frac {4^{-k+1}}{2\cdot 3}}={\frac {2^{-2k+1}}{3}}~.}

Ist ( x , y ) E × E {\displaystyle (x,y)\in E\times E} , dann addieren sich die Sprunghöhen.

Raumfüllend

Zur Berechnung der (x,y)-Koordinaten der Z-Kurve aus den verschränkten Bits eines z-Werts, im Beispiel 2479

Die „Umkehrfunktion“

U : [ 0 , 1 [ [ 0 , 1 [ × [ 0 , 1 [ i = 1 z i 2 i ( i = 1 z 2 i 1 2 i , i = 1 z 2 i 2 i ) {\displaystyle {\begin{array}{lllll}U\,\colon &\;[0,1[&\to &[0,1[&\times &[0,1[\\&\displaystyle \sum _{i=1}^{\infty }z_{i}2^{-i}&\mapsto &{\Biggl (}\displaystyle \sum _{i=1}^{\infty }z_{2i-1}2^{-i}&,&\displaystyle \sum _{i=1}^{\infty }z_{2i}2^{-i}{\Biggr )}\end{array}}}

mit z i { 0 , 1 } {\displaystyle z_{i}\in \{0,1\}} ist – wie das obige M {\displaystyle M} aus demselben Grund der fehlenden Rechtseindeutigkeit infolge mehrdeutiger binärer Darstellbarkeit – zunächst nicht wohldefiniert. Wie dort lässt sich die Rechtseindeutigkeit durch die Vorschrift herstellen, dass ein Bruch z E {\displaystyle z\in E} entweder immer nur mit 02-Ende (Vorschrift ↓) oder immer nur mit 12-Ende (Vorschrift ↑) zu expandieren ist. Je nachdem sei die Variante von U {\displaystyle U} mit U {\displaystyle U_{\downarrow }} oder mit U {\displaystyle U_{\uparrow }} bezeichnet. Durch jede der beiden Vorschriften wird U {\displaystyle U} wohldefiniert. Sie bildet das Einheitsintervall [ 0 , 1 [ {\displaystyle [0,1[} surjektiv („raumfüllend“) auf das Einheitsquadrat [ 0 , 1 [ 2 {\displaystyle [0,1[^{2}} ab.

U {\displaystyle U} ist aber nicht injektiv, denn die Punkte aus ( E × [ 0 , 1 [ ) ( [ 0 , 1 [ × E ) {\displaystyle (E\times [0,1[)\,\cup \,([0,1[\,\times E)} haben mehrere Urbilder. Beispielsweise hat der Punkt ( 1 2 , 1 3 ) E × [ 0 , 1 [ {\displaystyle ({\tfrac {1}{2}},{\tfrac {1}{3}})\in E\times [0,1[} sowohl

23 60 {\displaystyle {\tfrac {23}{60}}} wegen U ( 23 60 ) = U ( 0 4 .1 20 ¯ ) = U ( 0 2 .01 1000 ¯ ) = ( 0 2 .10 , 0 2 . 01 ¯ ) = ( 1 2 , 1 3 ) {\displaystyle U({\tfrac {23}{60}})=U(0_{4}.1{\overline {20}})=U(0_{2}.01{\overline {1000}})=(0_{2}.10,0_{2}.{\overline {01}})=({\tfrac {1}{2}},{\tfrac {1}{3}})} als auch
13 60 {\displaystyle {\tfrac {13}{60}}} wegen U ( 13 60 ) = U ( 0 4 .0 31 ¯ ) = U ( 0 2 .00 1101 ¯ ) = ( 0 2 .0 1 ¯ , 0 2 . 01 ¯ ) = ( 1 2 , 1 3 ) {\displaystyle U({\tfrac {13}{60}})=U(0_{4}.0{\overline {31}})=U(0_{2}.00{\overline {1101}})=(0_{2}.0{\overline {1}},0_{2}.{\overline {01}})=({\tfrac {1}{2}},{\tfrac {1}{3}})}

zum U {\displaystyle U} -Urbild. Die Umkehrung davon entspricht mit ( x , y ) = ( 1 2 , 1 3 ) {\displaystyle (x,y)=({\tfrac {1}{2}},{\tfrac {1}{3}})} genau den zwei einseitigen Grenzwerten

lim ξ x M ( ξ , y ) = M ( 0 2 .10 , 0 2 . 01 ¯ ) = 0 2 .01 1000 ¯ = 0 4 .1 20 ¯ = 23 60 {\displaystyle \lim _{\xi \downarrow x}M(\xi ,y)=M_{\downarrow }(0_{2}.10,0_{2}.{\overline {01}})=0_{2}.01{\overline {1000}}=0_{4}.1{\overline {20}}={\tfrac {23}{60}}} und
lim ξ x M ( ξ , y ) = M ( 0 2 .0 1 ¯ , 0 2 . 01 ¯ ) = 0 2 .00 1101 ¯ = 0 4 .0 31 ¯ = 13 60 {\displaystyle \lim _{\xi \uparrow x}M(\xi ,y)=M_{\uparrow }(0_{2}.0{\overline {1}},0_{2}.{\overline {01}})=0_{2}.00{\overline {1101}}=0_{4}.0{\overline {31}}={\tfrac {13}{60}}} .

Etwas anders liegt der Fall bei den im vorigen Abschnitt Binärbruchverschränkung erwähnten Punkten 5 12 {\displaystyle {\tfrac {5}{12}}} und 7 12 {\displaystyle {\tfrac {7}{12}}} , die weder Bildpunkte von M {\displaystyle M_{\downarrow }} noch von M {\displaystyle M_{\uparrow }} sind. Unter U {\displaystyle U} ist

U ( 5 12 ) = U ( 0 2 .01 10 ¯ ) = ( 0 2 .1 , 0 2 .0 1 ¯ ) = ( 1 2 , 1 2 ) {\displaystyle U({\tfrac {5}{12}})=U(0_{2}.01{\overline {10}})=(0_{2}.1,0_{2}.0{\overline {1}})=({\tfrac {1}{2}},{\tfrac {1}{2}})} und
U ( 7 12 ) = U ( 0 2 .10 01 ¯ ) = ( 0 2 .0 1 ¯ , 0 2 .1 ) = ( 1 2 , 1 2 ) {\displaystyle U({\tfrac {7}{12}})=U(0_{2}.10{\overline {01}})=(0_{2}.0{\overline {1}},0_{2}.1)=({\tfrac {1}{2}},{\tfrac {1}{2}})} ,

wogegen die einseitigen Grenzwerte von M {\displaystyle M} am Punkt ( x , y ) = ( 1 2 , 1 2 ) {\displaystyle (x,y)=({\tfrac {1}{2}},{\tfrac {1}{2}})}

lim ξ x , η y M ( ξ , η ) = M ( 0 2 .1 0 ¯ , 0 2 .1 0 ¯ ) = 0 2 .11 00 ¯ = 3 4 {\displaystyle \lim _{\xi \downarrow x,\,\eta \downarrow y}M(\xi ,\eta )=M_{\downarrow }(0_{2}.1{\overline {0}},0_{2}.1{\overline {0}})=0_{2}.11{\overline {00}}={\tfrac {3}{4}}} und
lim ξ x , η y M ( ξ , η ) = M ( 0 2 .0 1 ¯ , 0 2 .0 1 ¯ ) = 0 2 .00 11 ¯ = 1 4 {\displaystyle \lim _{\xi \uparrow x,\,\eta \uparrow y}M(\xi ,\eta )=M_{\uparrow }(0_{2}.0{\overline {1}},0_{2}.0{\overline {1}})=0_{2}.00{\overline {11}}={\tfrac {1}{4}}}

sind.

U {\displaystyle U} ist nicht stetig[10] an einem Punkt z E {\displaystyle z\in E} , weil linksseitiger Grenzwert ( lim n U ( z 2 n ) = U ( z ) {\displaystyle \lim _{n\to \infty }U(z-2^{-n})=U_{\uparrow }(z)} am 12-Ende) und rechtsseitiger ( lim n U ( z + 2 n ) = U ( z ) {\displaystyle \lim _{n\to \infty }U(z+2^{-n})=U_{\downarrow }(z)} am 02-Ende) sich im Ergebnis unterscheiden[Anm 6] (siehe Tabelle mit Beispielen).

Die Summe aller „Sprungweiten“ der Unstetigkeitsstellen (siehe Tabelle) wächst exponentiell mit der Zahl der Iterationen, da pro Iteration (siehe Abbildung „Vier Iterationen“) die Weite der Sprünge zwar mit dem Faktor 2 abnimmt, die Anzahl der Sprünge jedoch mit dem Faktor 4 zunimmt.

Tabelle mit Beispielen

Erläuterung zu den Spalten der Tabelle

  1. Der Exponent l {\displaystyle l} in der ersten Spalte korreliert mit der Iterationsnummer l + 1 2 {\displaystyle \lceil {\tfrac {l+1}{2}}\rceil } in der Abbildung „Vier Iterationen“, nämlich l = 1 {\displaystyle l=1} mit Iteration 1 und l = 2 , 3 {\displaystyle l=2,3} mit Iteration 2.
  2. Zu einem (binär abbrechenden) z-Wert z = 2 l {\displaystyle z=2^{-l}} gibt es eine Unstetigkeitsstelle der x {\displaystyle x} - oder y {\displaystyle y} -Koordinate. Die Spalte enthält den kleinsten zu l {\displaystyle l} gehörigen z-Wert; andere z-Werte, die ungerade Vielfache davon sind, sind ebenfalls Unstetigkeitsstellen; sie werden in der Spalte Anzahl gezählt. Für die Zwecke der nächsten Spalte U ( z ) {\displaystyle U_{\downarrow }(z)} sind die x-Bits blau und die y-Bits rot eingefärbt.
  3. U ( z ) {\displaystyle U_{\downarrow }(z)} ist gleichzeitig der rechtsseitige Grenzwert lim ζ z U ( ζ ) {\displaystyle \textstyle \lim _{\zeta \downarrow z}U(\zeta )} .
  4. Die nächste Spalte zeigt denselben z-Wert, aber mit dem 12-Ende. Auch hier sind die x-Bits blau und die y-Bits rot eingefärbt.
  5. Entsprechend dieser Einfärbung sind die Bits in der Spalte U ( 1 ¯ 2 {\displaystyle U({\overline {1}}_{2}} -Ende ) {\displaystyle )} in x {\displaystyle x} - und y {\displaystyle y} -Koordinate aufgeteilt.
  6. lim ζ z U ( ζ ) = U ( z ) {\displaystyle \textstyle \lim _{\zeta \uparrow z}U(\zeta )=U_{\uparrow }(z)} bringt den linksseitigen Grenzwert (eine seiner Koordinaten ist = U ( z ) {\displaystyle =U_{\downarrow }(z)} , die andere größer).
  7. Richtung gibt an, welche Koordinate sich ändert. Beispielsweise bedeutet ↑, dass sich die y {\displaystyle y} -Koordinate an dieser Stelle bei infinitesimal wachsendem z {\displaystyle z} ändert, und zwar fallend und in den Abbildungen „Vier Iterationen“ und „dritte Iteration“ nach oben.
  8. Weite enthält die euklidische Distanz der beiden Grenzwerte.
  9. Anzahl enthält die Anzahl von Unstetigkeitsstellen (im Einheitsquadrat) mit dieser Richtung und Weite.
  10. Der Beitrag zur Gesamtsumme der Sprungweiten ist das Produkt von Weite mal Anzahl.
l {\displaystyle l}
 
z = 2 l {\displaystyle z=2^{-l}}
(02-Ende)
U ( z ) {\displaystyle U_{\downarrow }(z)} z {\displaystyle z} mit
12-Ende
U ( 1 ¯ 2 {\displaystyle U({\overline {1}}_{2}} -Ende ) {\displaystyle )} U ( z ) {\displaystyle U_{\uparrow }(z)} Rich-
tung
Wei-
te
An-
zahl
Bei-
trag
x , {\displaystyle x,} y {\displaystyle y} x , {\displaystyle x,} y {\displaystyle y} x , {\displaystyle x,} y {\displaystyle y}
1 0 2 . 1 {\displaystyle 0_{2}.{\color {red}1}} ( 0 , {\displaystyle (0,} 0 2 .1 ) {\displaystyle 0_{2}.1)} 0 2 . 0 1 1 1 ¯ {\displaystyle 0_{2}.{\color {red}0}{\color {blue}1}{\color {red}1}{\overline {\color {blue}1}}} ( 0 2 . 1 ¯ , {\displaystyle (0_{2}.\!{\overline {1}},} 0 2 .0 1 ¯ ) {\displaystyle 0_{2}.0{\overline {1}})} ( 1 , {\displaystyle (1,} 0 2 .1 ) {\displaystyle 0_{2}.1)} 1 {\displaystyle 1} 1   1
2 0 2 . 0 1 {\displaystyle 0_{2}.{\color {red}0}{\color {blue}1}} ( 0 2 .1 , {\displaystyle (0_{2}.1,} 0 ) {\displaystyle 0)} 0 2 . 0 0 1 1 1 ¯ {\displaystyle 0_{2}.{\color {red}0}{\color {blue}0}{\color {red}1}{\color {blue}1}{\overline {\color {red}1}}} ( 0 2 .0 1 ¯ , {\displaystyle (0_{2}.0{\overline {1}},} 0 2 .0 1 ¯ ) {\displaystyle 0_{2}.0{\overline {1}})} ( 0 2 .1 , {\displaystyle (0_{2}.1,} 0 2 .1 ) {\displaystyle 0_{2}.1)} 0 2 .1 {\displaystyle 0_{2}.1} 2 +1
3 0 2 . 0 0 1 {\displaystyle 0_{2}.{\color {red}0}{\color {blue}0}{\color {red}1}} ( 0 , {\displaystyle (0,} 0 2 .01 ) {\displaystyle 0_{2}.01)} 0 2 . 0 0 0 1 1 1 ¯ {\displaystyle 0_{2}.{\color {red}0}{\color {blue}0}{\color {red}0}{\color {blue}1}{\color {red}1}{\overline {\color {blue}1}}} ( 0 2 .0 1 ¯ , {\displaystyle (0_{2}.0{\overline {1}},} 0 2 .00 1 ¯ ) {\displaystyle 0_{2}.00{\overline {1}})} ( 0 2 .1 , {\displaystyle (0_{2}.1,} 0 2 .01 ) {\displaystyle 0_{2}.01)} 0 2 .1 {\displaystyle 0_{2}.1} 4 +2
2 k 1 {\displaystyle 2k\!-\!1} 0 2 . . . 1 {\displaystyle 0_{2}.{\color {red}.}{\color {blue}.}{\color {red}1}} ( 0 , {\displaystyle (0,} 2 k ) {\displaystyle 2^{-k})} 0 2 . . . 0 1 1 1 ¯ {\displaystyle 0_{2}.{\color {red}.}{\color {blue}.}{\color {red}0}{\color {blue}1}{\color {red}1}{\overline {\color {blue}1}}} ( 0 2 . . 1 ¯ , {\displaystyle (0_{2}.{\color {blue}.}{\overline {\color {blue}1}},} 0 2 . . 0 1 ¯ ) {\displaystyle 0_{2}.{\color {red}.}{\color {red}0}{\overline {\color {red}1}})} ( 2 k + 1 , {\displaystyle (2^{-k+1},} 2 k ) {\displaystyle 2^{-k})} 2 k + 1 {\displaystyle 2^{-k+1}} 2 2 k 2 {\displaystyle 2^{2k-2}} 2 k 1 {\displaystyle 2^{k-1}}
4 0 2 . 0 0 0 1 {\displaystyle 0_{2}.{\color {red}0}{\color {blue}0}{\color {red}0}{\color {blue}1}} ( 0 2 .01 , {\displaystyle (0_{2}.01,} 0 ) {\displaystyle 0)} 0 2 . 0 0 0 0 1 1 1 ¯ {\displaystyle 0_{2}.{\color {red}0}{\color {blue}0}{\color {red}0}{\color {blue}0}{\color {red}1}{\color {blue}1}{\overline {\color {red}1}}} ( 0 2 .00 1 ¯ , {\displaystyle (0_{2}.00{\overline {1}},} 0 2 .00 1 ¯ ) {\displaystyle 0_{2}.00{\overline {1}})} ( 0 2 .01 , {\displaystyle (0_{2}.01,} 0 2 .01 ) {\displaystyle 0_{2}.01)} 0 2 .01 {\displaystyle 0_{2}.01} 8 +2
2 k {\displaystyle 2k} 0 2 . . . 0 1 {\displaystyle 0_{2}.{\color {red}.}{\color {blue}.}{\color {red}0}{\color {blue}1}} ( 2 k , {\displaystyle (2^{-k},} 0 ) {\displaystyle 0)} 0 2 . . . 0 0 1 1 1 1 ¯ {\displaystyle 0_{2}.{\color {red}.}{\color {blue}.}{\color {red}0}{\color {blue}0}{\color {red}1}{\color {blue}1}{\color {red}1}{\overline {\color {blue}1}}} ( 0 2 . . 0 1 ¯ , {\displaystyle (0_{2}.{\color {blue}.}{\color {blue}0}{\overline {\color {blue}1}},} 0 2 . . 0 1 ¯ ) {\displaystyle 0_{2}.{\color {red}.}{\color {red}0}{\overline {\color {red}1}})} ( 2 k , {\displaystyle (2^{-k},} 2 k ) {\displaystyle 2^{-k})} 2 k {\displaystyle 2^{-k}} 2 2 k 1 {\displaystyle 2^{2k-1}} 2 k 1 {\displaystyle 2^{k-1}}
Tab. 1: Die Sprungweiten von U {\displaystyle U} in Abhängigkeit vom Exponenten l {\displaystyle l}

Weitere Werte:

M ( 2 k , 0 ) = 2 2 k U ( 2 2 k ) = ( 2 k , 0 ) M ( 2 k , 0 ) = 2 2 k / 3 U ( 2 2 k / 3 ) = ( 2 k , 0 ) M ( 0 , 2 k ) = 2 2 k + 1 U ( 2 2 k + 1 ) = ( 0 , 2 k ) M ( 0 , 2 k ) = 2 2 k + 1 / 3 U ( 2 2 k + 1 / 3 ) = ( 0 , 2 k ) M ( 2 k , 2 k ) = 2 2 k 3 U ( 2 2 k 3 ) = ( 2 k , 2 k ) M ( 2 k , 2 k ) = 2 2 k U ( 2 2 k ) = ( 2 k , 2 k ) M ( 2 k , 2 k 1 ) = 2 2 k + 1 3 U ( 2 2 k + 1 3 ) = ( 2 k , 2 k 1 ) M ( 2 k , 2 k 1 ) = 2 2 k 1 U ( 2 2 k 1 ) = ( 2 k , 2 k 1 ) M ( 2 k 1 , 2 k ) = 2 2 k 2 9 U ( 2 2 k 2 9 ) = ( 2 k 1 , 2 k ) M ( 2 k 1 , 2 k ) = 2 2 k 2 3 U ( 2 2 k 2 3 ) = ( 2 k 1 , 2 k ) {\displaystyle {\begin{array}{lllll}M_{\downarrow }(2^{-k},&0)&=2^{-2k}&\Longleftrightarrow &U_{\downarrow }(2^{-2k})&=(2^{-k},&0)\\M_{\uparrow }(2^{-k},&0)&=2^{-2k}/3&\Longleftrightarrow &U_{\uparrow }(2^{-2k}/3)&=(2^{-k},&0)\\M_{\downarrow }(0,&2^{-k})&=2^{-2k+1}&\Longleftrightarrow &U_{\downarrow }(2^{-2k+1})&=(0,&2^{-k})\\M_{\uparrow }(0,&2^{-k})&=2^{-2k+1}/3&\Longleftrightarrow &U_{\uparrow }(2^{-2k+1}/3)&=(0,&2^{-k})\\M_{\downarrow }(2^{-k},&2^{-k})&=2^{-2k}\cdot 3&\Longleftrightarrow &U_{\downarrow }(2^{-2k}\cdot 3)&=(2^{-k},&2^{-k})\\M_{\uparrow }(2^{-k},&2^{-k})&=2^{-2k}&\Longleftrightarrow &U_{\uparrow }(2^{-2k})&=(2^{-k},&2^{-k})\\M_{\downarrow }(2^{-k},&2^{-k-1})&=2^{-2k+1}\cdot 3&\Longleftrightarrow &U_{\downarrow }(2^{-2k+1}\cdot 3)&=(2^{-k},&2^{-k-1})\\M_{\uparrow }(2^{-k},&2^{-k-1})&=2^{-2k-1}&\Longleftrightarrow &U_{\uparrow }(2^{-2k-1})&=(2^{-k},&2^{-k-1})\\M_{\downarrow }(2^{-k-1},&2^{-k})&=2^{-2k-2}\cdot 9&\Longleftrightarrow &U_{\downarrow }(2^{-2k-2}\cdot 9)&=(2^{-k-1},&2^{-k})\\M_{\uparrow }(2^{-k-1},&2^{-k})&=2^{-2k-2}\cdot 3&\Longleftrightarrow &U_{\uparrow }(2^{-2k-2}\cdot 3)&=(2^{-k-1},&2^{-k})\\\end{array}}}

Weitere Limites gegenübergestellt für x = y = 1 2 {\displaystyle x=y={\tfrac {1}{2}}}

lim ξ x , η y M ( ξ , η ) = M ( 1 2 , 1 2 ) = M ( 0 2 .0 1 ¯ , 0 2 .0 1 ¯ ) = 0 2 .00 11 ¯ = 1 4 ; U ( 1 4 ) = ( 1 2 , 0 ) ; U ( 1 4 ) = ( 1 2 , 1 2 ) lim ξ x , η y M ( ξ , η ) = M ( 0 2 .1 0 ¯ , 0 2 .0 1 ¯ ) = 0 2 .01 10 ¯ = 5 12 ; U ( 5 12 ) = ( 1 2 , 1 2 ) = U ( 5 12 ) lim ξ x , η y M ( ξ , η ) = M ( 0 2 .0 1 ¯ , 0 2 .1 0 ¯ ) = 0 2 .10 01 ¯ = 7 12 ; U ( 7 12 ) = ( 1 2 , 1 2 ) = U ( 7 12 ) lim ξ x , η y M ( ξ , η ) = M ( 1 2 , 1 2 ) = M ( 0 2 .1 0 ¯ , 0 2 .1 0 ¯ ) = 0 2 .11 00 ¯ = 3 4 ; U ( 3 4 ) = ( 1 2 , 1 2 ) ; U ( 3 4 ) = ( 1 4 , 1 2 ) {\displaystyle {\begin{array}{lllllll}\displaystyle \lim _{\xi \uparrow x,\,\eta \uparrow y}M(\xi ,\eta )=M_{\uparrow }({\tfrac {1}{2}},{\tfrac {1}{2}})&=M(0_{2}.0{\overline {1}},0_{2}.0{\overline {1}})=0_{2}.00{\overline {11}}=\displaystyle {\tfrac {1}{4}};\;\;&U_{\downarrow }({\tfrac {1}{4}})=({\tfrac {1}{2}},0);&U_{\uparrow }({\tfrac {1}{4}})=({\tfrac {1}{2}},{\tfrac {1}{2}})\\\displaystyle \lim _{\xi \downarrow x,\,\eta \uparrow y}M(\xi ,\eta )&=M(0_{2}.1{\overline {0}},0_{2}.0{\overline {1}})=0_{2}.01{\overline {10}}=\displaystyle {\tfrac {5}{12}};&U_{\downarrow }({\tfrac {5}{12}})=({\tfrac {1}{2}},{\tfrac {1}{2}})=&U_{\uparrow }({\tfrac {5}{12}})\\\displaystyle \lim _{\xi \uparrow x,\,\eta \downarrow y}M(\xi ,\eta )&=M(0_{2}.0{\overline {1}},0_{2}.1{\overline {0}})=0_{2}.10{\overline {01}}=\displaystyle {\tfrac {7}{12}};&U_{\downarrow }({\tfrac {7}{12}})=({\tfrac {1}{2}},{\tfrac {1}{2}})=&U_{\uparrow }({\tfrac {7}{12}})\\\displaystyle \lim _{\xi \downarrow x,\,\eta \downarrow y}M(\xi ,\eta )=M_{\downarrow }({\tfrac {1}{2}},{\tfrac {1}{2}})&=M(0_{2}.1{\overline {0}},0_{2}.1{\overline {0}})=0_{2}.11{\overline {00}}=\displaystyle {\tfrac {3}{4}};&U_{\downarrow }({\tfrac {3}{4}})=({\tfrac {1}{2}},{\tfrac {1}{2}});&U_{\uparrow }({\tfrac {3}{4}})=({\tfrac {1}{4}},{\tfrac {1}{2}})\\\end{array}}}

Z-Kurve der dritten Iteration.
Bei drei beispielhaften Sprüngen l = 1 , 2 , 3 {\displaystyle l=1,2,3} sind stetig machende Verbindungsstrecken als Pfeile hinzugefügt, die im Limes achsenparallel die entsprechende waagrechte y {\displaystyle y} -Ordinate (bei ungeradem l {\displaystyle l} ) oder die senkrechte x {\displaystyle x} -Abszisse (bei geradem l {\displaystyle l} ) überqueren.

Wegen der Unstetigkeit von U {\displaystyle U} ist die Bildmenge von U {\displaystyle U} keine Kurve. Da sie aber in der Ebene liegt, also zweidimensional ist, und U {\displaystyle U} bei wachsendem Argument z {\displaystyle z} an einer Unstetigkeitsstelle immer nur in der x {\displaystyle x} - oder der y {\displaystyle y} -Koordinate springt, lassen sich die beiden Ränder (linksseitiger und rechtsseitiger Grenzwert) der Unstetigkeitsstelle durch eine Parallele zur Achse der springenden Koordinate verbinden, wie es die Abbildung „Vier Iterationen“ nahelegt (und wie es in der Abbildung „dritte Iteration (Beispiel)“ andeutungsweise ausgeführt ist). Dadurch entsteht eine stetige Abbildung Z {\displaystyle Z} , deren Bild Z-Kurve genannt wird. Die Stetigkeit impliziert, dass linksseitige und rechtsseitige Grenzwerte gleich sind; mit der Folge, dass Rechtseindeutigkeit auch ohne Entscheidung für Vorschrift ↓ oder Vorschrift ↑ besteht. Z {\displaystyle Z} ist stetig und surjektiv, aber nicht injektiv.[Anm 7] Da die endlichen Iterationen gleichwohl injektiv und damit selbst-ausweichend sind, gehört die Z-Kurve zu den FASS-Kurven, die ihrerseits eine echte Teilmenge der raumfüllenden Kurven sind.[Anm 8]

Siehe auch

  • Michael Bader: Raumfüllende Kurven (Memento vom 17. März 2005 im Internet Archive; PDF; 637 kB) TUM Informatik

Anmerkungen

  1. Streng genommen ist nicht diese Abbildung, sondern allenfalls ihre Umkehrung eine raumfüllende Kurve.
  2. In der Literatur ist es Konvention, ganz rechts beim Index 0 mit einer x {\displaystyle x} -Stelle (Bit) zu beginnen und nach links alternierend mit einer y {\displaystyle y} -Stelle fortzusetzen. Dadurch entsteht die charakteristische Z-Form, wenn (wie in den Abbildungen) die x {\displaystyle x} -Abszisse nach rechts und die y {\displaystyle y} -Ordinate nach unten wächst.
  3. Die Injektivität geht bei n = {\displaystyle n=\infty } (genauer: im lim n M n {\displaystyle \textstyle \lim _{n\to \infty }M_{n}} ) verloren. Die ebenfalls auftretenden Probleme mit der Rechtseindeutigkeit haben dieselbe Ursache (s. u.).
  4. Die Punkte der Cantor-Menge enthalten in ihrer klassischen Darstellung zur Basis 3 nur Ziffern 0 und 2.
  5. a b Für x E y E {\displaystyle x\notin E\wedge y\notin E} ist
    M ( x , y ) = lim n M ( x 2 n , y ) = lim n M ( x + 2 n , y ) = M ( x , y ) = M ( x , y ) {\displaystyle M_{\uparrow }(x,y)=\textstyle \lim _{n\to \infty }M(x-2^{-n},y)=\lim _{n\to \infty }M(x+2^{-n},y)=M_{\downarrow }(x,y)=M(x,y)}
    sowie
    M ( x , y ) = lim n M ( x , y 2 n ) = lim n M ( x , y + 2 n ) = M ( x , y ) = M ( x , y ) {\displaystyle M_{\uparrow }(x,y)=\textstyle \lim _{n\to \infty }M(x,y-2^{-n})=\lim _{n\to \infty }M(x,y+2^{-n})=M_{\downarrow }(x,y)=M(x,y)} .
  6. a b Diese Begründung für Unstetigkeit gilt völlig unabhängig von der Entscheidung ob Vorschrift ↓ oder Vorschrift ↑.
  7. Stetig und bijektiv ist nur möglich bei gleicher Dimension (Satz von der Invarianz der Dimension).
  8. Es gibt raumfüllende Kurven, die auch im Limes von vornherein stetig sind, wie die Hilbert-Kurve und die Peano-Kurve. Insofern deutet die hier nachgebesserte Stetigkeit der Z-Kurve ein verbesserungsfähiges Nachbarschaftsverhalten an.

Einzelnachweise

  1. G. M. Morton: A computer Oriented Geodetic Data Base; and a New Technique in File Sequencing. In: Technical Report. IBM, Ottawa, Canada 1966 (englisch). 
  2. a b H. Tropf, H. Herzog: Multidimensional Range Search in Dynamically Balanced Trees. (PDF; 1,4 MB) In: Angewandte Informatik, 2/1981, S. 71–77.
  3. Jeyarajan Thiyagalingam, Olav Beckmann, Paul H. J. Kelly: Is Morton layout competitive for large two-dimensional arrays yet? In: Concurrency and Computation: Practice and Experience. 18. Jahrgang, Nr. 11, September 2006, S. 1509–1539, doi:10.1002/cpe.v18:11 (englisch, doc.ic.ac.uk (Memento des Originals vom 29. März 2017 im Internet Archive) [abgerufen am 13. November 2017]). 
  4. LITMAX/BIGMIN computation - Pascal source code, auf vision-tools.com
  5. Annotierte Liste von Artikeln über technische Anwendungen der Z-Kurve zur mehrdim. Bereichssuche
  6. Annotierte Liste von Artikeln über Datenbanken mit der Z-Kurve zur mehrdim. Bereichssuche
  7. Volker Gaede, Oliver Guenther: Multidimensional access methods. In: ACM Computing Surveys. 30. Jahrgang, Nr. 2, 1998, S. 170–231, doi:10.1145/280277.280279 (englisch, static.cc.gatech.edu (Memento des Originals vom 26. Februar 2007 im Internet Archive) [abgerufen am 14. November 2017]). 
  8. Martin Perdacher: Space-filling curves for improved cache-locality in shared memory environments. Dissertation, Universität Wien 2020
  9. Martin Perdacher, Claudia Plant, Christian Böhm: Improved Data Locality Using Morton-order Curve on the Example of LU Decomposition. IEEE BigData 2020: 351-360
  10. Michael Bader: Space-Filling Curves. An Introduction with Applications in Scientific Computing (= Timothy J. Barth, Michael Griebel, David E. Keyes, Risto M. Nieminen, Dirk Roose, Tamar Schlick [Hrsg.]: Texts in Computational Science and Engineering. Band 9). 1. Auflage. Springer-Verlag, 2013, ISBN 978-3-642-31045-4, ISSN 1611-0994, doi:10.1007/978-3-642-31046-1 (englisch, 278 S.).  S. 96.