用什么结构和算法来构建家谱树?



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

家谱数据库通常使用所谓的谱系链接结构。

这意味着伴侣(丈夫/妻子)是联系在一起的,被称为一个家庭。一个家庭与它的孩子相连,孩子与它的父家庭相连。

我不知道一个特定的图类型来表示这个。大多数程序都使用一个族表和一个单独的表来定制程序,它们之间有适当的链接。

家谱数据库通常遵循这种结构来匹配GEDCOM(家谱数据通信)标准,该标准是为了允许在程序之间传输数据而开发的。

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

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

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

为了表示历史记录中发现的人之间的关系,Open Archives使用了一种灵活的力向图布局实现。在这张图中,每个节点都是一个人,并且有两种类型的顶点:一种描述婚姻(橙色),另一种描述父母关系(红色"血"线)。在这里可以看到一个图表的例子。

dag不能工作。可以看看以前的帖子使用GEDCOM模型在Neo4j

血统可以有复杂的关系,如双表兄妹、继兄弟姐妹婚姻、同族等。这些在Neo4j等非sql数据库中很容易管理。

最新更新