728x90
728x90

그래프의 표현

  • 그래프는 수학적 기호그림뿐 만 아니라 그래프를 이용한 연산이나 데이터의 구조를 나타내기 위해 행렬이나 리스트 형태로 표현하기도 한다.

 

인접 행렬(Adjacency Matrix : AGAG)

그래프 G=(E,A)G=(E,A) 에서 |V|=n|V|=n 일 때, n×nn×n 행렬 AG=[aij]AG=[aij]
aij={해당 정점에 근접하는 변의 수,(vi,vj)E0,(vi,vj)E
  • 관계를 행렬로 표현하는 관계 행렬은 관계 집합에 순서쌍 원소가 있는지 없는지를 1과 0으로 표현하는 행렬로, 부울 행렬의 형태이다.
  • 그래프도 변의 집합 E 에 포함된 정점의 쌍의 원소를 이용해 행렬 형태로 표현할 수 있는데, 관계 행렬과는 다르게 정점의 쌍의 원소 개수로 표기한다.
    • 두 정점에 근접하는 변의 수를 행렬 원소로 표기한다.
  • 인접 행렬은 하나의 정점 집합에 대한 행렬이므로 항상 정사각 행렬이다.
  • 또한, 방향이 없는 무방향 그래프의 경우, 정점의 쌍을 구성하는 정점의 순서에 의미가 없으므로 인접 행렬로 표기할 때 주대각 원소를 기준으로 마주보는 원소는 같은 값이다.
    • 무방행 그래프의 인접 행렬은 대칭 관계에 대한 행렬 표현과 같다.
  • 반면, 방향 그래프는 정점의 쌍을 구성하는 정점의 순서에 의미가 있으므로, 주대각 원소를 기준으로 마주보는 원소의 값이 서로 다르다.

 

그래프의 인접 행렬 표기

  • 그래프 A무방향 그래프, 그래프 B다중 무방향 그래프, 그래프 C 방향 그래프이다.
  • 세 그래프는 모두 정점이 4개이므로 인접 행렬의 크기는 4×4 이다.

  • 그래프 A 는 정점들에 근접한 변이 1개씩만 있으므로 인접 행렬로 나타내면 다음과 같이 행렬의 원소가 변의 개수 1과 0으로만 표현된다.
  • 특히, 행렬의 주대각 원소를 기준으로 마주보는 원소가 같은 값이다.
G=(V,E)V={a,b,c,d}E={(a,c),(b,c),(b,d),(d,d)}
  • 그래프 B다중 그래프이므로 인접 행렬의 원소는 두 정점에 근접하는 변의 개수이며, 그래프 A 처럼 주대각 원소를 기준으로 마주보는 원소가 같은 값이다.
G=(V,E)V={a,b,c,d}E={(a,c),(a,d),(b,c),(b,c),(b,c),(b,d),(b,d)}
  • 그래프 C방향 그래프이면서 다중 그래프이다.
  • 다중 그래프는 정점의 쌍인 원소의 순서에 의미가 있으므로 정점의 쌍에서 시작 정점은 인접 행렬의 행 번호로, 끝 정점은 인접 행렬의 열 번호로 생각하고 해당 방향의 화살표 개수를 표기한다.
G=<V,E>V={a,b,c,d}E={<a,b>,<a,b>,<a,c>,<b,a>,<b,c>,<b,d>,<b,d>}

 

 

인접 리스트(Adjacency List)

그래프 G=(V,E) 에 포함되는 각 정점에 인접하는 정점들을 연결 리스트로 표현한 것
  • 인접 리스트의 헤드는 그래프에 포함되는 모든 정점에 대한 노드로 구성되며, 각 정점에 인접하는 정점의 노드를 연결함으로써 인접 리스트를 완성한다.
  • 다중 그래프의 경우에는 조금 다른 인접 리스트를 사용하므로, 여기에서는 단순 그래프에 대한 인접 리스트만 다루도록 한다.

 

연결 리스트(Linked List)

  • 자료 구조 표현의 하나인 연결 리스트는 다음과 같이 2개필드(Field)로 구성되는 노드(Node)들의 연결로 표현된다.

연결 리스트의 노드 구성

  • 노드의 첫 번째 필드는 데이터 필드(Data Field)데이터 값을 저장하는 필드이고, 두 번째 필드는 포인터 필드(Pointer Field)로 다음에 연결될 노드의 주소를 저장하는 필드이다.
  • 연결 리스트는 헤드(head)라는 노드에서 시작하며, 마지막 노드의 포인터 필드에는 더 이상 연결할 노드가 없음을 의미하는 널(null)을 채워서 마무리한다.

 

그래프의 인접 리스트 표기

  • 그래프 A,B 모두 정점이 4개이므로, 인접 리스트의 헤드는 4개의 노드로 구성된다.
  • 그래프 A 의 인접 리스트는 다음과 같이 헤드에 구성된 정점의 노드와 인접한 정점의 정보를 갖는 노드들을 연결하여 완성한다.
G=(V,E)V={a,b,c,d}E={(a,c),(b,c),(b,d),(d,d)}
  • 그래프 B 는 방향 그래프이므로 인접 리스트의 헤드에 구성된 각 정점의 노드가 화살표의 시작 정점이 되고, 화살표 끝 정점의 정보를 갖는 노드를 연결하여 인접 리스트를 완성한다.
G=<V,E>V={a,b,c,d}E={<a,a>,<a,b>,<a,d>,<b,a>,<b,c>,<c,c>,<d,a><d,b>,<d,c>}

 

728x90
728x90

그래프의 표현인접 행렬(Adjacency Matrix : AG)인접 리스트(Adjacency List)연결 리스트(Linked List)