Skip to content

Commit

Permalink
chore: Update vendored sources to igraph/igraph@31c4e6f
Browse files Browse the repository at this point in the history
  • Loading branch information
krlmlr committed Oct 17, 2024
1 parent 391dad2 commit c0fcec7
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 29 deletions.
33 changes: 19 additions & 14 deletions src/vendor/cigraph/src/centrality/centralization.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -671,20 +671,25 @@ igraph_error_t igraph_centralization_eigenvector_centrality(
* arguments are considered.
*
* </para><para>
* 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.
*
* </para><para>
* 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.
Expand Down
9 changes: 5 additions & 4 deletions src/vendor/cigraph/src/centrality/eigenvector.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
* </para><para>
* 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.
Expand Down
18 changes: 9 additions & 9 deletions src/vendor/cigraph/src/paths/distances.c
Original file line number Diff line number Diff line change
Expand Up @@ -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().
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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().
Expand Down Expand Up @@ -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];

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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()
Expand Down
4 changes: 2 additions & 2 deletions src/vendor/igraph_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit c0fcec7

Please sign in to comment.