【发布时间】:2012-07-05 05:49:08
【问题描述】:
我有一个图表和这个图表中的路径列表。对于每条边e,我需要找到使用e的路径,然后根据这些路径做一些其他的工作。图的大小和对内存使用的限制使得我不能只遍历所有路径来构建一个集合数组,其中 set i 包含使用边缘 i 的路径。
可行的蛮力方法是:
for edge in edges:
x = []
for path in paths:
if edge in path:
x.append(path)
f(x)
如何在保持内存效率的同时获得更好的时间效率?
【问题讨论】:
-
你能把图表本身保存在内存中吗?
-
是的,图形和路径适合内存。
-
大概是多少?您能否给我们以下的近似上限: 1. 图中有多少个顶点? 2. 图中有多少条边? 3. 有多少条路径? 4. 一条路径通常有多少条边?
-
40 000 个顶点,80 000 条边,300 000 条路径,路径通常有几百条边
标签: algorithm data-structures memory-efficient