Optimal på disk datastruktur for å søke en fil?

stemmer
2

Jeg har brukt et par timer leser innlegg som var knyttet til spørsmålet i et forsøk på å prøve og komme opp med en løsning, men jeg var ikke veldig vellykket i å komme opp med en.

Så her går: Jeg ble en gang spurt i et intervju som datastruktur jeg ville bruke til å søke en hvis en bestemt ord eksisterte i en fil. Filen er også angivelig stor nok til å ikke være i stand til å passe i minnet, og intervjueren var egentlig på jakt etter en on-disk løsning.

Er B-treet en on-disk datastruktur?

En binært søketre er en in-memory datastruktur er det ikke?

Publisert på 22/02/2011 klokken 21:55
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Begge er bare datastrukturer, og kan være både på disk eller i minnet. Det avhenger av hvordan du velger å bruke dem.

btw, ble B-trær motivert av et behov for å ha på disk strukturer. Binære søketrær er bare et spesialtilfelle av B-trær, på en måte.

Svarte 22/02/2011 kl. 22:01
kilden bruker

stemmer
2

Du ønsker å bruke en datastruktur som tilordner en node til en side av diskplass. Dette vil redusere diskaktivitet.

Fordi en B-treet er ofte brukt for dette. Se http://en.wikipedia.org/wiki/B-tree , spesielt avsnittet "Tid for å søke en sortert fil".

Svarte 22/02/2011 kl. 22:01
kilden bruker

stemmer
4

Det er egentlig to forskjellige mulige spørsmål her:

  1. Gitt en massiv fil, og et ord, hvordan sjekker du om ordet finnes i filen?

  2. Gitt en massiv fil, hvordan du bygger en indeks, slik at du effektivt kan sjekke om en vilkårlig ord finnes i filen?

Det første problemet er effektivt løses med Boyer-Moore og en lineær søk gjennom filen. Hvis du bare søke en gang, og bygge en indeks er en fullstendig bortkastet tid.

Angående det andre problemet, det høres ut som intervjueren er virkelig presser B-trær.

Svarte 22/02/2011 kl. 22:03
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more