Какова лучшая структура данных / алгоритм для данных, требующих двунаправленных отображений от 1 до N? - PullRequest
0 голосов
/ 14 марта 2012

У меня есть разумный (хотя и ржавый) опыт работы в алгоритмах и математике, и скромное знание Python и C. Я могу видеть, как это сделать, но это нетривиально и усложняется каждый раз, когда я создаю прототип Это. Я прихожу к коллективу за его мудростью, надеясь на элегантное решение, которого я не вижу. Я думаю, что есть какой-то вариант сети или графика, который может быть подходящим, но он не щелкает. И это не домашнее задание: -).

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

Каждый A будет отображаться на ноль или более элементов в B. Наоборот, каждый элемент в B будет отображаться на ноль или более элементов в A. Каждый элемент в A и B будет иметь связанный C (возможно, пустой), который может быть разделен с другими A и / или B.

Учитывая A, мне нужно сообщить обо всех B, на которые он отображается. Далее мне нужно сообщить обо всех А, с которыми эти В сопоставлены, а также обо всех С, связанных с тем, что было найдено. Мне также нужно уметь делать обратное (учитывая B, сообщать о связанных A, B и C).

Я понимаю, что здесь есть некоторые довольно патологические возможности, и мне нужно будет обнаружить петли (определение глубины должно работать нормально) и т. Д.

Мысли

1 Ответ

0 голосов
/ 14 марта 2012

первое, что приходит мне в голову, это График или Направленный граф

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

ОБНОВЛЕНИЕ: я не заметил, что вы помеченывопрос граф-алгоритм уже, который я предполагаю, означает, что вы уже думали о структуре данных графа

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