About igraph releases and other things
There are a lot of improvements and corrections in this version. We would like to thank all the people who sent comments, bug reports, patches, or just questions. Without their contribution igraph would be definitely much less and worse than it is now. Please keep sending your comments and ideas!
Here is a list of major changes, with links to the relevant sections of the documentation. See below for the complete list of changes.
We took some step towards turning igraph to an efficient platform for implementing graph algorithms. In particular, we have a set of utility types that support general scientific computing and working with graphs: vectors, matrices, stacks, queues, heaps, adjacency lists, etc.
igraph includes the BLISS graph isomorphism algorithm and implementation now. This and the improved VF2 implementation, which can now calculate subgraph isomorphism, make igraph support the bleeding edge of graph isomorphism algorithms. Many thanks to the authors of BLISS. See the details in the Reference Manual.
ARPACK is a library for solving large scale sparse eigenvalue problems. In igraph it is very handy, as many centrality problems are in fact eigenvalue problems: Kleinberg’s hub and authority scores, PageRank, the leading eigenvector community detection algorithm are some examples. Many thanks to the authors of ARPACK and James Fowler, who suggested to include it in igraph.
See the details in the Reference Manual.
Some classic graphs can be created by giving their name. This is
very handy if one needs a test graph quickly. See
igraph_famous
.
(The idea is based on Combinatorica, a Mathematica extension.)
Many functions were updated to handle weighted graphs: fast greedy community detection, Page Rank, modularity calculation, the Fruchterman-Reingold layout algorithm.
Some functions were added and improved to handle non-simple graphs
(i.e. graphs with loop and/or multiple edges) better: testing that a
graph is simple (
igraph_is_simple
),
testing for multiple edges (
igraph_is_multiple
), and counting the multiplicity of
edges (
igraph_count_multiple
).
This is a nice force-based layout algorithm. See the documentation of
details (
igraph_layout_graphopt
).
igraph can now write graphs to files in the DOT format, used by
GraphViz. See documentation:
igraph_write_graph_dot
.
Classic social network analysis tools for classifying the dyads
(
igraph_dyad_census
), and triads
(
igraph_triad_census
) of a network.
igraph is now able to calculate biconnected components
(
igraph_biconnected_components
), and articulation points
(
igraph_articulation_points
).
These measures can be quickly estimated by specifying an upper bound
for path lengths to be considered. This is useful for larger graphs,
for which the calculation takes a long time. See documentation for
closeness (
igraph_closeness_estimate
),
betweenness (
igraph_betweenness_estimate
), and edge betweenness
(
igraph_edge_betweenness_estimate
).
Two vertex similarity measures based on the number of common neighbors
are introduced, the Jaccard
(
igraph_similarity_jaccard
), and the Dice
(
igraph_similarity_dice
).
An experimental C attribute interface was added. This allows using graph/vertex/edge attributes when programming from C. See more here.
igraph_canonical_permutation
, igraph_isomorphic_bliss
igraph_pagerank
,
igraph_community_leading_eigenvector_*
. New functions based on
ARPACK: igraph_eigenvector_centrality
, igraph_hub_score
,
igraph_authority_score
, igraph_arpack_rssolve
, igraph_arpack_rnsolve
Experimental C attribute interface added. I.e. it is possible to use graph/vertex/edge attributes from C code now.
igraph_count_multiple
addedigraph_is_loop
and igraph_is_multiple
“return” boolean vectorsigraph_layout_graphopt
igraph_famous
igraph_lcf
, igraph_lcf_vector
igraph_add_edge
adds a single edge to the graphigraph_is_simple
addedigraph_full_citation
to create full citation networksigraph_path_length_hist
, create a histogram of path lengthsigraph_adjlist_t
,
igraph_adjedgelist_t
)igraph_le_community_to_membership
)igraph_permute_vertices
addedigraph_read_graph_*
functions can handle all possible line
terminators now (\r, \n, \r\n, \n\r)cut
vector was used