7
votes

C # / C ++: Comment visualiser des tableaux multidimensionnels

Par exemple: une matrice bidimensionnelle peut être visualisée comme une paroi de briques avec briques carrées, où chaque brique représente une coordonnée dans notre tableau. Un tableau à 3 dimensions peut être visualisé dans une boîte ou un cube.

Mais voici la partie délicate, comment visualisez-vous un tableau avec plusieurs dimensions (plus de 3) dimensions? Ou, pour cette partie, comment visualisez-vous un tableau avec non seulement plusieurs dimensions, mais plusieurs dimensions de plusieurs couches?

Par exemple: comment visualisez-vous un tableau tel que ceci: matrice [3,3,3,3] [3,3] [3,3,3,3,3] [3]?


5 commentaires

Votre tableau donne 4x2x ....> 100 dimensions. Même la théorie des cordes ne donne que 10 ou 12 dimensions!


@Xandy: Le mot physique est une analogie particulièrement pauvre. d'un peu à quelques centaines de mégaoctets, d'une microseconde à une demi-heure d'informatique nous confronte avec un rapport de dérangement total de 10 ** 9! Le programmeur se trouve dans la position unique que c'est la seule discipline et profession dans laquelle un ratio gigantesque, qui déflève totalement notre imagination, doit être ponté par une seule technologie. Il doit être capable de penser en termes de hiérarchies conceptuelles beaucoup plus profondes qu'un seul esprit ne devait jamais faire face auparavant. - E. W. DIJKSTRASTA


@Fred, bien que le pure mathématicien puisse considérer cela aussi limité que l'analogie de @ Xandy au monde physique :)


@Jon: I Dariesay Dijkstra ne serait pas en désaccord: la programmation est l'une des branches les plus difficiles des mathématiques appliquées. - E. W. DIJKSTRAS, EWD498


@Fred: absolument vrai. C'est assez intéressant que cela, en tant que programmeur, nous avons de telles options immense. Juste le fait que nous puissions instancier un tableau avec plusieurs milliers d'index, en plus de dimensions que nous pouvons facilement visualiser est impressionnant.


13 Réponses :


4
votes

vous ne le faites pas. Il est rare que vous avez même besoin de plus de 2 ou 3 dimensions. Si vous avez besoin de plus que cela, les dimensions supplémentaires devraient peut-être être modélisées comme des propriétés sur un objet, auquel cas vous pouvez les voir comme des attributs et ne pas essayer d'imaginer une hypercube mythique.


2 commentaires

Bien sûr, je sais et comprend que vous n'avez jamais besoin (ni d'utiliser pour cette affaire) que de grandes tableaux. Mais la pensée même de ces dimensions extrêmes est assez déconcertante, sans oublier à quel point il est intéressant de discuter. Sur une note moins grave; Vous avez fait ma journée avec cette réponse, merci pour cela!


@Marcus: Eh bien, c'est la chose. Il est Défilant. Parfois, c'est amusant d'essayer d'imaginer de telles choses, mais ce n'est tout simplement pas pratique. Content que tu aies aimé ma réponse :)



1
votes

Plus de 3 dimensions, vos seules options sont soit une vue d'arborescence, soit une forage.


0 commentaires

1
votes

de la même manière que vous visualisez 4 Dimensions spatiales : "Slice", superposez ou projetez-le sur ce que vous comprenez déjà et peut visualiser.


0 commentaires

5
votes

Certaines personnes peuvent modeler une géométrie n-dimensionnelle mentalement pour N> 3, au moins aussi loin que des formes simples, et certaines ne peuvent pas. (J'étais assez surprise quand on parle récemment à une personne dont le domaine était avancé de la géométrie n-dimensionnelle pour apprendre qu'il ne pouvait pas visualiser un hypercube, alors que je ne peux que trouver ses mathématiques au-delà de moi).

Ce n'est pas vraiment nécessaire cependant. En effet, il est rarement particulièrement nécessaire de visualiser une matrice bidimensionnelle en tant que Coördinates cartésiennes. Lorsque vous utilisez une matrice en 2 dimensions dans la pratique, vous avez un objectif pour chaque axe et que cette fin devient rapidement plus importante que toute représentation visuelle. < / p>

Si vous avez besoin de, considérez alors qu'un réseau à 2 dimensions peut également être considéré comme un ensemble commandé de structures 1 dimensions. De même, un réseau à 3 dimensions peut être considéré comme un ensemble commandé de structures à 2 dimensions, ou un ensemble d'ensembles de 1-dimensionnelles (avec ces ensembles de taille égale - permettant aux différentes tailles déplace les choses en matrices déchiquetées).

