问题标签 [family-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2685 浏览

prolog - Prolog - 家谱

我正在努力在序言中创建一个家谱。当我拜访姐妹或兄弟时,我遇到了麻烦。我得到的结果是正确的,其中 julie 是 mike 的妹妹,julie 是 amanda 的妹妹,amanda 是 mike 的妹妹,amanda 是 julie 的妹妹。但是会发生什么而不是在那里结束,如果我继续按“n”键,它将再次循环返回结果。为什么会这样?

0 投票
5 回答
4992 浏览

javascript - 使用深度优先搜索渲染动态创建的族图没有重叠?

我想生成这个:

在此处输入图像描述

使用这种数据结构(ID 是随机的,顺便说一句不是顺序的):

为了描述数据结构,定义了根/起始节点(me)。任何合作伙伴(妻子,前任)都处于同一水平。低于的任何东西都会变成-1、-2级。上面的任何内容都是级别 1、2 等。父母、兄弟姐妹、孩子合作伙伴的属性定义了该特定字段的 id。

在我之前的问题中,eh9描述了他将如何解决这个问题。我正在尝试这样做,但正如我发现的那样,这不是一件容易的事。

我的第一次尝试是从上到下按级别渲染。在这个更简单的尝试中,我基本上将所有的人按层嵌套并从上到下渲染。

我的第二次尝试是使用深度优先搜索使用其中一个祖先节点来渲染它。

我的主要问题是:我如何才能将这个答案实际应用到我目前拥有的东西上?在我的第二次尝试中,我尝试进行深度优先遍历,但我什至如何开始计算偏移网格所需的距离以使其与我想要生成的方式一致?

另外,我对深度优先理想的理解/实现,还是我可以以不同的方式遍历它?

在我的第二个示例中,节点显然重叠,因为我没有偏移/距离计算代码,但我对实际弄清楚如何开始这一点感到迷茫。

这是我制作的 walk 函数的描述,我正在尝试深度优先遍历:

}

要求/限制:

  1. 这是给编辑的,类似于familyecho.com。几乎所有未定义的业务规则都可以通过它来假设。
  2. 不支持家庭繁殖,因为这会使这种方式过于复杂。不要担心这个。
  3. 支持多个合作伙伴,因此这不像只有 2 个父母和 1 个孩子的传统“家谱”那么容易。
  4. 只有一个“根”节点,即起始节点。

注意:familyecho.com 似乎“隐藏”了一个分支,如果有很多叶节点并且存在冲突。可能需要实现这一点。

0 投票
1 回答
412 浏览

javascript - dynamic family tree traverse php javascript

i want to create a family tree website in which members can be added dynamically through backend. I am usin php-mvc,mysql. I am adding members through backend and I have 4 tables 1. members-details of members and also father,mother ids; 2 partner-to show partner relationships 3 child - to show child relationships 4 sibling - to show sibling relationships

My table structure Members

Partner

child

sibling

I am adding values to this table . Now I need to show this as a tree structure. I didnt get any idea from my searchings, Can anyone help me to traverse data as a family tree .

0 投票
1 回答
987 浏览

java - 试图从头构造一个家谱类型的数据结构,绝对输了

如果我看起来 100% 完全一无所知,我很抱歉;这不是我的意图......我真的已经尝试了迄今为止在我的数据结构课程中学到的所有东西来尝试这个项目,但最终却一无所获,现在我正在寻求关于我应该如何尝试这个的帮助。

我的最后一个项目是开发一个新数据结构的逻辑和实现层,我们称之为“家谱”。在这种树型数据结构中,每个节点都是一个简单的节点,分配有以下数据值:姓名、性别、出生日期、死亡日期和父母(这是一种特殊类型的节点)

父节点是一个特殊节点,它包含两个子节点,1 代表父亲,1 代表母亲,并且包含指向 0 个或多个子节点的链接,并且只有父节点可以包含子节点。

至少,我应该能够实现以下方法:

  • 创建父节点:将两个节点合并为一个父节点。
  • 添加节点:在父节点下向树中添加一个新节点(家庭成员)。
  • 打印:以信息格式打印出家谱。

