繁体   English   中英

如何在C ++中实现超过2000个节点的最小生成树?

[英]How to implement Minimum Spanning tree in C++ with more than 2000 nodes?

我想找到一个有超过2000个节点的图形的MST。 我得到的问题是我不能使大小超过1500X1500的邻接矩阵(如果大小超过这个分段错误正在发生,因为我们可以创建一个最大10 ^ 7大小的数组)。 怎么可以这样做?

这里有很多问题要考虑。

  1. 如果正确执行此操作,您应该能够分配大小为1500×1500的数组,而不会导致段错误。 如果你试图在堆栈上分配这个大小的数组(也就是说,作为局部变量),那么你可能会耗尽你的堆栈空间,这可能是导致你得到错误的原因。 但是,如果使用new[]或使用std::vector分配它,则内存存储在堆中,该堆旨在容纳这样的请求。

  2. 邻接矩阵只是表示图形的一种方式,并且它们被称为太空生猪,如果你正在使用极其密集的图形,这只是一个好主意。 最常见的替代方案是邻接列表 ,它使用更少的存储空间,易于实现,并且比邻接矩阵更快地支持许多相关操作。 您可能需要考虑将此开关与堆放在堆上而不是堆栈上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM