在SQLite数据库中确定DAG中的子节点

时间:2015-04-08 18:40:08

标签: python sqlite graph-theory directed-acyclic-graphs

我输入了directed acyclic graph(不一定连接)的SQLite数据库,其中节点存储为

node_id | name
1       | a
2       | b
3       | c
4       | d
5       | e
6       | f

并将边存储为:

edge_id | source | target
1       | 1      | 2
2       | 1      | 3
3       | 1      | 4
4       | 2      | 5

这是一个玩具示例,我的数据库有大约10 ^ 4到10 ^ 5个节点(小但不是很简单)。我需要从给定节点查询所有“子节点”节点。举个例子:

input | expected output
1     | [2,3,4,5]
2     | [5]
3     | []
6     | []

我现在正在使用python的SQLite3模块执行此操作,但我必须递归地为每个节点进行select调用 - 这可能会非常昂贵。有没有一种聪明的方法可以做到这一点,也许只需一次SQLite调用?

0 个答案:

没有答案