Par conséquent, une matrice 4 dimensions peut être considérée comme un ensemble commandé de structures à 3 dimensions, etc.


0 commentaires

0
votes

Visualisez un tableau 4D en tant que tableau 1D de cubes. Un tableau 5D en tant que tableau 2D de cubes. Et un tableau de 6D en tant que tableau 3D de cubes, ou un cube de cubes. Un tableau de 7D en tant que tableau 1D de cubes de cubes, etc ...


0 commentaires

12
votes

Comment vous visualisez les tableaux dépend vraiment de leur utilisation pratique. Si vous utilisez les matrices pour les relations spatiales, vous pouvez en tirer profit de l'imaginer comme cube, mais vous perdez également la nécessité d'imaginer plus de 3 dimensions. Si vous voulez vraiment et que vous vouliez vraiment mettre en œuvre une quatrième dimension horaire, vous pouvez simplement imaginer votre cube avec le contenu changeant au fil du temps.

Sinon, vous pouvez suivre une trace d'enregistrements fortement liés. Peut-être que chacun des premiers éléments est une galaxie, les éléments de deuxième niveau sont des grappes d'étoiles, les éléments de troisième niveau sont des systèmes solaires, les éléments de quatrième niveau sont des planètes, les éléments de cinquième niveau sont des continents ...

Dans ce cas, vous pouvez imaginer que c'était des matrices dans les matrices. Si vous avez besoin d'un tableau à 4 dimensions, vous pouvez imaginer un cube, mais chaque sous-cube est en fait un tableau unidimensionnel.

Si vous avez besoin d'une matrice en 5 dimensions, vous pouvez imaginer un cube, mais chaque sous-cube est divisé en exemple de votre "mur de briques".

6-dimensionnel est un cube avec chaque sous-cube étant son propre cube divisé.

Ceci a tendance à tomber mis à part après 6 dimensions. Au-delà, il y a généralement une raison plus pratique que vous avez besoin de tant de dimensions. Par exemple, des sites Web tels que Eharmony font leur correspondance en utilisant une géométrie normale sur des espaces de plus de 20 ans et plus. Vous avez une dimension pour "humour", une pour "bonne apparence", une pour "amour du shopping" ... alors vous pouvez alors prendre deux personnes et appliquer une formule de distance (carré chacune des différences dimensionnelles, ajoutez ces différences, racine carrée ) et déterminer la compatibilité des deux personnes. Donc, si une personne a marqué "5, 3, 9, 2, 8, 4, 7, 3, 1" sur notre matrice de personnalité en 9 dimensions et une autre marquée "9, 3, 7, 1, 8, 2, 8, 4 , 7 "alors votre compatibilité est la suivante: xxx

