*그래프의 개념
현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현
정점(Vertex): 데이터를 표현 (사물, 개념 등)
간선(Edge): 정점들을 연결하는데 사용
*가중치 그래프
간선에 가중치를 끼워 넣음 (가중치는 거리, 비용 등의 관계를 표현 할 수 있음)
*방향 그래프
정점간 간선의 방향을 표현 (반대의 경우 방향이 없는 그래프)
*그래프의 표현
C#에선 그래프와 관련된 클래스를 제공하고 있지 않으므로, 코드로 직접 그래프를 구현해야함.
(1)예를 들어 그래프의 정점을 구현하는 인스턴스를 생성하거나 int 리스트의 배열을 이용 - 메모리 소모가 상대적으로 덜하다. 접근이 느리다.
(2)행렬(2차원 배열)을 이용 - 메모리 소모가 (1)보다 크다. 접근이 빠르다.
*그래프의 탐색
가장 많이 보이는게 깊이 우선 탐색(Depth First Search), 너비 우선 탐색(Bredth First Search) 그 외 등등 여러가지 알고리즘이 있다.