用于构建族谱树的结构和算法是什么?

时间:2014-07-18 06:04:06

标签: algorithm graph-algorithm directed-acyclic-graphs genealogy

我在一本书中发现,为了使用拓扑排序,使用DAG(有向无环图)来展示族谱(族)树,但这种算法取决于输入数据的顺序。

4 个答案:

答案 0 :(得分:1)

家谱数据库通常使用称为谱系连锁结构的数据库。

这意味着合作伙伴(丈夫/妻子)被联系起来并被称为家庭。一个家庭与其子女有着联系,从孩子到其家庭的关系。

我不知道代表这一点的特定图表类型。大多数程序使用族表和单个表对其进行自定义编程,并在它们之间建立适当的链接。

Genealogy数据库通常遵循这种结构来匹配为了允许在程序之间传输数据而开发的GEDCOM (Genealogy Data Communications) standard

在该标准中,您将专门查看FAM和INDI记录。 FAM记录通过HUSB,WIFE和CHIL链接连接到INDI记录。 INDI记录通过FAMS(配偶)和FAMC(父)链接连接到FAM记录。

使用此数据结构,您可以轻松阅读GEDCOM文件并从其他族谱软件导入数据,还可以将数据导出到GEDCOM文件,以便其他家谱程序可以读取它。

答案 1 :(得分:1)

为了呈现历史记录中找到的人之间的关系,Open Archives使用灵活的force-directed graph布局实现。在该图中,每个节点都是一个人,并且有两种类型的顶点:一种描绘婚姻(橙色),一种描绘父亲关系(红色'血液'线)。可以看到图表的示例here

答案 2 :(得分:0)

在家谱中,所谓的Ahnentafel索引(德语为“祖先表”)用于表示单个人的祖先;基本上这是二元树的合适线性化。

答案 3 :(得分:0)

DAG不起作用。可以查看先前的帖子using GEDCOM model in Neo4j

谱系可以具有复杂的关系,例如双表兄弟,兄弟姐妹的婚姻,血缘关系等。这些很容易在非sql数据库(如Neo4j)中进行管理。