R 中循环的顺序

问题描述 投票:0回答:1

假设我有一个图形对象,它形成 N 个不相连的子图,其中 N 个子图分别形成一个欧拉循环。如何获取每个子图的顶点的序列顺序(注意每个子图都会有很多旋转,但每个子图我只需要一个序列顺序)。假设我的顶点被标记为 1:20。是否有使用 igraph 或类似函数调用来执行此操作?我搜索了文档,但不知道如何使用 igraph 包返回子图顶点的序列顺序?

r sequence igraph
1个回答
0
投票

在 igraph 库中,您可以使用 igraph_eulerian_cycle() 函数在图中查找欧拉循环。该函数将返回形成欧拉循环的顶点序列。如果您的图由不相连的子图组成,每个子图形成一个欧拉循环,您可以将此函数单独应用于每个子图。

以下是如何在 igraph 中执行此操作的高级描述:

识别图形对象中断开连接的子图。 对于每个子图,使用 igraph_is_eulerian() 函数检查是否存在欧拉循环。 如果存在欧拉循环,则使用 igraph_eulerian_cycle() 函数获取顶点的序列顺序。 igraph_eulerian_cycle() 函数使用 Hierholzer 算法查找欧拉循环并返回循环中的顶点和边的序列。函数签名如下:

igraph_error_t igraph_eulerian_cycle(const igraph_t *graph, igraph_vector_int_t *edge_res, igraph_vector_int_t *vertex_res);

vertex_res 参数将包含按照欧拉循环中访问顶点的顺序排列的顶点索引。然后,您可以将这些索引映射到顶点标签 (1:20),以获得每个子图 1 的顶点的序列顺序。

请注意,您需要单独处理每个子图,igraph 库也提供了处理子图的函数。

© www.soinside.com 2019 - 2024. All rights reserved.