최소 신장 트리 (Minimum Spanning Tree)

2025. 6. 5. 15:00·PS/알고리즘
728x90

최소 신장 트리란 그래프에서 모든 노드를 연결할 때 사용된 간선들의 가중치 합을 최소로 하는 트리임

📌 최소 신장 트리 특징
사이클이 포함되면 가중치의 합이 최소가 될 수 없으므로 사이클을 포함하지 않음
`N개`의 노드가 있으면 MST를 구성하는 간선의 개수는 항상 `N-1개`

핵심 이론

1. 간선 리스트로 그래프를 구현하고 유니온 파인드 배열 초기화

MST는 데이터를 노드가 아닌 간선 중심(≒ 벨만 포드)으로 저장하므로 인접리스트가 아닌 간선 리스트의 형태로 저장

edge  class는 일반적으로 노드 변수 2개와 가중치 변수로 구성

사이클 처리를 위한 유니온 파인드 배열도 선언 및 인덱스를 해당 자리의 값으로 초기화


2. 그래프 데이터를 가중치 기준으로 정렬

간선 리스트에 담긴 그래프를 데이터를 가중치 기준으로 오름차순 정렬


3. 가중치가 낮은 간선부터 연결 시도

가중치가 낮은 간선부터 순서대로 선택해 연결 시도

이때, 바로 연결하지 않고 해당 간선을 연결했을 때 그래프에 사이클 형성 유무를 확인 후 형성되지 않을 때만 연결


4.  과정 3 반복

전체 노드 개수가 N개면 연결한 간선의 개수가 N-1이 될 때까지 반복함

1, 3
4, 2
2, 5
1, 2


5. 총 간선 비용 출력

간선의 개수가 N-1이 되면 알고리즘을 종료하고, 완성된 MST의 총 간선 비용 출력

MST는 다른 그래프 알고리즘과 달리, 간선 리스트의 형태를 이용해 데이터를 저장한다는 특징을 가짐

또한 사이클이 존재하면 안 되는 특징을 갖고 있으므로 사이클 판별 알고리즘인 유니온 파인드 알고리즘을 내부에 구현해야 함. 


관련 문제

[백준 - 최소 스패닝 트리] https://www.acmicpc.net/problem/1197

[백준- 다리 만들기 2] https://www.acmicpc.net/problem/17472

[백준 - 불우이웃 돕기] https://www.acmicpc.net/problem/1414

 

728x90
'PS/알고리즘' 카테고리의 다른 글
  • 트리 (Tree)
  • 벨만-포드 (Bellman-Ford-moore)
  • 플로이드-워셜 (Floyd-warshall)
  • 다익스트라 (Dijkstra)
0woy
0woy
Algorithm, CS, Web 등 배운 내용을 기록합니다.
  • 0woy
    0woy dev
    0woy
  • 전체
    오늘
    어제
  • 🌐 LANGUAGE
    • 분류 전체보기 (80)
      • Backend (21)
        • JAVA (7)
        • DB (11)
        • Spring (1)
        • Spring Security (2)
      • Computer Science (22)
        • 네트워크 (9)
        • 운영체제 (5)
        • 보안 (7)
      • Frontend (15)
        • HTML5 (1)
        • CSS (1)
        • JS (4)
        • Vue 3 (9)
      • PS (16)
        • LeetCode (2)
        • Baekjoon (1)
        • Programmers (1)
        • 알고리즘 (12)
      • Dev Trivia (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    tcp
    Spring
    set
    JDBC
    그래프
    javascript
    트리
    비밀키
    dfs
    대칭키
    속성
    Filter
    PreparedStatement
    select
    Props
    https
    JS
    java
    DP
    function
    security
    Graph
    RDB
    shortestpath
    CA
    공개키
    가용성
    Vue3
    BFS
    leetcode
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
0woy
최소 신장 트리 (Minimum Spanning Tree)
상단으로

티스토리툴바