# News

About igraph releases and other things

## Release Notes

This is another bug fix release, with a couple of new features. Here are the important ones. See at the end for the complete list of changes.

## Bipartite graphs

Bipartite graphs have two kinds of vertices and edges are only allowed to connect opposite kinds. Think of the Hollywood movie graph with actors and movies. igraph 0.5.2 now contains some functions to deal with these kind of networks.

## The label propagation community finding algorithm

This is a simple and intuitive community finding algorithm, published by Raghavan et al. in 2007 (see docs for full citation). It works by assigning labels to the vertices and then updating the labels based on majority voting among the neighbors.

## 3D version of the DrL layout generator

The DrL layout generator was extended to generate three dimensional layouts. Albeit slower than the regular 2D version, this is a nice addition for those who do visualization in 3D.

## Johnson’s shortest path algorithm

Johnson’s algorithm is a good choice for finding all shortest paths in a network that has some negative edge weights, but no negative cycles.

## Average nearest neighbor degree

A new function was added to calculate the average degree of the neighbors of all or some vertices. It supports the edge weighted version of the measure as well.

## Several bugs and memory leaks corrected

Apart from the bug fixes, some functions were rewritten to speed them up.

## New in the Python interface

• Speeded up betweenness estimation
• Johnson’s shortest paths algorithm added (selected automatically by `Graph.shortest_paths()` if needed)
• Weighted degree (also called strength) calculation, `Graph.strength()`
• Some new methods to support bipartite graphs: `Graph.Bipartite()`, `Graph.is_bipartite()`, `Graph.get_indicence()`, `Graph.Incidence()`, `Graph.bipartite_projection()`, `Graph.bipartite_projection_size()`
• Added the label propagation community detection algorithm by Raghavan et al., `Graph.community_label_propagation()`
• Added a function to “unfold” a tree, `Graph.unfold_tree()`
• `setup.py` script improvements
• Graph plotting now supports `edge_arrow_size` and `edge_arrow_width`
• Added `Graph.Formula` to create small graphs from a simple notation
• `VertexSeq` and `EdgeSeq` objects can now be indexed by slices

## Bugs corrected in the C layer

• Fixed a bug in `igraph_isomorphic_function_vf2()`, affecting all VF2 graph isomorphism functions
• VL graph generator in `igraph_degree_sequence_game()` checks now that the sum of the degrees is even
• Many small corrections to make igraph compile with Microsoft Visual Studio 2003, 2005 and 2008
• Many fixes for supporting various compilers, e.g. GCC 4.4 and Sun’s C compiler
• Fix a bug when a graph was imported from LGL and exported to NCOL format (#289596)
• Fixed memory leaks in `igraph_automorphisms()`, `igraph_shortest_paths_bellman_ford()`, `igraph_independent_vertex_sets()`
• The GraphML reader checks the name of the attributes to avoid adding a duplicate `id` attribute
• It is possible to change the `ncv` ARPACK parameter for `igraph_community_leading_eigenvector()`
• Fixed a bug in `igraph_path_length_hist()`, `unconnected` was wrong for unconnected and undirected graphs.