ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 그래프(Graph)
    ML&DL&AI/자료구조 2024. 6. 18. 16:13
    728x90

    그래프(graph)

    사물을 정점(vertex)과 간선(edge)으로 나타내는 위한 도구

     

    - 인접 행렬(adjacency matrix) : 2차원 배열을 사용하는 방식

    - 인접 리스트(adjacency list) : 연결 리스트를 이용하는 방식

     

     

    인접 행렬(adjacency matrix)

    그래프를 2차원 배열로 표현

    0 3 7
    3 0 무한
    7 무한 0

     

     

    인접 행렬 - 무방향 무가중치 그래프

    모든 간선이 방향성을 가지지 않는 그래프를 무방향 그래프라고 한다.

    모든 간선에 가중치가 없는 그래프를 무가중치 그래프라고 한다.

    무방향 비가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 행렬로 출력할 수 있다.

    0 1 1 0
    1 0 1 0
    1 1 0 1
    0 0 1 0

     

     

    인접 행렬 - 방향 가중치 그래프

    모든 간선이 방향을 가지는 그래프를 방향 그래프라고 한다.

    모든 간선에 가중치가 있는 그래프를 가중치 그래프라고 한다.

    방향 가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 행렬로 출력할 수 있다.

    0 0 7 0
    3 0 8 0
    0 8 0 0
    0 0 4 0

     

     

    인접 리스트(adjacency list)

    그래프를 리스트로 표현

    0 : [(1, 3), (2, 7)]

    1: [(0, 3)]

    2: [(0, 7)]

     

     

    인접리스트 - 무방향 무가중치 그래프

    모든 간선이 방향성을 가지지 않는 그래프

    모든 간선에 가중치가 없는 그래프

    [1, 2],

    [0, 2],

    [0, 1, 3],

    [2]

     

    인접 리스트 - 방향 가중치 그래프

    모든 간선이 방향을 가지는 그래프를 방향 그래프라고 한다.

    모든 간선에 가중치가 있는 그래프를 가중치 그래프라고 한다.

    방향 가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 리스트로 출력할 수 있다.

    [ ( 2, 7 ) ],

    [ ( 0, 3 ), ( 2, 8 ) ],

    [ ( 2,4 ) ],

     

     

    그래프의 시간 복잡도

    1. 인접 행렬 : 모든 정점 들의 연결 여부를 저장해 O(V²)의 공간을 요구 한다.

    공간 효율성이 떨어지지만, 두 노드의 연결 여부를 O(1)에 확인할 수 있다.

     

    2. 인접 리스트 : 연결된 간선의 정보만 저장하여 O(V + E)의 공간을 요구한다.

    공간 효율성이 우수하지만, 두 노드의 연결 여부를 확인하기 위해 O(V)의 시간이 필요하다.

      필요한 메모리 연결 여부 확인
    인접 행렬 O(V²) O(1)
    인접 리스트 O(V + E) O(V)

     

    728x90

    'ML&DL&AI > 자료구조' 카테고리의 다른 글

    우선순위 큐  (0) 2024.06.18
    이진 탐색 트리  (0) 2024.06.17
    덱(Deque)  (0) 2024.06.17
    큐(queue)  (0) 2024.06.17
    스택  (0) 2024.06.14
Designed by Tistory.