정점(Vertex)
: 그래프의 구성 요소로 하나의 연결점.간선(Edge)
: 두 정점을 연결하는 선.차수(Degree)
: 정점에 연결된 간선의 수.인접(Adjacency)
: 두 개의 정점에 간선이 존재(연결됨)하는 경우.경로(Path)
: 어떤 정점 A에서 다른 정점 B로 끝나는 순회로 두 정점 사이를 잇는 간선들을 순서대로 나열한 것.싸이클(Cycle)
: 경로의 시작 정점과 끝 정점이 같음.무향 그래프(Undirected Graph)
: 방향이 없음. 양방향.유향 그래프(Directed Graph)
: 방향이 있음. 단뱡향.가중치 그래프(Weighted Graph)
: 간선에 정보(값)을 부여한 그래프.사이클 없는 방향 그래프 그래프(DAG, Directed Acyclic Graph)
: .완전 그래프
: 정점들에 대해 가능한 모든 간선들을 가진 그래프.부분 그래프
: 원래 그래프에서 일부의 정점이나 간선을 제외한 그래프.트리
: 아래 제한을 가지는 그래프.인접 행렬(Adjacent Matrix)
: [V X V] 크기의 2차원 배열을 이용해 간선 정보 저장.인접 리스트(Adjacent List)
: 각 정점마다 다른 정점으로 나가는 간선의 정보 저장.간선 리스트(Edge List)
: 간선(시작 정점, 끝 정점)의 정보를 객체로 표현하여 리스트에 저장.
순회
: 비선형적인 그래프로 표현된 모든 자료(정점)을 빠짐없이 탐색하는 것.인접한 정점
들을 차례로 방문. 방문한 정점을 시작점으로 다시 인접한 정점 방문.큐
활용.// G : 그래프.
// v : 시작 정점.
void BFS(G, v){
Queue<T> q = new Queue<T>();
q.offer(v);
// v 방문 예약
while (!q.isEmpty()){
T data = q.poll();
// data 방문
for (data와 연결된 모든 간선){
q.offer(data의 인접 정점);
// 인접 정점 방문 예약.
}
}
}
재귀적
구현 또는 후입 선출 형태의 스택
활용.// G : 그래프.
// v : 탐색 정점
void DFS(v){
// v 방문 설정.
for (v와 연결된 모든 간선){
if (아직 방문하지 않은 정점 newV){
DFS(newV)
}
}
}