2016-04-18 5 views
2

Я хотел бы получить общих соседей из двух вершин на графическом инструменте.общий сосед двух вершин на графическом инструменте

В соответствии с document, существует несколько методов сходства, и все они используют количество общих соседей. Поэтому, я думаю, это должно быть легко получить общих соседей. Но я не мог найти, как это сделать.

ответ

4

Из подобия Соренсен-Dice этого легко получается:

>>> g = collection.data["karate"] 
>>> u, v = g.vertex(0), g.vertex(1) 
>>> n = vertex_similarity(g, "dice", [(u, v)], self_loops=False) * (u.out_degree() + v.out_degree())/2 
>>> print(n) 
7 
1

В случае, если кто-то хочет, чтобы выяснить фактические общие соседи также, после будет работать:

In [2]: g = gt.collection.data["karate"] 

In [11]: u, v = g.vertex(32), g.vertex(33) 

In [16]: set(u.out_neighbours()) & set(v.out_neighbours()) 
Out[16]: 
{<Vertex object with index '8' at 0x7f2b62ae82a0>, 
<Vertex object with index '14' at 0x7f2b62ae8318>, 
<Vertex object with index '15' at 0x7f2b62ae8390>, 
<Vertex object with index '18' at 0x7f2b62ae8408>, 
<Vertex object with index '20' at 0x7f2b62ae8480>, 
<Vertex object with index '22' at 0x7f2b62ae84f8>, 
<Vertex object with index '23' at 0x7f2b62ae8570>, 
<Vertex object with index '29' at 0x7f2b62ae85e8>, 
<Vertex object with index '30' at 0x7f2b62ae8660>, 
<Vertex object with index '31' at 0x7f2b62ae86d8>} 

Длина этого множества дает вам общее количество общих соседей.

 Смежные вопросы

  • Нет связанных вопросов^_^