그래프는 정점과 간선으로 이루어진 자료구조
G = (V, E)
인접 행렬
0,1
을 통해 표현(i,j)
위치에 간선의 유무를 나타내며, i
에서j
방향의 간선이 존재하면 1
, 없으면 0
표현0
표현 장점
단점
class GraphAdjMatrix:
def __init__(self, vertices):
self.vertices = vertices
self.adj_matrix = [[0] * vertices for _ in range(vertices)]
def add_edge(self, src, dest):
self.adj_matrix[src][dest] = 1
self.adj_matrix[dest][src] = 1
def remove_edge(self, src, dest):
self.adj_matrix[src][dest] = 0
self.adj_matrix[dest][src] = 0
def is_edge(self, src, dest):
return self.adj_matrix[src][dest] != 0
class GraphAdjList:
def __init__(self, vertices):
self.vertices = vertices
self.adj_list = [[] for _ in range(vertices)]
def add_edge(self, src, dest):
self.adj_list[src].append(dest)
self.adj_list[dest].append(src)
def remove_edge(self, src, dest):
self.adj_list[src].remove(dest)
self.adj_list[dest].remove(dest)
def is_edge(self, src, dest):
return dest in self.adj_list[src]