알고리즘

[알고리즘] 그래프

2022. 5. 22. 09:33
목차
  1. 선형 구조 
  2. 비선형 구조 
  3. 그래프 용어
  4. 그래프 종류
  5. 그래프의 표현
  6. 인접 행렬
  7. 인접 리스트
  8. 인접 다중 리스트
  9. 그래프의 운행(순회)
  10. 신장 트리
  11. MST

이번에 알아볼 알고리즘 중 자료구조는 그래프입니다!

그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 자료구조입니다.

그 예시로 지도, 지하철 노선도의 최단 경로, 전기 회로의 소자들 등이 있습니다.

그래프 순회(임의의 한 정점에서 시작하여 모든 정점을 한 번씩 방문)에는 DFS와 BFS 등이 있습니다.

 

자료구조는 선형구조와 비선형 구조로 나뉘는데, 그래프는 그 중에서 비선형 구조입니다.

 

선형 구조 

; 자료를 구성하고 있는 데이터들을 순차적으로 나열 시킨 형태

ex) 큐, 스택, 데큐

- 자료를 저장하고 꺼내는 것에 초점

 

비선형 구조 

; 데이터가 계층적으로 구성된 형태

- 표현에 초점

ex) 트리, 그래프 / 컴퓨터의 폴더(폴더 속 폴더..)

 

그래프 용어

- 정점(=노드) ; 위치라는 개념

- 간선 ; 노드를 연결하는 선

- 인접 정점 ; 간선에 의해 직접 연결된 정점

- 정점의 차수 ; 무방향 그래프에서 하나의 정점에 인접한 정점의 수

- 진입 차수 ; 방향그래프에서 외부에서 오는 간선의 수

- 진출 차수 ; 방향 그래프에서 외부로 향하는 간선의 수

- 사이클 ; 단순 경로의 시작 정점과 종료 정점이 동일한 경우

- 루프 ; 한 정점이 자기 자신으로의 경로를 가지는 경우

 

그래프 종류

 

- 방향 그래프 ; 간선에 방향이 있는 그래프

 

- 무방향 그래프 ; 간선에 방향이 없는 그래프

 

- 다중 그래프 ; 한 정점에서 다른 정점으로 가는 경로가 여러 개인 경우

 

- 정규 그래프 ; 모든 정점이 같은 차수를 가지는 그래프

 

- 완전 그래프 ; 서로 다른 두 개의 꼭짓점이 반드시 하나의 변으로 연결된 그래프 -> 간선의 수가 n(n-1)/2

정규 그래프이기도 함

 

- 동형 그래프 ; 2개의 그래프가 정점의 수, 간선의 수, 차수의 수가 모두 동일한 그래프

 

- 오일러 그래프 ; 모든 정점의 차수가 짝수인 그래프

 

- 해밀톤 그래프(Hamilton graph) ; 그래프의 모든 정점을 거쳐 시작 정점으로 cycle을 형성하며, 동일한 정점을 2번이상 지나지 않는 그래프

 

그래프의 표현

인접 행렬

- 선형 구조

- N개의 정점을 가진 그래프 G를 2차원 배열로 표시 ; 인접하면 1 / 아니면 0

- Dense Graph(밀도 있는 그래프) 표현할 때 적절

 

인접 리스트

- 비선형 구조

- n 개의 정점을 n개의 링크드리스트로 표현]

- Sparse Graph(희소 그래프) 표현할 때 적절

 

인접 다중 리스트

- 비선형 구조

- 노드들이 여러 리스트들을 공용하는 리스트

 

- 정점0 : E0 → E1

- 정점1 : E0 → E2 → E3

- 정점2 : E2 → E4

- 정점3 : E1 → E3 → E4

 

그래프의 운행(순회)

https://peter-coding.tistory.com/20

 

[알고리즘] 백트래킹 알고리즘

백트래킹(Back Tracking) ; 모든 경우의 수를 전부 고려하는 알고리즘 - 상태공간을 트리로 나타낼 수 있을 때 적합(트리 탐색 알고리즘) ▶ DFS(Depth-First Search) ; 깊이 우선 탐색 ; 최대한 깊이 내려간

