Оптимальная структура данных на диске для поиска файла?

голоса
2

Я провел пару часов чтения сообщения, которые были связаны с вопросом в попытке, чтобы попытаться придумать решение, но я не был успешным в ближайшем с одной.

Так вот: я был когда-то спросили в интервью, которое структура данных будет использовать для поиска, если конкретное слово существует в файле. Файл также якобы достаточно большой, чтобы не быть в состоянии вписаться в памяти и интервьюер был действительно ищет решения на диске.

Является ли B-Tree структуры данных, на диске?

Двоичное дерево поиска представляет собой структуру данных в оперативной памяти, не так ли?

Задан 22/02/2011 в 22:55
источник пользователем
На других языках...                            


3 ответов

голоса
1

Оба только структуры данных и могут быть как на диске или в памяти. Это зависит от того, как вы решите использовать их.

Кстати, B-деревья были продиктованы необходимостью иметь на диске структур. Бинарные деревья поиска являются лишь частным случаем B-деревьев, в одну сторону.

Ответил 22/02/2011 в 23:01
источник пользователем

голоса
2

Вы хотите использовать структуру данных, которая отображает один узел на одну страницу дискового пространства. Это позволит свести к минимуму активности диска.

Так как B-Tree часто используется для этого. См http://en.wikipedia.org/wiki/B-tree , в частности , раздел «Время поиска отсортированный файл».

Ответил 22/02/2011 в 23:01
источник пользователем

голоса
4

Есть действительно два различных возможных вопросов здесь:

  1. Учитывая массовый файл, и слово, как проверить, если слово существует в файле?

  2. Учитывая массовый файл, как вы строите индекс, так что вы можете эффективно проверить, если любое слово существует в файле?

Первая задача эффективно решается с Бойер-Мура и линейный поиск через файл. Если вы только ищете один раз, создание индекса является пустой тратой времени.

Что касается второй проблемы, то это звучит как интервьюер действительно толкает B-дерева.

Ответил 22/02/2011 в 23:03
источник пользователем

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