igraph 0.10.17
This is the final release of igraph in the 0.x series. igraph 1.0 will follow soon with a commitment to a stable API.
Added
igraph_layout_align()attempts to align a graph layout with the coordinate axes in a visually pleasing manner (experimental function).igraph_product()supports the lexicographic, strong and modular graph products. Thanks to Gulshan Kumar @gulshan-123 for contributing this functionality in #2772 and #2793!igraph_rooted_product()computes the rooted graph product (experimental function). Thanks to Gulshan Kumar @gulshan-123 for contributing this functionality in #2793!igraph_mycielskian()(experimental function) andigraph_mycielski_graph()compute a Mycielski transformation of a graph, and a Mycielski graph, respectively. Thanks to Gulshan Kumar @gulshan-123 for contributing this functionality in #2741!igraph_path_graph()is a convenience wrapper forigraph_ring()withcircular=false.igraph_cycle_graph()is a convenience wrapper forigraph_ring()withcircular=true.igraph_site_percolation(),igraph_bond_percolation()andigraph_edgelist_percolation()compute the evolution of the size of the giant component of a graph when vertices (site percolation) or edges (bond percolation) are added one by one in a given order (experimental functions). Thanks to Arnór Friðriksson @Zepeacedust for implementing this in #2778!igraph_invert_permutation()inverts a permutation stored in an integer vector.igraph_is_vertex_coloring()andigraph_is_edge_coloring()check if a vertex or edge coloring is valid, i.e. whether adjacent vertices/edges always have distinct colors (experimental functions). Thanks to Sarah Rashidi @its-serah for contributing this in #2807!igraph_is_bipartite_coloring()checks if a bipartite type assignment is valid, i.e. whether adjacent vertices always have different types (experimental function). Thanks to Sarah Rashidi @its-serah for contributing this in #2807!igraph_rich_club_sequence()calculates how the density of a graph changes as vertices are removed (experimental function). Thanks to Zara Zong @minifinity for contributing this in #2740!
Changed
igraph_bipartite_game_gnp()can now generate graphs with more than a hundred million vertices. Thanks to Dev Lohani @devlohani99 for implementing this in #2767!igraph_reindex_membership()now supports arbitrary cluster indices. Previously, it would error when indices are not within0 .. n-1wherenis the membership vector length.igraph_modularity()now supports arbitrary cluster indices. However, ensuring that cluster indices are within the range0 .. n-1, wherenis the vertex count, allows for better performance.
Fixed
- Fix failure in SIR simulation due to roundoff errors creating slightly negative rates.
- Fix infinite coordinates for certain path graphs with
igraph_layout_kamada_kawai_3d(). igraph_community_leiden()did not iterate until the partition ceased to change whenn_iterations < 0. Thanks to Lucas Lopes Felipe @lucaslopes for fixing this in #2799!- The widest path functions
igraph_widest_path_widths_floyd_warshall(),igraph_widest_path_widths_dijkstra(),igraph_get_widest_paths(), andigraph_get_widest_path()incorrectly ignored edges with positive infinite width. Now they ignore edges with negative infinite width. igraph_cliques_callback()would sometimes fail to respect a request to stop (i.e. returningIGRAPH_STOP) from the callback. This is now corrected.igraph_hypercube()now validates the hypercube dimension and prevents negative values.igraph_sparsemat_view()checks for out-of-memory conditions.- Fix assertion error when stopping search early in
igraph_simple_cycles_callback()by returningIGRAPH_STOPfrom the callback.
Deprecated
igraph_sparsemat()andigraph_weighted_sparsemat()are now deprecated; their functionality is duplicated byigraph_get_adjacency_sparse(). They will be removed in version 1.0.igraph_convex_hull()is deprecated in favour ofigraph_convex_hull_2d()and scheduled for removal in 1.0.
Other
- Documentation improvements, including a new glossary.
- Simple cycle search (
igraph_simple_cycles()andigraph_simple_cycles_callback()) is sped up by skipping cycle search from some redundant start vertices. Thanks to Tim Bernhard @GenieTim for contributing this improvement in #2714! igraph_realize_degree_sequence()is significantly sped up for simple undirected graphs, and now has near-linear complexity for this case. Thanks to Zara Zong @minifinity for implementing this in #2786!