close

Mehrdimensionaler Vektor

Zur Navigation gehen Zur Suche gehen

In der Programmierung ist ein mehrdimensionaler Vektor ein Vektor , der durch eine geordnete Liste von ganzen Zahlen indiziert ist. Die Anzahl der Ganzzahlen, die in dieser Liste verwendet werden, um den mehrdimensionalen Vektor zu indizieren, ist immer gleich und wird als Dimensionalität des Vektors bezeichnet . Andererseits bestimmen die Grenzen jeder der ganzen Zahlen, die Teil des Index sind, die Dimension des Vektors . Ein Vektor mit der Dimensionalität k wird oft als k - dimensional bezeichnet. 1-dimensionale Vektoren entsprechen gewöhnlichen Vektoren , bei denen die Elemente in einer einzigen Zeile (oder Spalte) angeordnet sind; 2-dimensionale Vektoren sind eine andere Bezeichnung für die klassischen Matrizen , bei denen ihre Elemente in mehreren Zeilen und Spalten (zweidimensional) angeordnet sind. In der Praxis übersteigt die Dimensionalität eines Vektors selten drei.

In-Memory-Darstellung

Die Anordnung der Elemente eines 1-dimensionalen Vektors im Speicher eines Computers ist trivial, da dieser selbst die Form eines (sehr großen) 1-dimensionalen Vektors hat. Wenn Sie jedoch n -dimensionale Vektoren speichern möchten , ist das Problem nicht mehr offensichtlich. Angenommen, wir möchten dieses einfache zweidimensionale Array darstellen:

Die gebräuchlichste Art, diese Matrix (oder den zweidimensionalen Vektor) zu indizieren, ist die Verwendung der RC - Konvention ( Row - Column , row - Column ) , bei der auf die Elemente verwiesen wird, indem zuerst die Zeile und dann die Spalte angegeben wird ( Beispiel ), so haben wir:

Die Indizierung mehrdimensionaler Vektoren kann auf eine der folgenden Arten erfolgen:

  • Reihenfolge der übergeordneten Zeilen : Die Elemente jeder Zeile werden der Reihe nach gespeichert, zuerst eine Zeile, dann eine andere und so weiter. Diese Methode wird hauptsächlich für statische Arrays verwendet, die in C deklariert sind .
1 zwei 3 4 5 6 7 8 9
  • Spaltenhauptordnung : Analog zur vorherigen, aber diesmal werden die Elemente spaltenweise statt zeilenweise gespeichert:
1 4 7 zwei 5 8 3 6 9
Image
2-dimensionaler Vektor, gespeichert in einem 1-dimensionalen Vektor von 1-dimensionalen Vektoren.
  • X-dimensionaler Vektor : Typischerweise werden mehrdimensionale Vektoren unter Verwendung eines 1-dimensionalen Vektors dargestellt, der Verweise (oder Zeiger) auf andere 1-dimensionale Vektoren enthält. Diese Untervektoren können, undeutlich, die Zeilen oder die Spalten der Matrix sein, alles hängt von dem Kriterium oder der Interpretation ab, die Sie nehmen möchten.

Die ersten beiden Formen sind kompakter und haben möglicherweise eine bessere Lokalisierung der Referenz, aber sie sind auch eingeschränkter; Vektoren müssen rechteckig sein , in dem Sinne, dass keine Zeile mehr Elemente enthalten kann als eine andere. Vektoren von Vektoren hingegen ermöglichen die Erstellung von ungleichen Vektoren , auch gezackte Vektoren genannt , bei denen der gültige Bereich eines Index vom Wert eines anderen abhängt, oder mit anderen Worten, dass die verschiedenen Zeilen (oder Spalten) sie können unterschiedlich groß sein. Vektoren von Vektoren sind auch in Programmiersprachen nützlich, die nur 1-dimensionale Vektoren als Primitiven zulassen.

In vielen Anwendungen, wie z. B. numerischen Anwendungen, die mit Matrizen arbeiten , müssen Sie auf vorhersagbare Weise über zweidimensionale rechteckige Vektoren iterieren. Beispielsweise beinhaltet die Berechnung eines Elements des Matrixprodukts A x B das gleichzeitige Iterieren über eine Zeile von A und eine Spalte von B. Indem Sie die Elemente des Arrays indizieren, während es im Speicher gespeichert wird, müssen Sie die Lokalisierungsoperationen jedes Elements so weit wie möglich optimieren. Manchmal kann ein Compiler automatisch das Layout des sequentiellen Arrays von Elementen eines Vektors bestimmen, so dass sie auch sequentiell im Speicher gespeichert werden, in unserem Beispiel könnte er die Reihenfolge der Zeilen-Eltern für A und die Reihenfolge der Spalten-Eltern für B wählen. _ Es gibt mehrere Möglichkeiten, die Elemente einer Matrix im Speicher zu speichern, was für andere Arten von Problemen effizienter ist, beispielsweise wenn Sie über die Hauptdiagonale einer Matrix iterieren möchten.

Siehe auch