๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Graph4

[MST] ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ - ํฌ๋ฃจ์Šค์นผ(Kruskal), ํ”„๋ฆผ(Prim) MST๋ž€? ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Minimum Spanning Tree)๋กœ ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„(Weight Graph)์—์„œ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ(Weight)์œผ๋กœ ๋ชจ๋“  ์ •์ (Vertex)์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„(Sub Graph)์ด๋‹ค. MST๋Š” ๊ฐ ์ •์ ์—์„œ ์ •์  ์‚ฌ์ด์— ํ•˜๋‚˜์˜ ๊ฐ„์„ (Edge)๋งŒ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด N-1 ๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฏ€๋กœ ๋งˆ์น˜ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋ฅผ ํ•˜๊ณ  ์žˆ์–ด์„œ ํŠธ๋ฆฌ๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™๋Š”๋‹ค.ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ๋ชจ๋“  ๊ฐ„์„ ์„ ๋น„์šฉ์ด ์ ์€ ์ˆœ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. - Sort2. ๊ฐ„์„ ์— ๋ถ™์€ ์ •์  u์™€ v๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ€๋ชจ๋ฅผ ์ฐพ๋Š”๋‹ค. - Find3. ์ •์  u์˜ ๋ถ€๋ชจ์™€ ์ •์  v์˜ ๋ถ€๋ชจ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์ง‘ํ•ฉ์— ์†ํ•ด์žˆ์ง€๋งŒ, 1๋ฒˆ ๊ณผ์ •์œผ๋กœ ์ธํ•ด ํ•ด๋‹น ๊ฐ„์„ ์ด ๋‘ ์ •์ ์˜ ์ตœ์†Œ ๋น„์šฉ์˜ ๊ฐ„์„ ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•˜๋‚˜์˜.. 2024. 7. 11.
๋ฐฑ์ค€ - [BOJ 22856] ํŠธ๋ฆฌ ์ˆœํšŒ ๋ฌธ์ œ๋…ธ๋“œ๊ฐ€ N๊ฐœ์ธ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ํŠธ๋ฆฌ๋ฅผ ์ค‘์œ„ ์ˆœํšŒ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ˆœํšŒํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ผ๊ณ  ํ•˜์ž.์ˆœํšŒ์˜ ์‹œ์ž‘์€ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์ด๊ณ  ์ˆœํšŒ์˜ ๋์€ ์ค‘์œ„ ์ˆœํšŒํ•  ๋•Œ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์ด๋‹ค. ์ด๋•Œ ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ 1๋ฒˆ ๋…ธ๋“œ์ด๋‹ค.์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค.ํ˜„์žฌ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ˜„์žฌ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ์˜ ๋์ด๋ผ๋ฉด, ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ 1 ~ 4๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.์œ„ ๊ทธ๋ฆผ์— ์žˆ.. 2024. 7. 8.
[Java] Tree ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜ : Tree, Binary Tree, Binary Serach Tree, Balanced Binary Serach Tree, Heap, Trie์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ Tree์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘์„ฑํ•ด๋ณด์ž. Tree๋ž€ ? Node์™€ Edge๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋Š” ๋น„์ˆœํ™˜ Graph์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค. ๊ทธ๋ž˜์„œ DAG(Directed Acyclic Graphs)๋ผ๊ณ ๋„ ํ•œ๋‹ค.๊ทธ๋Ÿผ Graph๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด ๋˜์ง€ ์™œ Tree๋ƒ๋Š” ์˜์‹ฌ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.Tree๋Š” Graph์—์„œ ๋ช‡๊ฐ€์ง€ ํŠน์„ฑ์„ ๋” ๊ฐ€์ง„๋‹ค. 1. ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค.2. ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.3. ๋…ธ๋“œ๋Š” 0๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.4. ์ž์‹์ด 0๊ฐœ์ธ ๊ฒฝ์šฐ ๋‹จ๋ง๋…ธ๋“œ(Leaf Node)๋ผ๊ณ  ํ•œ๋‹ค.5.. ์œ„ ํŠน์„ฑ์„ ์ง€ํ‚ค๋Š” .. 2024. 7. 7.
[์ตœ๋‹จ๊ฒฝ๋กœ] Bellman-Ford Algorithm ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜package com.study.datastructrue.mst;import java.util.ArrayList;import java.util.Arrays;class Pair { T node; V cost; public Pair(T node, V cost) { this.node = node; this.cost = cost; }}public class BellmanFord { static long[] dist = new long[6]; public static void main(String[] args) { // ์ง‘ 1, ํ•™๊ต 2, ๋ฐ•๋ฌผ๊ด€ 3, ์˜ํ™”๊ด€ 4, ๋งˆํŠธ 5 ArrayList>> graph = inpu.. 2024. 7. 6.