close

Moniulotteinen vektori

Siirry navigointiin Siirry hakuun

Ohjelmoinnissa moniulotteinen vektori on vektori , joka indeksoidaan järjestetyllä kokonaislukuluettelolla. Tässä luettelossa moniulotteisen vektorin indeksointiin käytettyjen kokonaislukujen määrä on aina sama ja tunnetaan vektorin ulottuvuutena . Toisaalta jokaisen indeksiin kuuluvan kokonaisluvun rajat määräävät vektorin ulottuvuuden . Vektoria, jonka ulottuvuus on k , kutsutaan usein k - ulotteiseksi. 1-ulotteiset vektorit vastaavat tavallisia vektoreita , joissa elementit on järjestetty yhteen riviin (tai sarakkeeseen); 2-ulotteiset vektorit ovat toinen tapa kutsua klassisia matriiseja , joissa niiden elementit on järjestetty useisiin riveihin ja sarakkeisiin (kaksi ulottuvuutta). Käytännössä vektorin ulottuvuus ylittää harvoin kolmea.

Esitys muistissa

Tapa järjestää 1-ulotteisen vektorin elementit tietokoneen muistissa on triviaali, koska tämä itsessään on muodoltaan (erittäin suuri) 1-ulotteinen vektori. Mutta kun haluat tallentaa n -ulotteisia vektoreita , ongelma ei ole enää ilmeinen. Oletetaan, että haluamme edustaa tätä yksinkertaista kaksiulotteista taulukkoa:

Yleisin tapa indeksoida tämä matriisi (tai 2-ulotteinen vektori) on käyttää RC - käytäntöä ( rivi - sarake , rivi - sarake ) , jossa elementteihin viitataan osoittamalla ensin rivi ja sitten sarake ( esimerkki, ). tällä tavalla meillä on:

Moniulotteisten vektorien indeksointi voidaan tehdä jollakin seuraavista tavoista:

  • ylärivijärjestys : Kunkin rivin elementit tallennetaan järjestyksessä, ensin yksi rivi, sitten toinen ja niin edelleen. Tätä menetelmää käytetään enimmäkseen staattisissa taulukoissa , jotka on ilmoitettu C :ssä .
1 kaksi 3 4 5 6 7 8 9
  • Sarake-pääjärjestys : Analoginen edellisen kanssa, mutta tällä kertaa elementit tallennetaan sarakkeittain rivien sijaan:
1 4 7 kaksi 5 8 3 6 9
Image
2-ulotteinen vektori tallennettu 1-ulotteiseen 1-ulotteisten vektoreiden vektoriin.
  • X-ulotteinen vektori : Tyypillisesti moniulotteiset vektorit esitetään käyttämällä 1-ulotteista vektoria, joka sisältää viittauksia (tai osoittimia) muihin 1-ulotteisiin vektoreihin. Nämä alivektorit voivat olla epäselvästi matriisin rivejä tai sarakkeita, kaikki riippuu kriteeristä tai tulkinnasta, jonka haluat ottaa.

Kaksi ensimmäistä muotoa ovat tiiviimpiä ja niillä on mahdollisesti parempi viitepaikannus, mutta ne ovat myös rajoitetumpia; vektorien on oltava suorakaiteen muotoisia siinä mielessä, että mikään rivi ei voi sisältää enemmän elementtejä kuin toinen. Vektorivektorit sen sijaan mahdollistavat epätasaisten vektoreiden , joita kutsutaan myös rosoisiksi vektoreiksi , luomisen, joissa yhden indeksin kelvollinen alue riippuu toisen indeksin arvosta tai toisin sanoen siitä, että eri rivit (tai sarakkeet) ne muodostavat voi olla eri kokoisia. Vektorivektorit ovat hyödyllisiä myös ohjelmointikielissä, jotka sallivat vain 1-ulotteiset vektorit primitiivisinä.

Monissa sovelluksissa, kuten numeerisissa sovelluksissa, jotka toimivat matriisien kanssa , sinun on iteroitava 2-ulotteisia suorakaiteen muotoisia vektoreita ennustettavalla tavalla. Esimerkiksi matriisitulon A x B elementin laskeminen sisältää iteroinnin A :n rivillä ja B :n sarakkeella samanaikaisesti. Indeksoimalla taulukon elementit sellaisina kuin ne on tallennettu muistiin, sinun on optimoitava kunkin elementin sijaintitoiminnot mahdollisimman paljon. Joskus kääntäjä voi automaattisesti määrittää vektorin elementtien peräkkäisen taulukon asettelun niin, että ne myös tallennetaan peräkkäin muistiin, esimerkissämme se voi valita rivien ylätason järjestyksen A :lle ja sarake-emojärjestyksen B :lle . _ On olemassa useampia tapoja tallentaa matriisin elementit muistiin, mikä on tehokkaampaa muun tyyppisissä ongelmissa, esimerkiksi jos haluat iteroida matriisin päädiagonaalin yli.

Katso myös