Я пытаюсь создать простое генеалогическое дерево в ruby, в которое я мог бы добавлять детей через материнские узлы. Также, когда я даю имя и отношение в качестве входных данных, я должен иметь возможность получать выходные данные в виде имен людей, связанных с данным именем человека. Например, я должен иметь возможность выполнять такие операции, как add_child('Tina', 'bob') // which will add bob as a child node to Tina
get_relation(bob, maternal_uncles) // which should output all the siblings of Tina in this case.
Какая структура данных лучше всего подходит для реализации этого и как реализовать это в ruby? В своем исследовании я обнаружил, что график - это хороший подход, и я изучал его реализацию в течение 2 дней, но не смог найти никакого решения.
Я попробовал следующие библиотеки
RubyTree
https://github.com/evolve75/RubyTree - Это помогло мне установить отношения с родителями, братьями и сестрами, бабушкой и дедушкой, но я не мог придумать, как я могу использовать это, чтобы установить такие отношения, как братья отца (дядя по отцовской линии), сестры жены (невестка) и т. Д.
weighted graph
https://github.com/msayson/weighted_graph - я использовал 0 для представления супруга и 1 для представления детей. Я не мог никуда идти отсюда. Я запутался в том, как получить родителей и детей данного человека.
Я немного изучил вопросы о ruby prefix trees
и rgl gem
, но не смог применить их к своему заявлению.
Пожалуйста, помогите. Заранее спасибо!