我正在为我的父母开发一个小家谱项目(php mysql) . 由于整棵树相当宽,并且不能通过长镜头适合任何屏幕,我想做一个“关系查找器”,一种显示两个任意,可能非常相关的人之间的关系的方式 .

每个祖先都使用他/她自己的个人ID存储在数据库中 . 每个人($ ancestor [$ id])有0-2个父母(int ID)和0-11个孩子(带有int ID的数组):

int $ancestor[$id]["father"]
int $ancestor[$id]["mother"]
array $ancestor[$id]["children"]

我现在需要找到$ ancestor [$ some_id]和$ ancestor [$ another_id]之间的最短连接,作为$ some_id和$ another_id之间的ID列表 .

有没有一种优雅的方法/算法来做到这一点,没有遍历每个可能的排队(儿童)和下来(祖先),直到我找到2个(或没有)匹配的ID?你可以给我关于这个主题的任何指针都会非常感激,因为我之前从未使用过这种方式的树/图 .

干杯