标签: graph-theory

Python中最有效的图形数据结构是什么?

我需要能够在python中操作一个大的(10 ^ 7个节点)图形.对应于每个节点/边缘的数据是最小的,例如,少量的字符串.在内存和速度方面,最有效的方法是什么?

dicts的词典更灵活,更易于实现,但我直观地期望列表列表更快.list选项还要求我将数据与结构分开,而dicts允许这样的东西:

graph[I][J]["Property"]="value"
Run Code Online (Sandbox Code Playgroud)

你会建议什么?


是的,我应该对效率的意思更清楚一点.在这个特殊情况下,我的意思是随机访问检索.

将数据加载到内存中不是一个大问题.这是一劳永逸的.耗时的部分是访问节点,因此我可以提取信息并测量我感兴趣的指标.

我没有考虑过让每个节点成为一个类(所有节点的属性都相同),但似乎会增加一层额外的开销?我希望有人可以直接体验他们可以分享的类似案例.毕竟,图形是CS中最常见的抽象之一.

python performance graph-theory data-structures

65
推荐指数
3
解决办法
3万
查看次数

图形数据结构:DFS与BFS?

如果给出一个图形问题,我们怎么知道我们是否需要使用bfs或dfs算法?或者我们何时使用dfs算法或bfs算法.一个人与另一个人有什么区别和优势?

graph-theory graph

62
推荐指数
3
解决办法
7万
查看次数

找到两个图节点之间的所有路径

我正致力于实现Dijkstras算法,以检索路由网络上互连节点之间的最短路径.我有实施工作.当我将起始节点传递给算法时,它返回所有节点的所有最短路径.

我的问题:如何检索从节点A到节点G的所有可能路径,甚至从节点A返回到节点A的所有可能路径

algorithm graph-theory

60
推荐指数
6
解决办法
12万
查看次数

如何使用最大流量算法在图表上找到最小割数?

我需要在图表上找到最小切割.我一直在阅读关于流网络的内容,但我能找到的是最大流算法,如Ford-Fulkerson,push-relabel等.鉴于最大流量最小切割定理,是否可以使用其中一种算法来查找使用最大流算法在图表上的最小割数?怎么样?

到目前为止我发现的最好的信息是,如果我发现"饱和"边缘,即流量等于容量的边缘,那些边缘对应于最小切割.真的吗?这对我来说听起来不是100%.确实,最小切口上的所有边缘都将饱和,但我相信也可能存在饱和边缘,这些边缘超出最小切割"路径".

cut flow graph-theory minimum max-flow

56
推荐指数
3
解决办法
6万
查看次数

无向图中的循环

给定具有n个顶点(| V | = n)的无向图G =(V,E),如何找到它是否包含O(n)中的循环?

algorithm graph-theory graph

54
推荐指数
5
解决办法
10万
查看次数

C#图形图库?

我正在寻找一个允许我绘制CFG(控制流图)的(免费)库.像yFiles这样的东西,但免费或最好是开源?理想情况下,此库将允许用户导航图形(并修改它),即图形不仅仅是静态的先验渲染位图.想法?

更新:
Glee与上面提到的QuickGraph库结合使用似乎非常好用.谢谢

Update2: Graph#似乎是目前最强大的库.还有一个很好的教程如何使用它.

c# graphics graph-theory

52
推荐指数
3
解决办法
6万
查看次数

哈密​​顿路径和欧拉路径之间的区别

有人可以告诉我汉密尔顿路径和欧拉路径之间的区别.他们似乎相似!

algorithm graph-theory graph hamiltonian-path

52
推荐指数
3
解决办法
9万
查看次数

如何防止graphviz中的边缘相互重叠

我有一个我在graphviz中创建的图形,但问题是边缘相互重叠(每行有5-7个节点),因此很难说每个节点是它连接的节点.

如何使边缘不相互重叠?让他们互相交叉是好的.

graph-theory graphviz overlap

51
推荐指数
3
解决办法
4万
查看次数

如何在graphviz中强制节点位置(x和y)

我试图强制节点的位置.我有我的节点的x和y坐标及其有向图.我可以使用rank = same来处理行(y坐标),但无法弄清楚我如何处理列(x坐标).

position graph-theory dot graphviz

51
推荐指数
2
解决办法
3万
查看次数

找到(稀疏)图的直径的好算法?

我有一个邻接列表形式的大型连接稀疏图.我想找到两个尽可能远的顶点,即直径和实现它的两个顶点.

对于不同的应用,我对无向和定向情况下的这个问题感兴趣.在定向情况下,我当然关心定向距离(从一个顶点到另一个顶点的最短有向路径).

有没有比计算所有对最短路径更好的方法?

编辑:通过"尽可能远的距离",我当然意味着"最长的最短路径" - 也就是说,从一个到另一个的最短距离的所有顶点对的最大值.

algorithm math graph-theory

50
推荐指数
3
解决办法
1万
查看次数