www.wikidata.de-de.nina.az
Die Cantorsche Paarungsfunktion manchmal auch Nummerierungsfunktion genannt ist eine unter anderem in der theoretischen Informatik verwendete Abbildung die auf dem Diagonalargument von Cantor basiert Mit ihr kann man ein beliebiges Paar x y displaystyle x y naturlicher Zahlen durch eine einzige naturliche Zahl n displaystyle n darstellen Man nummeriert damit alle Zahlenpaare Diese Nummerierung ist sogar eindeutig umkehrbar Das heisst man kann aus der Zahl n displaystyle n das ursprungliche Zahlenpaar x y displaystyle x y wieder ermitteln Mathematisch gesprochen heisst das Die Cantorsche Paarungsfunktion ist eine bijektive totale Funktion p N 2 N displaystyle pi colon mathbb N 2 to mathbb N Die Idee der diagonalen Abzahlung der Menge aller Paare naturlicher Zahlen geht auf Georg Cantor zuruck Die Verallgemeinerung der Cantorschen Paarungsfunktion von Paaren auf Tupel wird als Cantorsche Tupelfunktion bezeichnet Inhaltsverzeichnis 1 Motivation 2 Grundsatzliches 3 Definition 4 Erweiterung auf k Tupel 5 Umkehrfunktion 5 1 Formale Definition 5 2 Beispiel 6 Computerimplementierungen 6 1 Implementierung der Berechnungen in Java 6 2 Implementierung der Berechnungen in Python 6 3 Pascal Programm zur Berechnung der Umkehrung 7 Berechenbarkeit 7 1 Beweis der Berechenbarkeit der Cantorschen Paarungsfunktion 7 2 Beweis der Berechenbarkeit der Umkehrfunktion 7 3 Anwendung der Berechenbarkeit 8 Herkunft 9 Alternativen 10 Literatur 11 EinzelnachweiseMotivation BearbeitenIn der theoretischen Informatik wird die Cantorsche Paarungsfunktion bzw Tupelfunktion benutzt um Funktionen die mehr als einen Parameter haben auf Funktionen zuruckzufuhren die nur genau einen Parameter haben was viele Beweise deutlich erleichtert Die Zuruckfuhrung eines Problems auf ein eventuell einfacheres bereits bekanntes Problem ist eine bewahrte Beweistechnik die man als Reduktion bezeichnet Mit der Cantorschen Paarungsfunktion bzw Tupelfunktion lasst sich die Berechenbarkeit von k displaystyle k nbsp stelligen Zahlenfunktionen auf die Berechenbarkeit von einstelligen Zahlenfunktionen reduzieren Das heisst man kann sich bei der Untersuchung der Berechenbarkeit von Zahlenfunktionen auf die Untersuchung von Einstelligen beschranken und weiss dass die gewonnenen Ergebnisse fur alle also auch fur die mehrstelligen Zahlenfunktionen gelten Grundsatzliches BearbeitenEs ist vielleicht nicht unmittelbar einsichtig dass es moglich ist alle beliebigen Kombinationen von zwei Zahlen durch eine Zahl zu kodieren Die Menge aller Zahlenpaare N 2 N N displaystyle mathbb N 2 mathbb N times mathbb N nbsp scheint viel grosser zu sein als die Menge aller Zahlen N displaystyle mathbb N nbsp Die Cantorsche Paarungsfunktion zeigt jedoch dass beide Mengen gleich gross sind denn sie stellt eine 1 1 Beziehung her Sie ist eine Bijektion Eine Menge die man bijektiv auf die naturlichen Zahlen abbilden kann nennt man abzahlbar unendlich insbesondere haben die naturlichen Zahlen selbst diese Eigenschaft Die Cantorsche Paarungsfunktion zeigt dann dass auch die Menge der Paare naturlicher Zahlen abzahlbar unendlich ist Definition BearbeitenDie Cantorsche Paarungsfunktion definiert man als p N N N displaystyle pi colon mathbb N times mathbb N to mathbb N nbsp x y p x y y i 0 x y i y 1 2 x y x y 1 displaystyle x y mapsto pi x y y sum i 0 x y i y frac 1 2 x y x y 1 nbsp wobei man die naturlichen Zahlen bei 0 beginnen lasst Siehe z B DIN Norm 5473 Kurzschreibweise x y p x y n displaystyle langle x y rangle pi x y n nbsp n displaystyle n nbsp kodiert das Paar x y displaystyle x y nbsp Hier ist eine Skizze der Diagonal Abzahlung nbsp Auf den Achsen sind die beiden Werte aufgetragen wie in einer Entfernungstabelle schlagt man den Wert der Cantorschen Paarungsfunktion im Schnittpunkt nach zum Beispiel 1 2 8 displaystyle langle 1 2 rangle 8 nbsp Die Nummerierung ist denkbar einfach Man zahlt diagonal mit Null beginnend die Paare ab 0 0 1 0 0 1 2 0 1 1 0 2 usw Man kann das obige Bildungsgesetz direkt ablesen wenn man sich die Summation jeweils uber eine Spalte verdeutlicht Erweiterung auf k Tupel BearbeitenDurch mehrfache Anwendung lassen sich auch k displaystyle k nbsp Tupel eindeutig nummerieren Man definiert induktiv fur k 1 2 3 displaystyle k 1 2 3 dotsc nbsp die Funktionen p k N k N displaystyle pi k colon mathbb N k to mathbb N nbsp mit Hilfe der Paarungsfunktion p displaystyle pi nbsp durch p 1 x x displaystyle pi 1 x x nbsp und p k 1 x 1 x k 1 p p k x 1 x k x k 1 displaystyle pi k 1 x 1 dotsc x k 1 pi pi k x 1 dotsc x k x k 1 nbsp Die Funktionen p k displaystyle pi k nbsp bezeichnet man als Cantorsche Tupelfunktionen Kurzschreibweise x 1 x 2 x k p k x 1 x 2 x k displaystyle langle x 1 x 2 dotsc x k rangle pi k x 1 x 2 dotsc x k nbsp Umkehrfunktion BearbeitenDie Cantorsche Paarungsfunktion besitzt als Umkehrfunktion die Dreieckswurzel Die Umkehrung ist eindeutig und berechenbar Letzteres ist fur die Anwendung in der theoretischen Informatik wichtig da die Berechenbarkeit der Funktion und der Umkehrfunktion Bedingung ist um ohne Probleme alle berechenbaren Funktionen durch einstellige Funktionen darzustellen Umkehrbar heisst man kann aus einer Zahl n displaystyle n nbsp auf die beiden Zahlen x displaystyle x nbsp und y displaystyle y nbsp schliessen fur die p x y n displaystyle pi x y n nbsp gilt Die Umkehrfunktion setzt sich aus zwei Hilfsfunktionen f displaystyle f nbsp und q displaystyle q nbsp zusammen Formale Definition Bearbeiten Man schreibt ihre Inverse p k 1 N N k displaystyle left pi k right 1 colon mathbb N to mathbb N k nbsp komponentenweise als p i k N N displaystyle pi i k colon mathbb N to mathbb N nbsp wobei gilt p i k pr i k p k 1 displaystyle pi i k operatorname pr i k circ left pi k right 1 nbsp vermoge der Projektion pr i k x 1 x k x i displaystyle operatorname pr i k x 1 dotsc x k x i nbsp welche die i displaystyle i nbsp te Komponente aus einem Tupel der Lange k displaystyle k nbsp auswahlt Bei Paaren der Fall k 2 displaystyle k 2 nbsp schreibt man kurz p 1 2 p 1 displaystyle pi 1 2 pi 1 nbsp und p 2 2 p 2 displaystyle pi 2 2 pi 2 nbsp sodass man die Inverse der Paarungsfunktion als p 1 p 1 p 2 displaystyle pi 1 pi 1 pi 2 nbsp schreiben kann Mit den Hilfsfunktionen Dreieckszahl f w i 0 w i w w 1 2 displaystyle f w sum i 0 w i frac w w 1 2 nbsp und q z max v f v z displaystyle q z max v mid f v leq z nbsp oder abgerundete Dreieckswurzel q z 8 z 1 1 2 displaystyle q z left lfloor frac sqrt 8z 1 1 2 right rfloor nbsp kann man p 1 displaystyle pi 1 nbsp und p 2 displaystyle pi 2 nbsp wie folgt fur z displaystyle z nbsp berechnen p 2 z z f q z displaystyle pi 2 z z f q z nbsp p 1 z q z p 2 z displaystyle pi 1 z q z pi 2 z nbsp Beispiel Bearbeiten Welches Zahlenpaar reprasentiert die Zahl 17 Dazu bestimmt man zunachst die grosste naturliche Zahl w displaystyle w nbsp fur die f w 17 displaystyle f w leq 17 nbsp gilt Das lasst sich entweder durch Ausprobieren ermitteln dabei hilft die Wertetabelle von f w displaystyle f w nbsp j 00 0 1 2 3 4 5 6 f j 0 1 3 6 10 15 21 oder uber die abgerundete Formel der Dreieckswurzel q 17 8 17 1 1 2 5 displaystyle q 17 left lfloor frac sqrt 8 cdot 17 1 1 2 right rfloor 5 nbsp Nun kann man einsetzen p 2 17 17 f 5 17 5 5 1 2 17 15 2 displaystyle pi 2 17 17 f 5 17 frac 5 5 1 2 17 15 2 nbsp p 1 17 5 2 3 displaystyle pi 1 17 5 2 3 nbsp Also gilt 3 2 17 displaystyle langle 3 2 rangle 17 nbsp Das lasst sich einfach anhand der Skizze oben verifizieren Computerimplementierungen BearbeitenImplementierung der Berechnungen in Java Bearbeiten Bei grossen Werten von z displaystyle z nbsp steigt der Zeitbedarf durch die WHILE Schleife enorm daher wurde darauf verzichtet Schleifen zu verwenden und stattdessen die Variante mit der Dreieckswurzel implementiert public class Cantor public static long compute long x long y return x y x y 1 2 y public static long computeX long z long j long Math floor Math sqrt 0 25 2 z 0 5 return j z j j 1 2 public static long computeY long z long j long Math floor Math sqrt 0 25 2 z 0 5 return z j j 1 2 Die Methode compute berechnet die dem ubergebenen Zahlenpaar x y zugeordnete Zahl computeX und computeY sind die Umkehrfunktionen von compute Implementierung der Berechnungen in Python Bearbeiten from math import isqrt def cantor x y return x y x y 1 2 y def invCantor z j isqrt 8 z 1 1 2 x j z j j 1 2 y z j j 1 2 return x y Die Funktion cantor berechnet die dem ubergebenen Zahlenpaar x y zugeordnete Zahl z Die Funktion invCantor berechnet das der Zahl z entsprechende Zahlenpaar x y Pascal Programm zur Berechnung der Umkehrung Bearbeiten Das folgende Pascal Programm berechnet die Umkehrfunktion p 1 displaystyle pi 1 nbsp procedure CantorPair I Integer Var X Y Integer Gibt das i te Paar X Y in Diagonalabzaehlung zurueck var J Integer function F Z Integer Integer begin F Z Z 1 div 2 end function Q Z Integer Integer var V Integer begin V 0 while F V lt Z do V V 1 Q V 1 end begin J Q I Y I F J X J Y end Hinweis Wird das Pascal Programm auf realen Rechnern ubersetzt muss es mit den Einschrankungen realer Rechner leben Das heisst dass bei grossen Werten von z displaystyle z nbsp Integer Uberlaufe das Ergebnis verfalschen Fur die Anschauung ist ein Pascal Programm jedoch verstandlicher als eine Registermaschine Berechenbarkeit BearbeitenDie Cantorsche Paarungsfunktion ist eine totale bijektive berechenbare sogar primitiv rekursive Funktion daher ist auch ihre Umkehrung berechenbar Beweis der Berechenbarkeit der Cantorschen Paarungsfunktion Bearbeiten Eine Methode zu beweisen dass eine Funktion berechenbar ist ist eine Registermaschine anzugeben welche die Funktion berechnet Dieser Maschine muss man im Register R 1 displaystyle R1 nbsp den Funktionsparameter x displaystyle x nbsp und im Register R 2 displaystyle R2 nbsp y displaystyle y nbsp ubergeben Man erhalt dann im Ausgaberegister R 0 displaystyle R0 nbsp den Wert von p displaystyle pi nbsp an der Stelle x y displaystyle x y nbsp Die folgende zweistellige Maschine berechnet die Cantorsche Paarungsfunktion p x y 1 2 x y x y 1 y displaystyle pi x y frac 1 2 x y x y 1 y nbsp R4 R1 R2 R5 R4 1 R4 R4 R5 R4 R4 2 R0 R4 R2 Auf einen formalen Beweis dass die Registermaschine tatsachlich die Funktion berechnet wird verzichtet Das ist offensichtlich erkennbar wenn man die Funktionsvorschrift zur Berechnung der Cantorschen Paarungsfunktion mit der Maschine vergleicht Diese Registermaschine nutzt jedoch Befehle die die einfache Registermaschine nicht kennt Die einfache Registermaschine kennt nur die Operationen R 1 displaystyle R 1 nbsp R 1 displaystyle R 1 nbsp und den einfachen Test Durch Verfeinerung lasst sich diese Registermaschine aber auf eine einfache Registermaschine zuruckfuhren Damit gibt es eine Registermaschine die die Cantorsche Paarungsfunktion berechnet Somit ist die Cantorsche Paarungsfunktion berechenbar Beweis der Berechenbarkeit der Umkehrfunktion Bearbeiten Fur den Beweis der Umkehrfunktion bietet es sich an eine andere Definition der Berechenbarkeit zu nutzen Eine Funktion ist genau dann berechenbar wenn ein WHILE Programm existiert das diese Funktion berechnet Das oben angegebene Pascal Programm lasst sich zu einem WHILE Programm verfeinern Also gibt es ein WHILE Programm das die Umkehrfunktion berechnet Somit ist auch die Umkehrung berechenbar Anwendung der Berechenbarkeit Bearbeiten Aus der Berechenbarkeit der Cantorsche Paarungsfunktion und ihrer Umkehrung folgt dass es fur die Theorie der Berechenbarkeit ausreichend ist sich mit einstelligen Funktionen von N N displaystyle mathbb N to mathbb N nbsp zu befassen Fur Funktionen von N n N m displaystyle mathbb N n to mathbb N m nbsp folgt die Berechenbarkeit dann durch die Anwendung der Cantorschen Paarungsfunktion und ihrer Umkehrfunktion f N n N m displaystyle f colon mathbb N n to mathbb N m nbsp ist berechenbargenau dann wenn es eine berechenbare Funktion g N N displaystyle g colon mathbb N to mathbb N nbsp gibt mit n N n f n p m 1 g p n n displaystyle forall n in mathbb N n f n pi m 1 left g left pi n n right right nbsp Man kann zum Beispiel zeigen dass sich alle rationalen Zahlen durch ein geordnetes Tripel i j k displaystyle i j k nbsp naturlicher Zahlen darstellen lassen Damit kann man die Berechenbarkeit leicht von den naturlichen Zahlen auf die Menge der rationalen Zahlen erweitern Herkunft BearbeitenDie Idee stammt aus der Mengenlehre von Georg Cantor Er hatte die Idee die Grosse einer Menge Machtigkeit Kardinalitat mit der Grosse einer anderen Menge zu vergleichen indem man versucht eine 1 1 Abbildung Bijektion dieser Menge mit der anderen Menge zu finden Jedem Element der ersten Menge soll genau ein Element der zweiten Menge zugeordnet werden und umgekehrt Das erscheint kompliziert findet aber seine Berechtigung wenn es um Mengen mit unendlich vielen Elementen geht Siehe auch Galileis Paradoxon Mit einer Diagonal Abzahlung wie oben angedeutet zeigt man leicht dass bei einer abzahlbaren Menge M displaystyle M nbsp das kartesische Produkt M M M 2 a b a b M displaystyle M times M M 2 a b mid a b in M nbsp gleichmachtig ist zu M displaystyle M nbsp was vielleicht gegen die Intuition spricht da hier Tupel verschiedener Dimension auftreten Alternativen BearbeitenFur zwei benachbarte Punkte x y displaystyle x y nbsp und x y displaystyle x y nbsp auf der Trajektorie der Umkehrfunktion kann max x x y y displaystyle max x x y y nbsp beliebig gross werden was bei der Anwendung der Abzahlung unerwunscht sein kann Daher betrachtet man auch eine Variante der Cantorschen Abzahlung bei der stets max x x y y 1 displaystyle max x x y y 1 nbsp gilt und die in diesem Sinn stetig ist Diese Form wird die boustrophedonische Cantor Abzahlung genannt da hier der Pfad nicht von der y displaystyle y nbsp Achse zur x displaystyle x nbsp Achse springt wie in der Skizze oben dargestellt sondern an den Achsen wendet Sie ist auf OEIS als A319571 beschrieben Es gibt viele andere Moglichkeiten Paare naturlicher Zahlen bijektiv durch eine naturliche Zahl zu kodieren z B kann man mit der Formel max r c 2 max r c 1 1 max r c mod 2 r c displaystyle max r c 2 max r c 1 1 max r c text mod 2 cdot r c nbsp spiralformig abzahlen 1 r c 0 1 2 3 40 0 1 8 9 1 3 2 7 10 2 4 5 6 11 3 15 14 13 12 4 Auch die einfache Formel 2 x 2 y 1 displaystyle 2 x cdot 2y 1 nbsp liefert eine Bijektion zwischen N N displaystyle mathbb N times mathbb N nbsp und N 0 displaystyle mathbb N setminus 0 nbsp 0 1 2 3 4 y gt 0 1 3 5 7 1 2 6 10 14 2 4 12 20 28 z 2 x 2 y 1 displaystyle z 2 x cdot 2y 1 nbsp 3 8 24 40 56 4 x v Beweis der Umkehrbarkeit x displaystyle x nbsp ist die grosste naturliche Zahl so dass 2 x displaystyle 2 x nbsp ein Teiler von z displaystyle z nbsp ist also die Anzahl der Faktoren 2 displaystyle 2 nbsp in der Primfaktorzerlegung von z displaystyle z nbsp Sei R z 2 x displaystyle R tfrac z 2 x nbsp Dann ist y R 1 2 displaystyle y tfrac R 1 2 nbsp Die Primfaktorzerlegung gibt eine Moglichkeit an beliebige endliche Tupel naturlicher Zahlen durch naturliche Zahlen zu kodieren i 1 i 2 i 3 i 4 i 5 2 i 1 3 i 2 5 i 3 7 i 4 11 i 5 displaystyle langle i 1 i 2 i 3 i 4 i 5 dotsc rangle 2 i 1 3 i 2 5 i 3 7 i 4 11 i 5 dotsb nbsp Beispiel 2 1 0 1 0 0 2 2 3 1 5 0 7 1 11 0 13 0 4 3 7 84 displaystyle langle 2 1 0 1 0 0 rangle 2 2 3 1 5 0 7 1 11 0 13 0 4 cdot 3 cdot 7 84 nbsp Literatur BearbeitenKlaus Weihrauch Computability Springer Berlin u a 1987 ISBN 3 540 13721 1 EATCS monographs on theoretical computer science 9 Eric W Weisstein Pairing Function In MathWorld englisch Katrin Erk Lutz Priese Theoretische Informatik Eine umfassende Einfuhrung 2 erweiterte Auflage Springer Berlin u a 2002 ISBN 3 540 42624 8 S 263 f Springer Lehrbuch Uwe Schoning Theoretische Informatik kurzgefasst 4 Auflage Korrigierter Nachdruck Spektrum Heidelberg u a 2003 ISBN 3 8274 1099 1 S 111 f Hochschultaschenbuch Einzelnachweise Bearbeiten Christoph Michel Enumerating a Grid in Spiral Order In cmichel io Blog 7 September 2016 abgerufen am 7 September 2016 englisch Abgerufen von https de wikipedia org w index php title Cantorsche Paarungsfunktion amp oldid 239392794