Ceci peut être appliqué sur des dimensions infinies et toujours fonctionner. Étant donné que ces dimensions ne s'appliquent pas à l'espace, toutefois, il n'est pas nécessaire de les visualiser en tant que telles. Au lieu de cela, dans ce cas particulier, nous pouvons en réalité l'imaginer comme une seule matrice dimensionnelle avec plusieurs valeurs entières. La raison pour laquelle nous pouvons simplifier ce tableau, votre esprit, est que notre réseau multidimensionnel ne contient que un seul "1" et tout le reste sont "0" S (indiquant l'emplacement de la personne dans ce tableau).

S'éloigner de l'exemple de l'EHARMONY, le point est après une certaine quantité de dimensions, vous avez généralement un objectif pratique pour le tableau qui se prête à une méthode de la perception.


1 commentaires

Très intéressant, et plus un pour vous mon ami d'avoir répondu à une telle question avec une réponse aussi intéressante.



0
votes

Ignorer si ces dimensions sont utilisées, pourquoi ne pas simplement envisager une matrice 4D en tant que tableau 1D (ligne) de "cubes". (c'est-à-dire: un tableau 1D où chaque élément pointe vers un cube 3D). Cela peut être mis à l'échelle au besoin (c.-à-d. Surface 2D où chaque élément pointe vers un cube). Bien sûr, ce n'est pas comment un hypercube «regarderait», mais ce n'est pas nécessaire.


0 commentaires

0
votes

onglets :)

Onglets de données 3 dimensions vous donne 4 dimensions, des onglets des onglets vous donne n dimensionnel.

Ce n'est pas nécessairement le meilleur moyen de la visualiser. Aussi pas bon pour faire tourner dans aucune des dimensions.

Mais alors, cela dépend de ce que vous essayez de visualiser

RVB Par exemple peut être transformé en une carte 2D, puis projetée sur un cube, vous donnant des informations 4D


0 commentaires

1
votes

Pensez à chaque dimension supplémentaire en tant que "boîte de fermeture". Pensez à un tableau 2D comme une matrice de matrices 1D, d'un tableau 3D en tant que tableau de matrices 2D, etc.

Voici quelques exemples ...

1D 1x2 tableau: xxx

matrice 2x2 2x2: xxx

tableau 2x2x2: xxx


0 commentaires

3
votes

Essayez d'être soustractif à ce sujet. Si vous avez besoin d'imaginer, dites, un tableau de dix dimensions puis commencez par imaginer l'ensemble de tous les espaces vectoriels euclidiens réels N-dimensionnels pour tous les entiers finis non négatifs n. {R0, R1, R2, ...}

Imaginez maintenant enlever presque tout cela, laissant juste R10.

Imaginez maintenant enlever presque tout cela, de sorte que vous n'ayez que les points de réseau entier de R10 à gauche.

Imaginez maintenant enlever presque tout cela, de sorte que vous n'ayez qu'un sous-ensemble hyper-rectangulaire des points de réseau entier.

Et vous avez terminé; c'est une bonne visualisation d'un tableau 10 dimensions. Il est vraiment très petit quand on y pense comme un sous-ensemble de l'ensemble de tous les espaces possibles de vecteur à n dimensions.

Si le sujet des intérêts des espaces de grande dimension que vous, vous pouvez lire ma douce introduction à quelques faits intéressants sur les algorithmes de recherche sur les bases de données de l'espace vectoriel de grande dimension:

http://blogs.msdn.com/b / ericlippert / archive / tags / haute + espaces dimensions de + /


0 commentaires

4
votes

Il y a beaucoup de belles façons de visualiser des données multidimensionnelles. L'un de mes favoris est d'Alfred InSelberg's coordonnées parallèles , qui représente chaque dimension comme un axe vertical, et Chaque point de données sous forme de fil qui les connecte:

text alt

Une autre grande visualisation est la Lentille (PDF) :

texte alt

Ceci représente chaque dimension en tant que colonne, comme dans une feuille de calcul, mais plutôt que numériquement. Il est particulièrement bon pour montrer une corrélation entre les dimensions; À mesure que vous triez par une dimension, il est facile de voir à quel point les dimensions corrélées parent.


0 commentaires

0
votes

Ne cherchez pas à donner la ferme ici, mais c'est un exemple de la façon dont je regarde des tableaux multidimensionnels dans PHP.

$ carte [chambre] [x] [y] [z] [id] [photopathe] [flag1] [Flag2]

J'imagine ce que cela ressemblerait comme un point dans l'espace 3D, j'ajoute simplement des attributs de tri. Ici, imaginez que vous jouez à Doom 3. Chaque carte est divisible en chambres, qui ont des pixels avec des coordonnées X, Y et Z. Chacun de ces points peut avoir un identifiant d'objet (monstre, article, etc.) associé à celui-ci. J'ai ajouté plus d'attributs pour mon application, mais c'est essentiellement cela. Un point de la matrice ne doit pas nécessairement être géométriquement précis; Cela peut avoir une signification. Que cela soit similaire à ce que font les autres personnes, je ne sais pas. Je sais que l'utilisation de la bibliothèque GD Graphics ferait un joli visualiseur pour les tableaux multidimensionnels à la volée, mais je n'ai pas eu à ce projet lors de la dernière fois que je travaillais pour ce client.


0 commentaires

1
votes

Vous pouvez visualiser un rapport financier comme une matrice dans laquelle les données entrent de plusieurs entités dans le formulaire de feuille de calcul:

  • Une feuille de calcul unique des données de vente serait un tableau 2D (par exemple les ventes pour chaque mois du trimestre par centre de profit);
  • plusieurs onglets dans un classeur (un pour chaque filiale) serait un tableau 3D;

    Ensuite, à des fins de la consolidation globale, un contrôleur peut recevoir un classeur de chaque région - ce serait la 4ème dimension. Une cinquième dimension pourrait être "temps" si vous avez besoin de manipuler les données de vente au fil du temps (pour repérer les tendances par exemple).

    En théorie, vous pouvez conserver des données de vente multi-années multi-région dans une seule variable de matrice 5D.

    Comme les gens l'ont dit ci-dessus, vous devez vraiment avoir une application à l'esprit d'abord, puis la structure de données logique aidera à définir une forme physique appropriée. Tout ensemble d'attributs pouvant être modélisé de manière relativement peut être placé dans un tableau normalement.

    Tony


0 commentaires