我需要实现一个有向图(digraph),它允许有多条弧(multigraph),就像链接中的图片一样。该图必须经过优化以处理大量的节点,但是很少有两个节点之间的边缘。该图必须经常更新,并且必须支持高效的路径搜索。哪种数据结构可以在所用空间和查询时间之间取得平衡呢?语言为标准C(仅libc)。
图例
NODE_COUNT
个节点。您创建一个长度为NODE_COUNT
的向量GRAPH
。在条目X
中,您有一个大小可变的数组(动态分配)。每个条目看起来像GRAPH [X] = [A1,A2,A3]
,表示边缘{(X,A1),(X,A2),(X,A3)}
。GRAPH [X]
上。如果每个节点有超过6个边缘,则可以考虑这种可能性,而不是在位置GRAPH [X]
上使用非有序数组。GRAPH[X]
可以是邻接表,或者如果他需要更快的查找,可以是二叉搜索树,或者他可以使用有序数组进行对数时间搜索边缘 -- 他可以根据每个节点的平均边数和他需要在图上执行的操作类型选择其中之一。 - alinsoar