Путь в негеографической среде - PullRequest
1 голос
/ 07 октября 2008

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

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

Ответы [ 2 ]

0 голосов
/ 07 октября 2008

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

Мои таблицы сосредоточены вокруг некоторой магистрали с довольно многими ветвями, каждая из которых ведет к не более чем одному листовому узлу. Вот фактическая карта (имена таблиц удалены, потому что я параноик). Предполагая, что я хочу просмотреть данные из таблиц A, B и C, мне нужен алгоритм для поиска синего пути.

0 голосов
/ 07 октября 2008

Возможно, вы сможете попробовать какую-то форму алгоритма A * . В основном, это рассматривает каждый из возможных следующих вариантов выбора и применяет к нему эвристику, функцию, которая приблизительно определяет, насколько далеко она находится между этим узлом и вашей целью. Затем он выбирает тот, который ближе и повторяется. Самая сложная часть реализации A * - это разработка хорошей эвристики.

Без дополнительной информации о том, как таблицы сочетаются друг с другом, или о том, что вы подразумеваете под «путем» к таблицам, трудно что-либо рекомендовать.

Похоже, мне не понравилась моя ссылка, вероятно * в ней, попробуйте:

http://en.wikipedia.org/wiki/A*_search_algorithm

Edit: Если бы это была вся база данных, я бы пошел с исчерпывающим поиском в глубину .

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