Tag: 家族树

家谱algorithm

我正在为一个介绍级别的CS课程设置一个问题,并提出了一个问题,表面上看起来很简单: 给你一个有父母姓名,出生date和死亡date的人名单。 你有兴趣找出在他们有生之年的某个时刻,他是一个父母,一个祖父母还是一个曾祖父母,等等。devise一个algorithm,把这个信息标记为一个整数(0表示这个人从来没有孩子,1表示该人是父母,2表示该人是祖父母等) 为了简单起见,您可以假设家族图是一个DAG,其无向版本是一棵树。 这里有趣的挑战是你不能只看树的形状来确定这个信息。 例如,我有八个曾祖父母,但是因为他们中没有一个在我出生的时候还活着,在他们有生之年,没有一个是曾祖父母。 我可以为这个问题提出的最好的algorithm运行时间O(n 2 ),其中n是人的数量。 这个想法很简单 – 从每个人开始一个DFS,find在该人的死亡date之前出生的家族树中最远的后裔。 但是,我很确定这不是问题的最佳解决scheme。 例如,如果graphics只是两个父母和他们的n个孩子,那么问题可以在O(n)中平凡地解决。 我希望得到的是一些algorithm,要么是O(n 2 ),要么是其运行时参数化的graphicsforms,使得宽图的速度快,而在最差的情况下,O(n 2 )案件。