peter-coding.tistory.com

 

 

신장 트리

; 무방향 그래프 G(V,E)에서 E가 속한 간선들로 사이클을 포함하지 않으면서 + 모든 정점 V를 연결한 부분 그래프

- 간선의 수 = n-1

 

MST

(Minimum Spanning Tree, 최소 비용 신장 트리) ; 간선들의 가중치 합이 최소인 신장 트리 

Kruskal

; 결정의 순간마다 최선의 결정을 함으로써 최종적인 해답에 도달

a. 가중치 가장 작은 간선 선택 

b. 사이클이 형성되지 않게 a를 계속 반복(사이클이 형성된다면 선택 x)

 

Prim

; 트리 집합을 단계적으로 확장

a. 임의의 점 선택

b. 그 점에서 연결된 간선 중 가중치 가장 작은 간선 선택

c. 현재 연결된 간선 中 가중치 가장 작은 간선 선택

d. 사이클이 형성되지 않게 c를 계속 반복(형성된다면 선택 x)

 

저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[알고리즘] 선형 리스트(Stack, Queue, Deque)  (0) 2022.06.06
[알고리즘] 해시  (0) 2022.06.06
[알고리즘] 해싱(자료구조 기말고사 공부 정리)  (0) 2022.05.30
[알고리즘] 탐색  (0) 2022.05.29
[알고리즘] 연결 리스트  (0) 2022.05.21
[알고리즘] 배열과 연결리스트  (0) 2022.05.21
[알고리즘] 정렬(삽입 정렬, 버블 정렬, 선택 정렬, 퀵 정렬)  (0) 2022.05.16
[알고리즘] 자료구조란 ?  (0) 2022.05.15
  1. 선형 구조 
  2. 비선형 구조 
  3. 그래프 용어
  4. 그래프 종류
  5. 그래프의 표현
  6. 인접 행렬
  7. 인접 리스트
  8. 인접 다중 리스트
  9. 그래프의 운행(순회)
  10. 신장 트리
  11. MST
'알고리즘' 카테고리의 다른 글
  • [알고리즘] 해싱(자료구조 기말고사 공부 정리)
  • [알고리즘] 탐색
  • [알고리즘] 연결 리스트
  • [알고리즘] 배열과 연결리스트
피터s
피터s
1년차 프론트엔드 개발자입니다 😣 아직 열심히 배우는 중이에요! 리액트를 하고있어요 :) - gueit214@naver.com - https://github.com/gueit214
피터s
피터의 성장기록
피터s
전체
오늘
어제
  • 분류 전체보기 (200)
    • 코딩 테스트 (25)
      • 프로그래머스 (16)
      • LeetCode (8)
      • 백준 (1)
    • 개발 독서 일지 (1)
    • 기업 분석 (4)
    • 개발 일지 (19)
      • 최신기술 도전기 (1)
      • 에러 처리 (5)
      • 개발 일지 (12)
    • 개발 일상 (36)
      • 개발 회고 (22)
      • 개발 이야기 (12)
      • 개발 서적 (1)
    • 취업 관련 지식 (11)
    • 알고리즘 (17)
    • WebProgramming (84)
      • WebProgramming (8)
      • HTML (5)
      • CSS (8)
      • JS (21)
      • React (40)

블로그 메뉴

  • About
  • 2022년 개발 성장기
  • 앞으로의 계획
  • github
  • 일상 blog

공지사항

인기 글

태그

  • dfs
  • Retry
  • 구름톤
  • 반복문
  • 함수
  • 스터디 후기
  • 개발 회고
  • 카카오
  • 구름
  • 개발 is life
  • 1일 1커밋 후기
  • 해커톤
  • KAKAO BLIND
  • lv3
  • 누적합
  • Kakao Tech Internship
  • 1년 회고
  • BFS
  • LV2
  • Union-find
  • 카카오 채용연계형 인턴십
  • 개발 일상

최근 댓글

최근 글

hELLO · Designed By 정상우.
피터s
[알고리즘] 그래프
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.