2011-12-13 2 views
5

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

Было бы неплохо, если бы я мог найти некоторую структуру данных из C++ STL.

Требуются только идеи.

ответ

3

Это домашнее задание?

Даже если это называется «Дерево», это плохая структура: представьте себе двух брата, которые выходят замуж за двух сестер.

Общая структура графа будет лучшей (дерево является конкретной формой графика). Край будет нести отношения. Затем вы можете запустить алгоритм поиска пути (например, добрый старый dijkstra) только по краям, которые представляют кровное родство.

И boost :: graph - очень хорошая библиотека.

+0

нет его не домашняя работа –

4

A graph будет лучше всего подходит для этого, и я предлагаю вам использовать Boost.

Обратите внимание, что создание генеалогического древа может оказаться сложным, как показано на рисунке this question.

В противном случае std не определяет структуру данных графа. И поскольку граф, очевидно, лучше всего подходит для вашей ситуации, я предлагаю вам либо реализовать свою собственную версию, либо использовать Boost.

+1

Я как раз собирался опубликовать эту ссылку ... +1 :) – jrok

+0

@jrok yup, это классика :) –

Смежные вопросы