Gå til innhold

Hvordan lage et stort - KJEMPESTORT - array?


Anbefalte innlegg

Skrevet

Jeg trenger litt hjelp. Hvor stort kan et array DIM'es i VB eller QB? Kan det bli så stort at VB kan bruke swap-memory for å holde på alt? Hvordan kan man sette opp noe slikt? Evt. muligheter for å komme rundt det problemet?

Videoannonse
Annonse
Skrevet

Jeg tror den øvre grensen ligger på omtrent 2.147.483.648 elementer. Grunnen til dette er fordi VB bruker LONG for å lagre mengden av elementer i en array og den høyeste verdien en LONG kan lagre er +2.147.483.648.

 

En array bestående av bare LONG vil da kunne holde på 8 GB med data, noe som etter min mening er mer en nok i dag. De fleste har uansett ikke så mye RAM at det gjør noe.

Skrevet (endret)

Hmmm. Det er faktisk ikke nok. Jeg skal prøve å skrive noe som plukker ut beste / mest rettferdige kombinasjon av prioriterte valg (30 personer som får 3 valg hver). Uheldigvis tilsvarer det 3^30 = 2.0e14 kombinasjoner. :wow:

 

To ganske store ulemper melder seg da:

1. det tilsvarer et array på nærmere 30 terabytes hvis jeg ikke tar helt feil. Og det er hvis hvert element er en integer... jeg må kanskje representere innholdet i kombinasjonen, antagelig med en 60 lang string...

2. Gjennomgangen av 2.0e14 kombinasjoner vil vel ta nærmere et år på en valig PC, selv i C++?

 

edit: hvis jeg gjetter på at maskinen går igjennom en million kombinasjoner i sekundet, vil utregningen ta 6,5 år. Går bare man opp til 35 personer med 4 valg, tar det 37 millioner år! Ser ut til at det er mye å tjene på å finne noen snarveier eller heuristikker.

Endret av Onkel
  • 4 måneder senere...
Skrevet

Jeg tenker sjakkprogrammering når jeg så Innlegget ditt. Her har man jo etterhvert utviklet endel metoder for å korte ned på søketiden. Kanskje kan noe av dette være brukbart for deg? "chess programming" på google kan kanskje hjelpe deg på vei.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...