f_
frhyme.code
•python-libs•⏱ 약 2분 소요

NetworkX: unary operator - complement and reverse

2-line summary

  • graph G의 complement GC는 “GC+G = complemet graph”라고 생각하면 됨.
  • Directed graph G의 reverse는 방향성을 반대로 하는 것을 말함((u, v) ==> (v, u))

complement of G

  • graph G의 complement는 현재 존재하는 모든 edge를 없애고, 존재하지 않는 edge를 모두 생성하여 만들어지는 graph G를 말합니다.
  • 즉, 동일한 크기의 complete graph로부터 graph G를 뺀, graph를 말하죠.
  • 아래의 코드를 통해, 간단하게 처리하였습니다.
import networkx as nx

def is_exact_same_graph(G1, G2):
    # G1, G2의 node와 edge가 정확하게 같은지를 체크하는 함수.
    g1_nodes = set(G1)
    g2_nodes = set(G2)
    if g1_nodes==g2_nodes:
        g1_diff_g2_edges = nx.difference(G1, G2).edges()
        g2_diff_g1_edges = nx.difference(G2, G1).edges()
        if len(g1_diff_g2_edges) == 0 and len(g2_diff_g1_edges) == 0:
            return True
        else:
            return False
    else:
        return False

n = 20
CompleteG = nx.complete_graph(n=n)

G = nx.wheel_graph(n=n)

# CompleteG에서 G를 뺀 것과,
# nx.complement(G)는 같음.
G1 = nx.difference(CompleteG, G)
G2 = nx.complement(G)

assert is_exact_same_graph(G1, G2)

reverse of G

  • graph G에 대해서 reverse를 취한다는 것은 방향성을 반대로 변경한다는 말이 되겠죠. 즉, Digraph에 대해서만 말이 됩니다.
  • 코드로 보여줄까 했는데, 너무 간단해서 그냥 넘어가기로 합니다.

reference

GitHub에서 이 글의 마크다운 원본 보기 & 수정 제안src/content/posts/2020-02-22-nx_unaryoperator

💡RELATED ARTICLES · 함께 읽으면 좋은 연관 포스트

글 주소가 클립보드에 복사되었습니다.