我需要存储一个有向图(不一定是无环的),以便节点删除尽可能快速。为了知道在删除节点时哪些边需要去掉,我不介意存储额外的数据。
如果我存储边的列表(作为节点索引对),那么当删除某个节点n时,我必须搜索整个列表以查找其源或目标为n的边。这对我的应用程序来说太昂贵了。是否可以通过在节点中存储一些附加数据来避免此搜索?
一个想法是让每个节点分别存储其源和目标,作为两个单独的列表。当节点n被删除时,它的列表也会被删除。但是,与节点n链接的所有目标/源如何知道更新自己的列表(即从他们的列表中消除已失效的节点)?这将需要一些昂贵的搜索...
能否避免这种情况发生呢?
谢谢。