Я ищу структуру адресации контента - PullRequest
3 голосов
/ 18 марта 2009

Я пытаюсь разработать структуру данных, которая позволяет эффективно извлекать записи из части их содержимого.

Допустим, я ищу запись, которая соответствует этому: [ x 2 3 x x ]

Если [ 0 2 3 4 5 ] или [ 3 2 3 7 8 ] в моей структуре данных, они должны быть возвращены моя функция поиска.

Я написал такую ​​структуру данных, в которой сравнивал «шаблон» со всеми элементами структуры данных, но, конечно, это занимает слишком много времени. У меня мало идей о том, как сделать это быстрее, но они довольно тяжелы для реализации. Что-то подобное уже существует? Если нет, как бы вы это сделали?

Ответы [ 4 ]

5 голосов
/ 18 марта 2009

Первое, что приходит на ум, - это иметь хеш-таблицу для каждой позиции в кортеже. Для поиска вы пересекаете результаты для всех позиций с указанным значением.

4 голосов
/ 18 марта 2009

Ну, Суффиксное дерево может сделать это в O (1), но это займет МНОГО памяти.

2 голосов
/ 18 марта 2009

То, что вы пытаетесь реализовать, очень похоже на пространство кортежей .

0 голосов
/ 22 марта 2009

Вы можете взглянуть на алгоритм RETE . Эта общая проблема возникла в системах искусственного интеллекта 70-х годов; Глава 14 в Парадигмы AI-программирования охватывает это. (IIRC в основном разрабатывает деревья ответов и решений Starblue.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...