假设我有一个无环有向图,例如家庭“树”(不是真正的树,因为孩子有 2 个父母)。我想将此图的表示形式放在关系数据库中,以便快速计算节点的所有祖先和节点的所有后代。你会如何表示这个图表?您将如何查询所有后代?您将如何插入和删除节点和关系?你对数据做了什么假设?
对于您运行查询祖先和后代的语句数量,最佳解决方案将具有最佳大 O,在select/insert/delete
总运行时间中,最佳大 O 打破平局,并因空间要求而打破平局。
我的同事向我提出了这个问题。我有一个解决方案,但在最坏的情况下它是指数级的,所以我想看看其他人会如何解决它。
编辑
明确的关系数据库。如果您使用带有内置传递闭包的图形数据库,这个问题是微不足道的(而且很无聊)。