본문 바로가기

iGraph

igraph - 1

그래프에서 vertex, edge 정보 삭제 및 추가

 

6개의 vertex와 0 -1, 0 - 5의 edge를 가진 그래프 생성

import igraph as ig

node=5
edges=[[0, 1], [0, 5]]

g=ig.Graph(node,edges)

생성된 그래프

vertex 추가

위 그래프에서 2개의 vertex를 추가하고 싶다면

g.add_vertices(2) #추가하고 싶은 vertex의 개수

vertex 2개를 추가한 그래프

기존 6개의 vertex에서 2개를 추가하여 8개의 vertex가 만들어졌습니다. index는 기존 그래프를 이어받아 생성됩니다. 

 

edge 추가

g.add_edges([[2,4],[3,6]]) # 1-3과 6-7을 잇는 edge 생성

2개의 edge 추가

 

0-1, 0-5에 이어 2-4, 3-6의 edge가 추가된 것을 확인할 수 있습니다.

 

참고로 그래프의 모양은 edge 추가, vertex 추가 후 조금씩 다른 것을 확인할 수 있는데, 그래프의 모양은 그래프의 정보가 같아도 항상 달라질 수 있습니다.

중요한 것은 그래프의 정보(edge 개수, vertex 개수, edge 정보)이지 그래프의 모양이 아닙니다.  

예시) 두 그래프의 모양은 달라도 그래프의 정보는 같은 것을 확인할 수 있습니다

 

vertex 삭제

g.delete_vertices(7) #삭제할 vertex의 index

index 7에 해당하는 vertex를 삭제한다면, vertex 하나가 사라진 것을 확인할 수 있습니다.

7번 vertex 삭제

 

7번 vertex는 edge가 없는 vertex 였기에 간단하게 삭제되었지만 edge 정보가 있는 vertex는?

g.delete_vertices(0) # index 0 vertex 삭제

index 0에 해당하는 vertex를 삭제한다면, vertex는 하나가 줄어든 것을 확인할 수 있지만 edge 정보가 달라졌습니다. 

0번 vertex 삭제

삭제하기 전의 그래프의 edge에는 0-1, 0-5가 있었지만 0을 삭제하면서 edge 정보도 자동으로 삭제되었습니다. 또한 0이 삭제되면서 vertex의 index 역시 달라진 것을 확인할 수 있습니다.

0이 삭제되면서 연결되어 있던 1과 5의 edge는 따라서 사라지게 되고 남겨진 vertex에 대해 0부터 새롭게 지정되었습니다.

 

 

즉, 특정 vertex를 삭제하면, 삭제하고 남겨진 vertex들의 index는 새롭게 지정되지만, edge 정보는

삭제되는 vertex index에 맞춰서 같이 삭제되는 것을 확인할 수 있습니다.  

 

 

만약 하나의 vertex가 아닌 다수의 vertex를 삭제할려면 parameter를 list 형태로 하시면 됩니다.

g.delete_vertices([0,1,5]) # vertex 0,1,5 삭제

 

edge 삭제

edge 정보는 추가한 것을 포함하여 0-1, 0-5, 2-4, 3-6으로 총 4개가 있습니다. 이는 순서대로 0번,1번,2번,3번으로 지정되어 있습니다.

즉 0-1은 0번, 0-5는 1번, 2-4는 2번, 3-6은 3번입니다.

 

이 정보는 get_eid()함수를 통해 확인할 수 있습니다.

print(g.get_eid(0,1)) # edge 0-1의 index(id)를 확인

#0이 출력

 

위 정보를 확인하여 edge를 삭제하는 함수 delete_edges()에 edge index를 넣어 삭제할 수 있습니다.

g.delete_edges(0) # edge 0-1을 삭제

edge 0-1을 삭제한 그래프

 

마찬가지로 여러개의 edge를 삭제할려면 parameter를 list 형태로 하시면 됩니다.

g.delete_edges([0,1]) # index 0,1을 삭제하는 것으로 0-1과 0-5 edge가 삭제됨

 

모든 edge 정보를 확인하고 싶다면 get_edgelist()를 사용

s=g.get_edgelist()
print(s) #모든 edge 정보를 확인

a=g.get_edgelist()[:2]
print(a) # 0-1과 0-5만 출력

'iGraph' 카테고리의 다른 글

igraph 그리기  (0) 2023.01.04
igraph - 2  (0) 2023.01.03
igraph(python) - 0  (1) 2023.01.01