Найти диаметр и среднюю длину кратчайшего пути гигантского компонента графа с помощью igraph python - PullRequest
0 голосов
/ 12 марта 2020

Я хочу вычислить среднюю длину кратчайшего пути и диаметр гигантского компонента графа. Файлы представлены в формате .mat. Есть ли встроенная функция для этого?

data = loadmat("filename.mat")
data=coo_matrix(data.get('A'))
graph= igraph.Graph(zip(data.row.tolist(), data.col.tolist()))

1 Ответ

0 голосов
/ 13 марта 2020

Диаметр гигантских компонентов

Согласно этому ответу , мы можем найти гигантский компонент со следующей функцией следующим образом.

def giant_component(graph):
    """Compute giant component.

    Returns:
        The giant component of `graph` as an `igraph.Graph`.

    """
    vc = graph.components()
    vc_sizes = vc.sizes()
    return vc.subgraph(vc_sizes.index(max(vc_sizes)))

Его диаметр может быть найден как giant_component(graph).diameter().

Средний кратчайший путь

Функция Graph.shortest_paths вернет матрицу, содержащую все длины кратчайшего пути, из которых вы можете затем вычислить среднее ,

np.mean(graph.shortest_paths())
...