[24.06.12] 99클럽 코테 스터디 24일차 TIL - 그래프 자료구조, BFS와 DFS 각기 사용하면 좋을 때

2024. 6. 12. 22:58·회고
728x90

1. 그래프 자료구조

그래프 자료구조는 노드와 엣지(간선)으로 이루어진 구조이다.

그래프는 기준에 따라 다양한 종류로 분류가 된다. 

 

1.1 연결 방식에 따른 분류

단방향 그래프

  • 간선이 방향성을 가지는 그래프.
  • 즉 각 간선은 한 노드에서 다른 노드로의 단방향 관계를 나타낸다.
  • ex) 작업 A가 완료된 후에만 작업 B를 시작할 수 있는 경우

양방향 그래프

  • 간선이 양방향인 관계를 나타내는 그래프.
  • 각 간선은 두 노드간의 쌍방향 연결을 나타내며, 노드 A와 B가 연결되있다면 A에서 B로, B에서 A로 모두 이동이 가능
  • ex) 사용자 A와 B가 친구관계라면 A에서 B로, B에서 A로 모두 연결되어 있음.

무향 그래프

  • 연결 간 방향이 정해지지 않은 그래프.
  • 각 간선은 노드 간의 관계만을 나타낸다.

1. 2 연결 가중치에 따른 분류

가중치 그래프

  • 간선에 가중치가 존재하는 그래프 
  • 가중치는 간선의 비용, 거리, 시간 등을 나타낼 수 있다.
  • ex) 각 도로는 두 도시를 연결하며, 도로의 거리가 가중치로 나타낼 수 있다.

 

비가중치 그래프

  • 간선에 가중치가 따로 없는 그래프
  • 간선이 연결의 유무만을 나타낸다. 
  • ex) 사람들 간의 관계를 나타낼 때, 각 연결은 단순히 관계의 존재만을 나타내고 관계의 강도를 나타내지 않는다.

 

2. DFS와 BFS

2.1 DFS(깊이 우선 탐색)

DFS은 한 노드에서 출발하여 가능한 깊이 탐색한 후, 더 이상 갈 수 없을 때 백트래킹하여 다시 다른 경로를 탐색하는 방식이다.

 

DFS를 사용하기 좋은 경우

  • 경로 찾기 : 출발점에서 도착점까지의 경로를 찾는 경우
  • 사이클 검출 : 방향,무방향 그래프 모두에서 사이클을 유무를 판단해야하는 경우
  • 탐색의 깊이가 중시될 경우

.2 BFS(너비우선탐색)

BFS는 그래프의 한 노드에서 시작하여 인접한 모든 노드를 탐색한 후, 다음 깊이의 노드를 탐색하는 방식이다.

 

BFS를 사용하기 좋은 경우

  • 최단 경로 찾기 : 무가중치 그래프에서 최단(최소) 경로를 찾는 경우
  • 레베 순 탐색 : 트리 구조에서 각 레벨의 노드를 차례로 탐색하는 경우
  • 가장 가까운 해답 찾기 : 여러 해답이 존재하고 가장 가까운 해답을 찾아야 하는 경우

 

728x90

'회고' 카테고리의 다른 글

[24.06.14] 99클럽 코테 스터디 26일차 TIL  (0) 2024.06.14
[24.06.13] 99클럽 코테 스터디 25일차 TIL  (0) 2024.06.13
[24.06.11] 99클럽 코테 스터디 23일차 TIL  (0) 2024.06.11
[24.06.10] 99클럽 코테 스터디 22일차 TIL  (0) 2024.06.10
[24.06.09] 99클럽 코테 스터디 21일차 TIL - 배열 초기화 방식  (0) 2024.06.09
'회고' 카테고리의 다른 글
  • [24.06.14] 99클럽 코테 스터디 26일차 TIL
  • [24.06.13] 99클럽 코테 스터디 25일차 TIL
  • [24.06.11] 99클럽 코테 스터디 23일차 TIL
  • [24.06.10] 99클럽 코테 스터디 22일차 TIL
bbooo
bbooo
  • bbooo
    bbooo
    bbooo
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • study (61)
        • 백준(BOJ) (34)
        • Programmers (15)
        • LeetCode (9)
      • AI (4)
        • Paper (0)
      • SSAC X IFFEL (4)
        • DeepML (1)
        • 밑바닥 부터 시작하는 딥러닝 (2)
      • 회고 (46)
      • Error (10)
      • Setting (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    python 석유시추
    투포인터
    풀이 실패
    항해99
    set
    브루트포스
    typeerror: sequence item 0: expected str instance int found
    파이썬 석유시추
    백트래킹
    두 포인터
    문자열을 원하는 길이로
    그리디 알고리즘
    코딩테스트 준비
    sort
    백준 2470
    백준
    프로그래머스 석유시추
    vscode
    99클럽
    programmers 과제 진행하기
    Counter
    sequence item 0: expected str instance int found
    LeetCode
    파이썬 과제 진행하기
    개발자 취업
    python 과제 진행하기
    programmers 석유시추
    docker
    파이썬
    Til
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
bbooo
[24.06.12] 99클럽 코테 스터디 24일차 TIL - 그래프 자료구조, BFS와 DFS 각기 사용하면 좋을 때
상단으로

티스토리툴바