我需要能够在python中操作一个大的(10 ^ 7个节点)图形.对应于每个节点/边缘的数据是最小的,例如,少量的字符串.在内存和速度方面,最有效的方法是什么?
dicts的词典更灵活,更易于实现,但我直观地期望列表列表更快.list选项还要求我将数据与结构分开,而dicts允许这样的东西:
graph[I][J]["Property"]="value"
Run Code Online (Sandbox Code Playgroud)
你会建议什么?
是的,我应该对效率的意思更清楚一点.在这个特殊情况下,我的意思是随机访问检索.
将数据加载到内存中不是一个大问题.这是一劳永逸的.耗时的部分是访问节点,因此我可以提取信息并测量我感兴趣的指标.
我没有考虑过让每个节点成为一个类(所有节点的属性都相同),但似乎会增加一层额外的开销?我希望有人可以直接体验他们可以分享的类似案例.毕竟,图形是CS中最常见的抽象之一.
如果给出一个图形问题,我们怎么知道我们是否需要使用bfs或dfs算法?或者我们何时使用dfs算法或bfs算法.一个人与另一个人有什么区别和优势?
我正致力于实现Dijkstras算法,以检索路由网络上互连节点之间的最短路径.我有实施工作.当我将起始节点传递给算法时,它返回所有节点的所有最短路径.
我的问题:如何检索从节点A到节点G的所有可能路径,甚至从节点A返回到节点A的所有可能路径
我需要在图表上找到最小切割.我一直在阅读关于流网络的内容,但我能找到的是最大流算法,如Ford-Fulkerson,push-relabel等.鉴于最大流量最小切割定理,是否可以使用其中一种算法来查找使用最大流算法在图表上的最小割数?怎么样?
到目前为止我发现的最好的信息是,如果我发现"饱和"边缘,即流量等于容量的边缘,那些边缘对应于最小切割.真的吗?这对我来说听起来不是100%.确实,最小切口上的所有边缘都将饱和,但我相信也可能存在饱和边缘,这些边缘超出最小切割"路径".
给定具有n个顶点(| V | = n)的无向图G =(V,E),如何找到它是否包含O(n)中的循环?
有人可以告诉我汉密尔顿路径和欧拉路径之间的区别.他们似乎相似!
我有一个我在graphviz中创建的图形,但问题是边缘相互重叠(每行有5-7个节点),因此很难说每个节点是它连接的节点.
如何使边缘不相互重叠?让他们互相交叉是好的.
我试图强制节点的位置.我有我的节点的x和y坐标及其有向图.我可以使用rank = same来处理行(y坐标),但无法弄清楚我如何处理列(x坐标).