What is the maximum number of nodes or edges igraph-python will support?

Topic title says it all. I can’t seem to find this info anywhere, just that it supports “large” graphs.

This does not seem to be properly document in the Python interface indeed.

In the C interface, the maximum number of nodes and edges are documented. Both 32-bit and 64-bit integers are supported. Using 32-bit, this amounts to about 2.1 billion vertices and 1 billion edges. Using 64-bit, this amounts to about 2^{63} nodes and 2^{62} edges.

In principle, the Python interface is compiled in 64-bit mode on 64-bit platforms and 32-bit mode on 32-bit platforms.

Perhaps you could open an issue on Issues · igraph/python-igraph · GitHub if you think this should be documented more clearly?

Regarding documenting this, I don’t think we should commit to a specific value long-term. I suggest that the Python docs should just refer to the C docs, which actually stays updated with any changes. Updating the Python docs when a change occurs is likely to be forgotten.

The practical answer

Any scientific use of igraph likely happens on 64-bit machines where the real limiting factor for storing graphs is the amount of memory. The limits that @vtraag linked to are relevant in practice only when using 32-bit integers.

All this refers to storing graphs only. Some algorithms only work on much smaller graphs. These limits are not documented, and are subject to change (usually improvement) without notice, but if they are exceeded, you should receive an overflow error. One example is the G(n,p) graph generator, which used to be limited to around 100 million vertices until version 0.10.13, at which point it was rewritten to support larger graphs.

A nice feature of igraph is that we put a lot of effort into including checks to make sure that the various algorithms behave well with large graphs. It shouldn’t crash or start giving incorrect/invalid results if you pass large parameter values or large graphs. It will instead issue a clear error message. Taking the G(n,p) graph sampler as an example, the algorithm it used before could be run for more than 100 million vertices, but above that limit it would no longer sample uniformly due to the finite precision of floating point values. igraph actually considers this and protects the user from getting bad results—not all libraries do this.