从添加到已经存在的 Tree 数据结构和创建 Person 类型的对象以存储要由树中的每个节点读取的值到从头开始构建我自己的数据结构,我已经尝试了所有方法。出于纯粹的沮丧,我删除了我的大部分作品,因为它并没有真正取得任何成果。

关于如何解决这个特定问题的任何建议?在任何情况下,我通常不会在不离开我的一些工作的情况下向这个论坛发布问题,但我束手无策。

0 投票
2 回答
680 浏览

html - 维基百科上的 HTML 家谱样式

维基百科经常在他们的文章中加入家谱。一个例子可以在这里找到:

https://en.wikipedia.org/wiki/Monarchy_of_Belgium#List_of_Kings_of_the_Belgians

如果我查看上述家谱的 HTML 源代码,我看不到它们是如何防止空表格单元格绘制边框的。

有人可以指出控制这个家谱中单元格样式的样式代码吗?我想复制一个家谱,但简单地剪切和粘贴<table> </table>内容失败。我得到的只是一个巨大的网格。

0 投票
1 回答
435 浏览

sqlite - 图形家谱算法

我有一个带有 3 个表的 SQLite 数据库:

  • 编号:整数
  • 名称:文字
  • 性别:整数

家庭

  • 编号:整数
  • 丈夫ID:整数(个人ID)
  • WifeID:整数(个人 ID)

孩子们

  • 编号:整数
  • ChildID:整数(个人 ID)
  • 家庭ID:整数
  • 顺序:整数

所以我很想创建一个图形输出。

OOP 类应该是什么样子的?孩子的孩子也应该被画出来。所以我需要交互来选择每个孩子的家庭,其中孩子是丈夫或妻子,并找到其中的任何孩子。如何做到这一点(SQL SELECT)?以及如何创建图形输出类?

有没有可能一步步一起创造出这样一个概念?阅读了很多关于 Tilford 算法的内容,但我不是专业的,只是爱好程序员。对我来说太高了:D

使用 Xojo/RealBasic/VB/Delphi 进行开发。

谢谢大家

0 投票
0 回答
99 浏览

algorithm - 如何找到两个节点之间的遗传联系

我们当前项目的一个功能是找出两个节点的关系。一个节点可以由另外两个节点共同生成。简单来说,我把它们当成一个家谱,如下:

我将编写一个函数来确定两个节点是否遗传连接,例如:

我不确定我们是否可以在这里应用LCA,或者有没有其他好的算法来解决这个问题?

0 投票
3 回答
287 浏览

algorithm - 在有向树上计算 p-cousins

我们得到了一个可以使用的有向树。我们将p-ancestorp-cousin的概念定义如下

p-ancestor:如果一个节点是另一个节点的父节点,则它是另一个节点的1-祖先。如果它是第(p-1) 个祖先父节点,则它是节点的p 祖先。

p-cousin:一个节点是另一个节点的p-cousin,如果它们共享相同的p-ancestor

例如,考虑下面的树。

例子

4 有三个 1 表兄弟,即 3、4 和 5,因为它们都共享共同的 1 祖先,即 1

对于特定的树,问题如下。您将获得多对 (node, p ) 并且应该计算(并输出)相应节点的p-cousin的数量。

一个缓慢的算法是爬到p 祖先并为每个节点运行 BFS。

解决问题的(渐近)最快的方法是什么?

0 投票
1 回答
246 浏览

php - 哪个函数可以替换php中的多个嵌套循环?

我处理家谱函数,我需要for()为每一代迭代一个语句。

我不知道提前生成的数量,所有for()语句都将包含几乎相同的脚本......

有没有最简单的方法来做这样的二维?有没有办法满足for()我的需要?

0 投票
1 回答
1978 浏览

prolog - 带有 SWI-Prolog 的家谱

我试图让一个简单的家谱与 Prolog 一起使用最多允许 3 个事实,但是我似乎无法将我的妹妹定义为我父母的孩子。这是我写的:

当我输入father(ZFather,ZChild)Prolog 时,它只显示me为孩子而不是我的sis. 我知道我没有在事实中定义它,但我试图在规则中这样做,child(Z2,X)并且child(Z2,Y)意思Z2是我的sis.

帮助将不胜感激。