Che cosa definisce la dimensionalità di un array?

3

So che quando parliamo di un array avente dimensioni 1, 2 o 4, intendiamo array come questo:

1: [0]
2: [0,0]
3: [0,0,0]
4: [0,0,0,0]
...

Il primo "asse" di un array è l'unica cosa che definisce la sua dimensionalità? Un array con 4 dimensioni può essere rappresentato in questi modi?

[0, [0,0,0]]
[[0,0], [0,0]]

o questo rientra in qualche altra definizione di dimensionalità?

Un'altra opzione è che un array a 4 dimensioni potrebbe essere nella forma

[ [[ [0,..],[0,..] ], [ [0,..],[0,..] ]], [[ [0,..],[0,..] ], [ [0,..],[0,..] ]], [[ [0,..],[0,..] ], [ [0,..],[0,..] ]], [[ [0,..],[0,..] ], [ [0,..],[0,..] ]] ]

per es.

[ 
  [
    [ [0,..],[0,..] ], 
    [ [0,..],[0,..] ]
  ], 
  [
    [ [0,..],[0,..] ], 
    [ [0,..],[0,..] ]
  ], 
  [
    [ [0,..],[0,..] ], 
    [ [0,..],[0,..] ]
  ], 
  [
    [ [0,..],[0,..] ], 
    [ [0,..],[0,..] ]
  ]
]

Questa è solo una sfumatura di nomenclatura che sto facendo emergere? Questa definizione è relativa al campo in cui stiamo discutendo (computazione vs. sistemi fisici)?

(i pensieri provengono da questa domanda .)

    
posta New Alexandria 03.07.2014 - 20:47
fonte

5 risposte

6
1: [0]
2: [0,0]
3: [0,0,0]
4: [0,0,0,0]
...

Penso che tu abbia sbagliato. Se intendi che questi sono matrici di uno / due / tre / quattro dimensioni, non è così: sono tutti unidimensionali, hanno solo lunghezze .

Ma la lunghezza non è dimensionalità. Come spiegato da whatsisname, la dimensionalità di un intero array è il numero di pedici che devi fornire per indirizzare un singolo elemento. La lunghezza è solo il numero di valori diversi che puoi dare legalmente per un particolare indice in quell'espressione (se la lunghezza è 4, i valori validi sono 0,1,2,3).

    
risposta data 03.07.2014 - 21:15
fonte
6

La dimensionalità viene da ... dimensioni!

Un array monodimensionale è come uno di quei contenitori di pillole quotidiani:

Èunvettore,conunsingoloindice,epuoiselezionareunelementospecificoallavoltaspecificandodovesitrovalungolalinea.

Unamatricebidimensionaleèsimileaunascacchiera:

È una matrice, con due indici, e puoi selezionare un elemento specifico alla volta specificando dove si intersecano le due linee. Nella notazione degli scacchi, "a1" è la cella in basso a sinistra nell'immagine, "h8" in alto a destra, nella maggior parte delle lingue che sarebbe [0,0] e [7,7] o [0] [0] e [7 ] [7].

Un array tridimensionale è come un cubo di Rubik (eccetto che puoi accedere a più di un semplice elemento di superficie):

È un cubo, con tre indici, e puoi selezionare un elemento specifico alla volta specificando dove si intersecano le tre linee.

Una matrice quadridimensionale è come ... beh ... niente di reale. Ma i matematici hanno modellato strutture di dimensioni superiori per molto tempo, e alcuni hanno persino dei nomi. Dovrai semplicemente estendere la tua mente per afferrarli. Ma l'equivalente del computer è un'estensione ancora più naturale,

    
risposta data 03.07.2014 - 23:40
fonte
5

La dimensionalità è il numero di pedici che puoi usare per selezionare gli elementi.

Il tuo esempio [0, [0,0,0]] è ancora un array 2d, anche se contiene un array 3d come secondo elemento. Questo non lo rende un array 4d o 5d, solo una struttura di dati annidata in cui il concetto di "dimensionalità" si interrompe e si confonde molto velocemente.

Esempi come [[0,0], [0,0]] e [0, [0,0,0]] sono pensati meglio non come matrici ma come alberi o altre strutture gerarchiche di dati.

    
risposta data 03.07.2014 - 20:56
fonte
1

Sì, gli esempi forniti sono tutti dimensionali come gli stati Kilan, sebbene potrebbero anche dipendere esattamente da ciò che si sta utilizzando, ad es. linguaggi informatici che hanno un formato diverso per rappresentare tali costrutti.

La dimensionalità stessa può anche essere pensata come 'nidificazione', ad es. se c'è un insieme di elementi discreti che è 1 dimensione, se ogni elemento ha anche elementi, questo è bidimensionale, se ognuno di questi è anche composto da elementi, 3 dimensioni, ecc.

In ruby (ad esempio) questo è rappresentato da:

[n] # One Dimension
[n][o] # Two Dimensions
[n][o][p] # Three Dimensions
[n][o][p][q] # Four Dimensions

Per ogni caso n , o , p e q sono il numero di elementi a quel livello.

Quindi, ad esempio, se si desidera rappresentare 6 stati degli Stati Uniti, le prime 4 città in ciascuno e i 5 edifici più alti in ciascuna città, è possibile utilizzare [5][3][4] (presupponendo l'uso di array basati su zero).

Ho anche lavorato con le lingue anche se un array tridimensionale come quello sopra sarebbe stato rappresentato da

(5,3,4)
    
risposta data 03.07.2014 - 23:16
fonte
1

Un array n-dimensionale è una raccolta di dati. È possibile accedere a questi dati con un valore.

Le persone spesso associano questo valore con le coordinate in uno spazio n-dimensionale, quindi questo valore dovrebbe avere n componenti dire (x, y, z) per l'array 3-d. In altre parole, il numero di dimensioni in una matrice è il numero di componenti nel valore che si utilizza per accedere ai dati nella matrice.

Ora arriva la cosa che poche persone hanno già menzionato nella loro risposta, che dicono che la matrice non è la stessa della gerarchia ad albero. Questo perché tutti noi possiamo percepire che c'è qualcosa differenza tra un albero e un cubo oltre alla notazione, ma molti non possono dire quale sia la differenza. Dopo tutto, i dati in un albero e i dati in un array di n dimensioni possono essere identificati da un valore simile al vettore.

Sono sorpreso che nessuno abbia ancora notato la differenza. È semplice e banale. La differenza sta nel modo in cui crescono. L'albero cresce in profondità, il che significa che il loro fattore di ramificazione rimane lo stesso. D'altra parte, cubo (array) cresce di lunghezza, il che significa che la loro profondità rimane la stessa (stesso numero di dimensioni) ma il fattore di ramificazione cambia se li vedi dal punto di vista dell'albero. Ciò si traduce in una crescita esponenziale e compressione minima, mentre c'è l'opposto per l'altro. Dal punto di vista del software del computer, puoi vedere la differenza nel modo in cui dichiari una variabile.

    
risposta data 08.07.2014 - 11:25
fonte

Leggi altre domande sui tag