2D Koordinaten in 1D darstellen -> Was ist das mathematisch gesehen?



  • Angenommen ich habe ein 2 dimensionales Array das irgendeinen Typ speichert. Den kann ich dann in etwa so (C++ Syntax) addressieren:

    typ = array[x][y];;
    

    Das gleiche kann ich aber auch in einem 1-dimensionalen Array unterbringen, den ich dann folgendermassen addressiere:

    typ = array[zeilenlänge * y + x];
    

    Wie lässt sich diese Art der "Transformation" mathematisch herleiten? Lässt sich so auch eine allgemeine Gleichung aufstellen, die R^n auf R^n-1 auf diese Weise abbildet?


  • Mod

    Du schneidest deine 2D-Fläche in Streifen und klebst diese hintereinander:

    AAAAAAAAAAA
    BBBBBBBBBBB
    CCCCCCCCCCC
    
    ->
    
    AAAAAAAAAAABBBBBBBBBBBCCCCCCCCCCC
    

    Das lässt sich rekursiv auf beliebigdimensionale und beliebig geformte, endliche Ansammlungen von diskreten Punkten verallgemeinern.

    edit: Vergessen zu erwähnen, dass eine wichtige Voraussetzung die Endlichkeit des Gebildes ist.



  • Das lässt sich beschreiben durch eine Funktion f(z), die z wieder in die Komponenten x und y aufteilt: f(z) = (z / y_max, y % y_max).

    Es lässt sich nicht in diesem Sinne sinnvoll erweitern auf N^n oder gar R^n. Denn wenn du unendlich viele verschiedene y-Werte hast, wirst du niemals den zweiten x-Wert erreichen, wenn du so durchzählst wie gehabt. Man kann allerdings anders durchzählen. Schau dir z. B. den Beweis von der Abzählbarkeit der rationalen Zahlen oder Peano-Kurven an.



  • SeppJ schrieb:

    edit: Vergessen zu erwähnen, dass eine wichtige Voraussetzung die Endlichkeit des Gebildes ist.

    Wenn man schon die physikalischen Begrenzungen des Rechners ausser Acht lässt: Es darf maximal eine Dimension unendlich sein. Je nach Bezeichnung ist dies die erste oder die letzte. Das Gebilde wäre damit unendlich gross und deine Behauptung unendlich falsch 😉



  • Einwand schrieb:

    SeppJ schrieb:

    edit: Vergessen zu erwähnen, dass eine wichtige Voraussetzung die Endlichkeit des Gebildes ist.

    Wenn man schon die physikalischen Begrenzungen des Rechners ausser Acht lässt: Es darf maximal eine Dimension unendlich sein. Je nach Bezeichnung ist dies die erste oder die letzte. Das Gebilde wäre damit unendlich gross und deine Behauptung unendlich falsch 😉

    Wenn du schon die physikalischen Begrenzungen außer Acht lässt, lassen sich unendlich viele Ganze Zahlen auf eine Dimension abbilden (Wenn auch vermutlich nicht effizient).

    Stell dir vor, du hast 3 Indizes: 1234567890, 4265390475046 und 25505

    Zuerst escapst du alle Nullen mit 00: Deine Indizes lauten 12345678900, 426539004750046 und 255005

    Und jetzt hängst du sie alle aneinander und fügst 01 zwischendrin ein:
    123456789000142653900475004601255005

    Bitteschön! Hier hast du deinen eindeutigen Index, der sich wieder den drei Dimensionen zuordnen lässt.


Log in to reply