그래프

그래프 기초

  • 그래프 G : 그래프 G는 (V,E)의 쌍이다.

  • v는 정점(vertext)의 집합, E는 간선(edge)의 집합.
  • a directed graph
    • 화살표가 있는 그래프
    • 각 간선은 한 정점을 떠나 다른 한 정점으로 들어간다.(자기 자신 포함)
    • 보통 각 정점은 숫자나 이름으로 구분 V={1,2,3,4,5}
    • 각 간선은 간선이 떠나고 도착하는 정점의 쌍을 순서대로 적음. E={(1,2).(2,2),(2,4)}
  • an undirected graph
    • 화살표가 없는 그래프
    • 간선 방향이 없으므로 직전표현.
    • (2,4)=(4,2)다.
  • 인접하다
    • undirected graph에서는 연결만 되있으면 인접하다고 한다.
    • directed graph는 화살표 방향이 중요한데, a–>b 라고 치면, a는b에 인접하지만 b는 a에 인접하지 않다.
  • 차수
    • out-degree : 어떤 정점을 기준으로 나가는 간선의 수
    • in-degree : 어떤 정점을 기준으로 들어오는 간선의 수
    • degree = 위 둘을 합친 것 (out-degree+in-degree)
  • 경로
    • 정점 u로부터 정점 v까지의 경로는 정점의 순서다
    • 단순경로 : 경로에 있는 모든 정점들이 서로 다른 경우
  • 비순환 그래프 : 순환이 없는 그래프
  • 연결 그래프 : 정점의 모든 쌍이 경로를 가지는 무방향성 그래프
  • 연결 요소 : 무방향성 그래프에서 정점들이 최대한 연결되어있는 하위 그래프-
  • 강한 연결 : 방향성 그래프에서 정점의 각 쌍이 서로 도달 가능하면 강하게 연결돼있다라고 함
  • 강한 연결 요소 : 방향성 그래프에서 최대한 많은 정점을 강하게 연결한 하위 그래프
  • 완전 그래프 : 무방향성 그래프에서 모든 정점의 쌍이 서로 인접한 경우

  • 포레스트 : 순환하지 않는 무방향성 그래프
  • 트리 : 포레스트가 연결되어있는 경우 (무방향성, 연결, 사이클이 없다)
    • 그래프 G에서 어떤 두 정점들도 단일 단순 경로로 연결
    • G가 연결되어있을 때 어떤 간선을 제거하면, G는 더이상 연결되지 않음
    • G가 연결되어있고 비순환이면E=V-1
    • G가 비순환일 때, 간선 하나 추가하면 순환
  • 그래프에서 간선의 개수
    • 방향성 그래프 :E<=V**2
    • 비방향성 그래프 :E<=V(V-1)/2

그래프 표현

  • 인접 리스트 표현

    • 방향성 그래프를 인접 리스트로 표현하기image

    • 비방향성 그래프를 인접 리스트로 표현하기

      image

    • 간선을 찾는데 걸리는 시간 : O(v) , 모든 간선을 찾거나 방문하는 시간 : Θ(v+e)

  • 인접 행렬 표현

    • 두 정점 i와 j를 잇는 간선이 있다면 행렬의 (i,j)는 1, 아니면 0
    • 비방향성 그래프를 저장할 때는, 어차피 하위 삼각행렬이 상ㅎ위 삼각행렬과 같기 때문에 하위 삼각행렬을 저장한다. 그래서 v^2/2의 공간만 사용.
    • 간선을 찾는데 걸리는 시간 : Θ(1) , 모든 간선을 찾거나 방문하는 시간 : Θ(v**2)

가중 그래프

  • 간선이 숫자로 표현되는 값을 가지는 그래프
  • 인접 리스트에서는 정점 외 간선의 값 추가 저장
  • 인접 매트릭스에서는 1과 0으로 하는게 아니라 간선값을 매트릭스에 넣어주면 된다.

© 2018. All rights reserved.

Powered by Hydejack v8.5.2