我有一个 DAG,用于存储我的应用程序中某些对象之间的关系。当通过在现有顶点下方添加新顶点来更新此结构时(即,在新顶点中隐式创建新边),然后(在以后的任何时间)从那里到其他顶点的新边,我想确保图保持 DAG,即我的代码不会创建循环。
我是否必须为每个插入和连接操作添加循环检测,或者是否有可以在插入时遵循的规则来保证我不会产生循环?
我能想到的一种方法是存储每个节点的拓扑级别,并且只允许指向更高级别(离源节点更远)的新边。但是,这似乎实际上会剥夺我通过使用 DAG 而不是一组普通树来实现的许多灵活性。