У меня есть разумный (хотя и ржавый) опыт работы в алгоритмах и математике, и скромное знание Python и C. Я могу видеть, как это сделать, но это нетривиально и усложняется каждый раз, когда я создаю прототип Это. Я прихожу к коллективу за его мудростью, надеясь на элегантное решение, которого я не вижу. Я думаю, что есть какой-то вариант сети или графика, который может быть подходящим, но он не щелкает. И это не домашнее задание: -).
У меня есть три набора данных, A, B и C. Каждый элемент в A является строкой, каждый элемент в B представляет собой целое число, а каждый C представляет собой набор метаданных (даты, время, описания и т. Д.). В каждом наборе потенциально могут быть тысячи, если не миллионы элементов (хотя и не скоро).
Каждый A будет отображаться на ноль или более элементов в B. Наоборот, каждый элемент в B будет отображаться на ноль или более элементов в A. Каждый элемент в A и B будет иметь связанный C (возможно, пустой), который может быть разделен с другими A и / или B.
Учитывая A, мне нужно сообщить обо всех B, на которые он отображается. Далее мне нужно сообщить обо всех А, с которыми эти В сопоставлены, а также обо всех С, связанных с тем, что было найдено. Мне также нужно уметь делать обратное (учитывая B, сообщать о связанных A, B и C).
Я понимаю, что здесь есть некоторые довольно патологические возможности, и мне нужно будет обнаружить петли (определение глубины должно работать нормально) и т. Д.
Мысли