이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

12. 그래프 ADT (Graph ADT)

  • 2020.11.11 14:53
  • 학부 수업/알고리즘
반응형

그래프 ADT는 정점vertex의 집합 $V$와 간선edge의 집합 $E$로 이루어진다. 정점은 노드node라고도 표현한다.
각 노드와 간선은 원소, 즉 정보를 저장한다.

간선에는 방향의 유무에 따라 유향 간선directed edge과 무향 간선undirected edge이 있는데, 모든 간선이 유향 간선인 그래프는 유향 그래프라 한다.

그래프 용어

  • 간선 $a$에 연결된 노드를 각각 간선의 끝점이라 한다.
  • 노드 $V$에 연결된 간선 $a, b, c$를 각각 노드 $V$에 부착되었다고 한다.
  • 간선 $a$로 연결된 노드 $U, V$를 서로 인접한 노드라 한다.
  • 한 노드 $X$가 5개의 간선과 연결되어 있다면, 해당 노드의 차수는 5라 한다.
  • 어떤 간선 $h, i$가 각각 노드 $V, U$를 연결하면, 간선 $h, i$를 병렬 간선이라 한다.
  • 간선 $j$가 노드 $V$에서 노드 $V$로 연결된다면, 루프라 한다.
  • 어떤 노드 $U$에서 $T$로 가는 간선들을 경로라 한다.
    • 이때, 경로 내의 모든 정점과 간선을 한번씩만 방문하면, 단순경로라 한다.
  • 어떤 노드 $U$에서 시작하여 $U$에서 끝나는 경로를 사이클이라 한다.

그래프의 밀집도

그래프 내에 노드들을 연결하는 간선이 많을 경우 밀집 그래프, 적을 경우 희소 그래프라 한다.

그래프의 밀집도에 따라 시간복잡도 $O(n^2), O(nm)$인 알고리즘의 성능이 변화한다. ($n$은 노드의 개수, $m$은 간선의 개수)

밀집 그래프의 경우 $O(nm)$ 알고리즘이 빠르고, 희소 그래프에선 $O(n^2)$ 알고리즘이 빠르다.

자유 트리

모든 노드가 연결되어 있고, 사이클이 없는 무향 그래프 $T$를 자유 트리라 한다.
사이클이 없는 무향 그래프는 숲이라 한다.

스패닝 트리 (신장 트리)

어떤 그래프에서, 부그래프 가운데 트리인 신장 그래프를 신장 트리 혹은 스패닝 트리라 한다.
한 그래프가 트리가 아니라면, 해당 그래프에 대한 여러 신장 트리가 존재한다.

그래프의 구현

그래프의 구현 방법에는 세 가지가 있다.

  • 간선 리스트edge list 구조
  • 인접 리스트abjacency list 구조
  • 인접 행렬abjacency matrix 구조

간선 리스트 구조

노드들을 저장하는 리스트와 간선들을 저장하는 리스트를 따로 만든다.
각 노드는 원소를 담고, 간선들은 시점 노드와 종점 노드의 포인터와 원소를 담는다.

인접 리스트 구조

인접 리스트 구조는, 간선 리스트 구조에 더하여 각 노드가 부착 리스트를 갖는다.
부착 리스트에는 해당 노드에 부착된 간선들의 포인터가 저장된다.

인접 행렬 구조

인접 행렬 구조는 간선 리스트 구조에 더하여 인접 행렬을 갖고, 각 노드는 정수 번호를 부여받는다.
인접 행렬은 $n\times n$크기의 행렬이다. 해당 행렬의 $(i,j)$ 원소에는 $i$번 노드와 $j$번 노드 사이의 간선의 포인터가 저장되고, 해당 노드들 사이에 간선이 없을 경우 널이 저장된다.

반응형

'학부 수업 > 알고리즘' 카테고리의 다른 글

14. 방향그래프 (Directed Graph)  (0) 2020.11.24
13. 그래프 순회 (Graph Traversal)  (0) 2020.11.24
11. 해시테이블의 충돌 해결  (0) 2020.11.05
10. 해시테이블 (Hash Table)  (0) 2020.11.05
9. AVL 트리  (0) 2020.10.15

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 14. 방향그래프 (Directed Graph)

    14. 방향그래프 (Directed Graph)

    2020.11.24
  • 13. 그래프 순회 (Graph Traversal)

    13. 그래프 순회 (Graph Traversal)

    2020.11.24
  • 11. 해시테이블의 충돌 해결

    11. 해시테이블의 충돌 해결

    2020.11.05
  • 10. 해시테이블 (Hash Table)

    10. 해시테이블 (Hash Table)

    2020.11.05
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바