diff --git a/src/vendor/cigraph/src/centrality/centralization.c b/src/vendor/cigraph/src/centrality/centralization.c
index dc596c0c33..c945f3df33 100644
--- a/src/vendor/cigraph/src/centrality/centralization.c
+++ b/src/vendor/cigraph/src/centrality/centralization.c
@@ -558,12 +558,12 @@ igraph_error_t igraph_centralization_closeness_tmax(const igraph_t *graph,
* a natural scale. As with any eigenvector, their interpretation is
* invariant to scaling by a constant factor. However, due to how
* graph-level \em centralization is defined, its value depends on the
- * specific scale/normalization used for vertex-level scores. This is
- * true even when the graph-level centralization itself is normalized
- * by its theoretical maximum value. This function makes the specific
- * choice of scaling vertex-level centrality scores by their maximum
- * (i.e. it uses the ∞-norm). Other normalization choices, such as the
- * 1-norm or 2-norm are not currently implemented.
+ * specific scale/normalization used for vertex-level scores. Which of
+ * two graphs will have a higher eigenvector \em centralization depends
+ * on the choice of normalization for centralities. This function makes
+ * the specific choice of scaling vertex-level centrality scores by their
+ * maximum (i.e. it uses the ∞-norm). Other normalization choices, such
+ * as the 1-norm or 2-norm are not currently implemented.
*
* \param graph The input graph.
* \param vector A vector if you need the node-level eigenvector
@@ -671,20 +671,25 @@ igraph_error_t igraph_centralization_eigenvector_centrality(
* arguments are considered.
*
*
- * The most centralized directed structure is the in-star. The most
- * centralized undirected structure is the graph with a single edge.
+ * The most centralized directed structure is assumed to bethe in-star.
+ * The most centralized undirected structure is assumed to be the graph
+ * with a single edge. igraph continues to implement these choices for
+ * historical reason. Keep in mind that neither of these two structures
+ * is connected, which makes their use debatable in the context of
+ * eigenvector centrality calculations. Eigenvector centrality is not
+ * uniquely defined for disconnected structures.
*
*
* Note that vertex-level eigenvector centrality scores do not have
* a natural scale. As with any eigenvector, their interpretation is
* invariant to scaling by a constant factor. However, due to how
* graph-level \em centralization is defined, its value depends on the
- * specific scale/normalization used for vertex-level scores. This is
- * true even when the graph-level centralization itself is normalized
- * by its theoretical maximum value. This function makes the specific
- * choice of scaling vertex-level centrality scores by their maximum
- * (i.e. it uses the ∞-norm). Other normalization choices, such as the
- * 1-norm or 2-norm are not currently implemented.
+ * specific scale/normalization used for vertex-level scores. Moreover,
+ * which of two graphs will have a higher eigenvector \em centralization
+ * also depends on the choice of normalization for centralities. This
+ * function makes the specific choice of scaling vertex-level centrality
+ * scores by their maximum (i.e. it uses the ∞-norm). Other normalization
+ * choices, such as the 1-norm or 2-norm are not currently implemented.
*
* \param graph A graph object or a null pointer, see the description
* above.
diff --git a/src/vendor/cigraph/src/centrality/eigenvector.c b/src/vendor/cigraph/src/centrality/eigenvector.c
index 9dc60b0c69..e9d017e261 100644
--- a/src/vendor/cigraph/src/centrality/eigenvector.c
+++ b/src/vendor/cigraph/src/centrality/eigenvector.c
@@ -508,16 +508,17 @@ static igraph_error_t igraph_i_eigenvector_centrality_directed(const igraph_t *g
* Eigenvector centrality is meaningful only for (strongly) connected graphs.
* Undirected graphs that are not connected should be decomposed into connected
* components, and the eigenvector centrality calculated for each separately.
+ * The scores between components will not be comparable.
* This function does not verify that the graph is connected. If it is not,
* in the undirected case the scores of all but one component will be zeros.
*
*
* Also note that the adjacency matrix of a directed acyclic graph or the
* adjacency matrix of an empty graph does not possess positive eigenvalues,
- * therefore the eigenvector centrality is not defined for these graphs.
- * igraph will return an eigenvalue of zero in such cases. The eigenvector
- * centralities will all be equal for an empty graph and will all be zeros
- * for a directed acyclic graph. Such pathological cases can be detected
+ * therefore the eigenvector centrality is not meaningful for these graphs.
+ * igraph will return an eigenvalue of zero in such cases. The returned
+ * eigenvector centralities will all be equal for vertices with zero out-degree,
+ * and zeros for other vertices. Such pathological cases can be detected
* by asking igraph to calculate the eigenvalue as well (using the \p value
* parameter, see below) and checking whether the eigenvalue is very close
* to zero.
diff --git a/src/vendor/cigraph/src/paths/distances.c b/src/vendor/cigraph/src/paths/distances.c
index 180a74b9bd..3b86fe87ea 100644
--- a/src/vendor/cigraph/src/paths/distances.c
+++ b/src/vendor/cigraph/src/paths/distances.c
@@ -249,8 +249,8 @@ static igraph_error_t igraph_i_eccentricity_dijkstra(
* is ignored for undirected graphs.
* \return Error code.
*
- * Time complexity: O(v*(|V|+|E|)), where |V| is the number of
- * vertices, |E| is the number of edges and v is the number of
+ * Time complexity: O(|S| (|V|+|E|)), where |V| is the number of
+ * vertices, |E| is the number of edges and |S| is the number of
* vertices for which eccentricity is calculated.
*
* \sa \ref igraph_radius().
@@ -269,7 +269,7 @@ igraph_error_t igraph_eccentricity(const igraph_t *graph,
IGRAPH_FINALLY(igraph_lazy_adjlist_destroy, &adjlist);
IGRAPH_CHECK(igraph_i_eccentricity(graph, res, vids, &adjlist,
- /*vid_ecc*/ NULL, /*unconn*/ 1));
+ /*vid_ecc*/ NULL, /*unconn*/ true));
igraph_lazy_adjlist_destroy(&adjlist);
IGRAPH_FINALLY_CLEAN(1);
return IGRAPH_SUCCESS;
@@ -349,7 +349,7 @@ igraph_error_t igraph_eccentricity_dijkstra(const igraph_t *graph,
for (IGRAPH_VIT_RESET(vit);
!IGRAPH_VIT_END(vit);
IGRAPH_VIT_NEXT(vit)) {
- IGRAPH_CHECK(igraph_i_eccentricity_dijkstra(graph, weights, &ecc, IGRAPH_VIT_GET(vit), /*vid_ecc*/ &dump, /*unconn*/ 1, &inclist));
+ IGRAPH_CHECK(igraph_i_eccentricity_dijkstra(graph, weights, &ecc, IGRAPH_VIT_GET(vit), /*vid_ecc*/ &dump, /*unconn*/ true, &inclist));
IGRAPH_CHECK(igraph_vector_push_back(res, ecc));
}
igraph_lazy_inclist_destroy(&inclist);
@@ -496,7 +496,7 @@ igraph_error_t igraph_radius_dijkstra(const igraph_t *graph, const igraph_vector
* will be returned, otherwise \c IGRAPH_INFINITY is returned.
* \return Error code.
*
- * Time complexity: O(|V||E|)), where |V| is the number of
+ * Time complexity: O(|V| |E|)), where |V| is the number of
* vertices and |E| is the number of edges.
*
* \sa \ref igraph_eccentricity(), \ref igraph_diameter().
@@ -564,7 +564,7 @@ igraph_error_t igraph_pseudo_diameter(const igraph_t *graph,
ito = vid_ecc;
IGRAPH_CHECK(igraph_i_eccentricity(graph, &ecc_vec, igraph_vss_1(vid_ecc),
- &adjlist, &vid_ecc, 1));
+ &adjlist, &vid_ecc, true));
ecc_v = VECTOR(ecc_vec)[0];
@@ -626,9 +626,9 @@ igraph_error_t igraph_pseudo_diameter(const igraph_t *graph,
* same distance based on their degree. In te directed case, should we
* use in-, out- or total degree? */
IGRAPH_CHECK(igraph_i_eccentricity(graph, &ecc_out, igraph_vss_1(vid_ecc),
- &adjlist_out, &vid_ecc_out, 1));
+ &adjlist_out, &vid_ecc_out, true));
IGRAPH_CHECK(igraph_i_eccentricity(graph, &ecc_in, igraph_vss_1(vid_ecc),
- &adjlist_in, &vid_ecc_in, 1));
+ &adjlist_in, &vid_ecc_in, true));
if (VECTOR(ecc_out)[0] > VECTOR(ecc_in)[0]) {
vid_ecc = vid_ecc_out;
@@ -730,7 +730,7 @@ igraph_error_t igraph_pseudo_diameter(const igraph_t *graph,
* returned.
* \return Error code.
*
- * Time complexity: O(|V||E|*log|E|), |V| is the number of vertices,
+ * Time complexity: O(|V| |E| log|E|), |V| is the number of vertices,
* |E| is the number of edges.
*
* \sa \ref igraph_diameter_dijkstra()
diff --git a/src/vendor/igraph_version.h b/src/vendor/igraph_version.h
index 2ca3a2b2ae..e2b8f4efd0 100644
--- a/src/vendor/igraph_version.h
+++ b/src/vendor/igraph_version.h
@@ -28,11 +28,11 @@
__BEGIN_DECLS
-#define IGRAPH_VERSION "0.10.13-124-gf8d4760f4"
+#define IGRAPH_VERSION "0.10.13-126-g31c4e6ffc"
#define IGRAPH_VERSION_MAJOR 0
#define IGRAPH_VERSION_MINOR 10
#define IGRAPH_VERSION_PATCH 13
-#define IGRAPH_VERSION_PRERELEASE "124-gf8d4760f4"
+#define IGRAPH_VERSION_PRERELEASE "126-g31c4e6ffc"
IGRAPH_EXPORT void igraph_version(const char **version_string,
int *major,