그래프는 정점(Vertex) 과 그 정점을 연결하는 간선(Edge) 으로 구성됩니다. 이러한 정점과 간선의 집합으로 이루어진 자료구조를 그래프라고 합니다.
C에서는 주로 인접 리스트나 인접 행렬을 이용해서 그래프를 구현합니다. 구조체와 배열, 포인터를 사용하여 복잡하게 메모리를 관리해야 하며, 간선 추가나 삭제에 있어서도 직접 코드를 작성해야 합니다.
typedef struct {
int vertex;
struct Node* next;
} Node;
typedef struct {
Node* head;
} AdjList;
typedef struct {
int numVertices;
AdjList* array;
} Graph;
Python에서는 라이브러리를 활용하거나 리스트와 딕셔너리를 사용하여 쉽게 그래프를 표현할 수 있습니다. 특히 networkx
와 같은 라이브러리를 이용하면 고급 그래프 알고리즘을 쉽게 적용할 수 있습니다.
# 인접 리스트를 이용한 예
graph = {'A': ['B', 'C'], 'B': ['A', 'D'], 'C': ['A', 'E'], 'D': ['B'], 'E': ['C']}
C는 메모리 관리와 저수준의 작업이 필요하지만, 성능 측면에서 이점이 있을 수 있습니다. Python은 사용이 간편하고 라이브러리가 풍부하여 빠르게 프로토타입을 개발할 수 있습니다.
"arc"는 그래프 이론에서 주로 "간선(Edge)"와 같은 의미로 사용되며, 보통 유향 그래프(Directed Graph)에서 간선을 지칭할 때 사용됩니다. 즉, 유향 그래프에서는 시작 정점(Vertex)에서 끝 정점까지의 방향성이 있는 연결선을 "Arc"라고 부릅니다.
간선(Edge)과 Arc의 주된 차이점은 다음과 같습니다:
이러한 Arc는 네트워크 플로우, 작업 스케줄링, 방향성이 있는 관계를 모델링하는 데 주로 사용됩니다.