igraph_write_graph_pajek()
: the function now always uses the platform-native line endings (CRLF on Windows, LF on Unix and macOS). Earlier versions tried to enforce Windows line endings, but this was error-prone, and since all recent versions of Pajek support both line endings, enforcing Windows line endings is not necessary any more.
- Fixed several compilation issues with MINGW32/64 (PR #1554)
igraph_layout_davidson_harel()
was not interruptible; now it is.- Added a missing memory cleanup call in
igraph_i_cattribute_combine_vertices()
. - Fixed a few memory leaks in test cases.
igraph_i_cattribute_combine_vertices()
: fixed invalid cleanup code that eventually filled up the "finally" stack when combining vertices with attributes extensively.igraph_hrg_sample()
: fixed incorrect function prototypeigraph_is_posinf()
andigraph_is_neginf()
: fixed incorrect result on platforms where the sign of the result ofisinf()
is not indicative of the sign of the input.- Fixed building with vendored LAPACK and external BLAS
- Fixed building with XCode 12.2 on macOS
- Documentation improvements
- General code cleanup to reduce the number of compiler warnings
igraph_vector_binsearch_slice()
performs binary search on a sorted slice of a vector.
igraph_eigenvector_centrality()
assumes the adjacency matrix of undirected graphs to have twice the number of self-loops for each vertex on the diagonal. This makes the results consistent between an undirected graph and its directed equivalent when each edge is replaced by a mutual edge pair.
igraph_isomorphic()
now verifies that the input graphs have no multi-edges (PR #1464).igraph_difference()
was creating superfluous self loops (#597).igraph_count_multiple()
was giving incorrect results for self-loops in directed graph (PR #1399).igraph_betweenness_estimate()
: fixed incorrect results with finite cutoff (PR #1392).igraph_eigen_matrix_symmetric()
: fixed incorrect matrix multiplication (PR #1379).- Corrected several issues that could arise during an error condition (PRs #1405, #1406, #1438).
igraph_realize_degree_sequence()
did not correctly detect some non-graphical inputs.igraph_is_graphical_degree_sequence()
: fixed incorrect results in undirected case (PR #1441).igraph_community_leiden()
: fixed incorrect result when self-loops are present (PR #1476).igraph_eigenvector_centrality()
: fixed incorrect value for isolated vertices in weighted graphs.igraph_eigenvector_centrality()
: corrected the handling of self-loops.igraph_layout_reingold_tilford()
: fixed an issue where branches of the tree would sometimes overlap.
igraph_degree_sequence_game()
: improved performance withIGRAPH_DEGSEQ_SIMPLE_NO_MULTIPLE_UNIFORM
method.- Improved the robustness of the test suite.
- Documentation improvements.
- Improved error and warning messages.
- Improved compatibility with recent versions of Microsoft Visual C.
- Improved argument checking:
igraph_all_st_mincuts()
andigraph_sir()
- Improved interruptibility:
igraph_sir()
igraph_community_leiden()
: fixed crash when interrupting- The tests are now more robust. Some incorrect test failures were fixed when running on i386 architecture, or when using different versions of external dependencies.
- Improved error messages from
igraph_sir()
. - Improved compatibility with more recent versions of Microsoft Visual C.
- Improved interruptability:
igraph_degree_sequence_game()
- Improved argument checking:
igraph_forest_fire_game()
- Updated the plfit library to version 0.8.1
igraph_community_edge_betweenness()
: fix for graphs with no edges (PR #1312)igraph_bridges()
now handles multigraphs correctly (PR #1335)igraph_avg_nearest_neighbor_degree()
: fix for memory leak in weighted case (PR #1339)igraph_community_leiden()
: fix crash bug (PR #1357)
- Included
ACKOWLEDGEMENTS.md
- Documentation improvements
-
Trees
igraph_to_prufer()
andigraph_from_prufer()
convert labelled trees to/from Prüfer sequencesigraph_tree_game()
samples uniformly from the set of labelled treesigraph_is_tree()
checks if a graph is a treeigraph_random_spanning_tree()
picks a spanning tree of a graph uniformly at randomigraph_random_edge_walk()
returns the indices of edges traversed by a random walk; useful for multigraphs
-
Community detection
igraph_community_fluid_communities()
detects communities based on interacting fluidsigraph_community_leiden()
detects communities with the Leiden method
-
Cliques
igraph_maximal_cliques_hist()
counts maximal cliques of each sizeigraph_maximal_cliques_callback()
calls a function for each maximal cliqueigraph_clique_size_hist()
counts cliques of each sizeigraph_cliques_callback()
calls a function for each cliqueigraph_weighted_cliques()
finds weighted cliques in graphs with integer vertex weightsigraph_weighted_clique_number()
computes the weighted clique numberigraph_largest_weighted_cliques()
finds the largest weighted cliques
-
Graph generators
igraph_hsbm_game()
for a hierarchical stochastic block modeligraph_hsbm_list_game()
for a more general hierarchical stochastic block modeligraph_correlated_game()
generates pairs of correlated random graphs by perturbing existing adjacency matrixigraph_correlated_pair_game()
generates pairs of correlated random graphsigraph_tree_game()
samples uniformly from the set of labelled treesigraph_dot_product_game()
generates a random dot product graphigraph_realize_degree_sequence()
creates a single graph with a given degree sequence (Havel-Hakimi algorithm)
-
Graph embeddings
igraph_adjacency_spectral_embedding()
andigraph_laplacian_spectral_embedding()
provide graph embedddingsigraph_dim_select()
provides dimensionality selection for singular values using profile likelihood
-
Isomorphism
igraph_automorphism_group()
computes the generators of the automorphism group of a simple graphigraph_simplify_and_colorize()
encodes edge and self-loop multiplicities into edge and vertex colors; use in conjunction with VF2 to test isomorphism of non-simple graphs
-
Other
igraph_bridges()
finds edges whose removal would disconnect a graphigraph_vertex_coloring_greedy()
computes a vertex coloring using a greedy algorithmigraph_rewire_directed_edges()
randomly rewires only the starting points or only the endpoints of directed edges- Various
igraph_local_scan_*
functions provide local counts and statistics of neighborhoods igraph_sample_sphere_surface()
samples points uniformly from the surface of a sphereigraph_sample_sphere_volume()
samples points uniformly from the volume of a sphereigraph_sample_dirichlet()
samples points from a Dirichlet distributionigraph_malloc()
, to be paired with the existingigraph_free()
igraph_degree_sequence_game()
: new method added for uniform sampling:IGRAPH_DEGSEQ_SIMPLE_NO_MULTIPLE_UNIFORM
igraph_modularity_matrix()
: removedmembership
argument (PR #1194)igraph_avg_nearest_neighbor_degree()
: addedmode
andneighbor_degree_mode
arguments (PR #1214).igraph_get_all_simple_paths()
: addedcutoff
argument (PR #1232).igraph_unfold_tree()
: no longer preserves edge ordering of original graphigraph_decompose()
: support strongly connected componentsigraph_isomorphic_bliss()
,igraph_canonical_permutation()
,igraph_automorphisms()
: added additional arguments to support vertex colored graphs (PR #873)igraph_extended_chordal_ring
: added argument to support direction (PR #1096), and fixed issue #1093.
- The Bliss isomorphism library was updated to version 0.73. This version adds support for vertex colored and directed graphs.
- igraph now uses the high-performance Cliquer library to find (non-maximal) cliques
- Provide proper support for Windows, using
__declspec(dllexport)
and__declspec(dllimport)
forDLL
s and static usage by using#define IGRAPH_STATIC 1
. - Provided integer versions of
dqueue
andstack
data types.