[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford)

2023. 3. 2. 17:06ยทAlgorithm/KBro Study

1. ๋ฒจ๋งŒํฌ๋“œ(Bellman-Ford) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

  • ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ + ์Œ์ˆ˜ ์‚ฌ์ดํด ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์ต์ŠคํŠธ๋ผ์™€๋Š” ๋‹ฌ๋ฆฌ ๊ฐ€์ค‘์น˜์— ์Œ์ˆ˜๊ฐ€ ์žˆ์–ด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์‹œ๊ฐ„๋ณต์žก๋„: O(NE) (N:๋…ธ๋“œ์˜ ์ˆ˜, E:์—ฃ์ง€์˜ ์ˆ˜)

  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •
  • ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ๋…ธ๋“œ 1์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋กœ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋ฉด
  • 1 -> 2 = 1
  • 1 -> 2 ->3 = 2
  • 1-> 2 ->3 ->4 = 4 ๊ฐ€ ๋˜๊ณ 
  • ๋…ธ๋“œ 2๋Š” ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 4 ->2 ๊ฒฝ๋กœ๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ 1 -> 2์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” 1์ด ๋จ
  • ํ•˜์ง€๋งŒ ์‹ค์ œ 1 -> 2์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” -โˆž ์ž„
  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒ„์ƒ

 

2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ์›๋ฆฌ

  • ์‹œ์ž‘ ์ •์ ์„ ์„ ํƒํ•œ๋‹ค.
  • ๋ชจ๋“  ๊ฐ„์„ ๋“ค์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ์‹œ์ž‘ ์ •์ ์—์„œ ๋‹ค๋ฅธ ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ INF๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. ์ด ๊ณผ์ •์„ (์ •์ ์˜ ์ˆ˜ -1)๋ฒˆ๋งŒํผ ์ง„ํ–‰ํ•œ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ 2๋ฒˆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

2๋ฒˆ ๊ณผ์ •์—์„œ (์ •์ ์˜ ์ˆ˜-1)๋ฒˆ ๋งŒํผ ์ง„ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” V๊ฐœ์˜ ์ •์ ๊ณผ E๊ฐœ์˜ ๊ฐ„์„ ์ด ์žˆ๋Š” ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„์—์„œ ์ •์  A์—์„œ ์ •์  B๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋Š” ์ตœ๋Œ€ V-1๊ฐœ์˜ ์ •์ ์„ ์ง€๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

V-1๊ฐœ ์ด์ƒ์˜ ์ •์ ์„ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ ์ค‘๋ณต ๋ฐฉ๋ฌธ์„ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ ์„ฑ๋ฆฝ๋  ์ˆ˜ ์—†๋‹ค.

 

๋˜ํ•œ, 3๋ฒˆ ๊ณผ์ •์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ 2๋ฒˆ ๊ณผ์ •์„ ํ•œ ๋ฒˆ ๋” ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ์Œ์˜ ์‚ฌ์ดํด ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ๋งŒ์•ฝ V ๊ฐœ์˜ ์ •์ ์„ ์ง€๋‚ฌ๋Š”๋ฐ ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ ๊ฐฑ์‹ ์ด ๋œ๋‹ค๋ฉด ์Œ์˜ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋ฉฐ ๋น„์šฉ์ด ๋ฌดํ•œํ•˜๊ฒŒ ๊ฐฑ์‹ ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์•Œ์•„๋ณด์ž.


1. ์ดˆ๊ธฐํ™”

์ถœ๋ฐœ์ง€(์‹œ์ž‘ ๋…ธ๋“œ)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋กœ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฌดํ•œ๋Œ€๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ์ถœ๋ฐœ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” 0์ด๋‹ค.

 

2. ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ

V-1๋ฒˆ ๋™์•ˆ ๋ชจ๋“  ์—ฃ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.

ํ˜„์žฌ ์—ฃ์ง€์˜ ๋„์ฐฉ์ง€์ ์— ์ €์žฅ๋œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ํ˜„์žฌ ์—ฃ์ง€๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ + ํ˜„์žฌ ์—ฃ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์งง์„ ๊ฒฝ์šฐ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

for(i=1; i<V; i++) // V-1๋ฒˆ
	for(Edge now : EdgeList) // ๋ชจ๋“  ์—ฃ์ง€์— ๋Œ€ํ•ด
		if(distance[now.end] > dist[now.start] + now.cost)
			distance[now.end] = dist[now.start] + now.cost

์ด๋•Œ, ์—ฃ์ง€์˜ ์ถœ๋ฐœ์ง€๊ฐ€ ๋ฌดํ•œ๋Œ€์ธ ๊ฒฝ์šฐ์—” ๊ฐฑ์‹ ์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ํƒ์ƒ‰์—์„œ๋Š” ์‹œ์ž‘ ์ •์ ๊ณผ ์ด์–ด์ง„ ์—ฃ์ง€๋งŒ ๊ฐฑ์‹ ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ฆ‰, ์ฒซ ๋ฒˆ์งธ ํƒ์ƒ‰์—์„œ ์—ฃ์ง€๊ฐ€ ์ตœ๋Œ€ ํ•˜๋‚˜ ํฌํ•จ๋œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ตฌํ•ด์ง„๋‹ค.

 

๋‘ ๋ฒˆ์งธ์—์„œ๋Š” ๊ฑฐ๊ธฐ์— ํ•˜๋‚˜ ๋” ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์—ฃ์ง€๊ฐ€ ํฌํ•จ๋œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ตฌํ•ด์ง„๋‹ค.

 

๋”ฐ๋ผ์„œ i๋ฒˆ์งธ ํƒ์ƒ‰์— i๊ฐœ์˜ ์—ฃ์ง€๊ฐ€ ํฌํ•จ๋œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ตฌํ•ด์ง€๊ณ , ๊ฒฝ๋กœ์—๋Š” ์‚ฌ์ดํด์ด ์ƒ๊ธฐ๋ฉด ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํƒ์ƒ‰์€ V-1๋ฒˆ์œผ๋กœ ๋๋‚œ๋‹ค.

 

3. V๋ฒˆ์งธ ํƒ์ƒ‰ - ํ™•์ธ ๊ณผ์ •

V-1๋ฒˆ์—์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํƒ์ƒ‰์ด ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋”์ด์ƒ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ด๋„ ๊ฐฑ์‹ ์ด ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

V๋ฒˆ์งธ์— ๊ฐฑ์‹ ์ด ๋ฐœ์ƒํ•œ๋‹ค โ†’ ์Œ์ˆ˜ ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค.

for(Edge now : EdgeList)
	if(distance[now.end] > dist[now.start] + now.cost)
		return false // ์Œ์ˆ˜ ์‚ฌ์ดํด ์กด์žฌ
return true

์˜ˆ์‹œ๋ฌธ์ œํ’€์ด

https://www.acmicpc.net/problem/11657

๋ฌธ์ œ

N๊ฐœ์˜ ๋„์‹œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ๋„์‹œ์— ๋„์ฐฉํ•˜๋Š” ๋ฒ„์Šค๊ฐ€ M๊ฐœ ์žˆ๋‹ค. ๊ฐ ๋ฒ„์Šค๋Š” A, B, C๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, A๋Š” ์‹œ์ž‘๋„์‹œ, B๋Š” ๋„์ฐฉ๋„์‹œ, C๋Š” ๋ฒ„์Šค๋ฅผ ํƒ€๊ณ  ์ด๋™ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด๋‹ค. ์‹œ๊ฐ„ C๊ฐ€ ์–‘์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. C = 0์ธ ๊ฒฝ์šฐ๋Š” ์ˆœ๊ฐ„ ์ด๋™์„ ํ•˜๋Š” ๊ฒฝ์šฐ, C < 0์ธ ๊ฒฝ์šฐ๋Š” ํƒ€์ž„๋จธ์‹ ์œผ๋กœ ์‹œ๊ฐ„์„ ๋˜๋Œ์•„๊ฐ€๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

1๋ฒˆ ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•ด์„œ ๋‚˜๋จธ์ง€ ๋„์‹œ๋กœ ๊ฐ€๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ N (1 โ‰ค N โ‰ค 500), ๋ฒ„์Šค ๋…ธ์„ ์˜ ๊ฐœ์ˆ˜ M (1 โ‰ค M โ‰ค 6,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ๋ฒ„์Šค ๋…ธ์„ ์˜ ์ •๋ณด A, B, C (1 โ‰ค A, B โ‰ค N, -10,000 โ‰ค C โ‰ค 10,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

๋งŒ์•ฝ 1๋ฒˆ ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•ด ์–ด๋–ค ๋„์‹œ๋กœ ๊ฐ€๋Š” ๊ณผ์ •์—์„œ ์‹œ๊ฐ„์„ ๋ฌดํ•œํžˆ ์˜ค๋ž˜ ์ „์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด N-1๊ฐœ ์ค„์— ๊ฑธ์ณ ๊ฐ ์ค„์— 1๋ฒˆ ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•ด 2๋ฒˆ ๋„์‹œ, 3๋ฒˆ ๋„์‹œ, ..., N๋ฒˆ ๋„์‹œ๋กœ ๊ฐ€๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ•ด๋‹น ๋„์‹œ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด ๋Œ€์‹  -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

public class Main {
    static int N;
    static int M;
    static List<Node> graph;
    static int INF = Integer.MAX_VALUE;
    static long[] dist;

    static class Node {
        int start;
        int end;
        int time;

        public Node(int start, int end, int cost) {
            this.start = start;
            this.end = end;
            this.time = cost;
        }

    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());

        graph = new ArrayList<>();
        dist = new long[N+1];
        Arrays.fill(dist, INF);
        dist[1] = 0; // ์ถœ๋ฐœ์ง€๋Š” 0์œผ๋กœ

        for(int i = 1; i <= M; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            int time = Integer.parseInt(st.nextToken());
            graph.add(new Node(start, end, time));
        }

        if(bellmanFord()) System.out.println(-1);
        else {
            StringBuilder sb = new StringBuilder();
            for(int i = 2; i<=N; i++) {
                if(dist[i]==INF) sb.append(-1);
                else sb.append(dist[i]);
                sb.append("\n");
            }
            System.out.println(sb);
        }
    }

    static boolean bellmanFord() {
        /* 1. ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ */
        for(int i = 1; i <= M; i++) {
            for(Node node : graph) {
                if(dist[node.start] != INF && dist[node.end] > dist[node.start] + node.time) { // ๊ฐฑ์‹ 
                    if(i == M)  return true; // 2. ์‚ฌ์ดํด ๋ฐœ์ƒ ์—ฌ๋ถ€ ์ฒดํฌ
                    dist[node.end] = dist[node.start] + node.time;
                }
            }
        }

        return false;
    }
}

 

 

 

๐Ÿ“—์ฐธ๊ณ ์‚ฌ์ดํŠธ

[JAVA] ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford)

'Algorithm > KBro Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜] LCS(์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด) & LIS(๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด)  (0) 2023.03.27
[์•Œ๊ณ ๋ฆฌ์ฆ˜] Dynamic Programming(๋™์  ๊ณ„ํš๋ฒ•)  (0) 2023.03.17
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋”” - ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ(Minimum Spanning Tree)  (0) 2023.02.19
[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„(Graph) + ๊ตฌํ˜„ํ•˜๊ธฐ(Java์˜ ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ)  (0) 2023.01.17
[์•Œ๊ณ ๋ฆฌ์ฆ˜] Brute Force(๋ธŒ๋ฃจํŠธ ํฌ์Šค)  (0) 2023.01.08
  1. 1. ๋ฒจ๋งŒํฌ๋“œ(Bellman-Ford) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?
  2. 2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ์›๋ฆฌ
  3. ์˜ˆ์‹œ๋ฌธ์ œํ’€์ด
'Algorithm/KBro Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] LCS(์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด) & LIS(๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด)
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] Dynamic Programming(๋™์  ๊ณ„ํš๋ฒ•)
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋”” - ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ(Minimum Spanning Tree)
  • [์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„(Graph) + ๊ตฌํ˜„ํ•˜๊ธฐ(Java์˜ ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ)
_๊ฑฐ๋ˆ„
_๊ฑฐ๋ˆ„
๋ธ”๋กœ๊ทธ ์ด์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค! https://velog.io/@pigonhair/posts
  • _๊ฑฐ๋ˆ„
    ๊ฑฐ๋ˆ„๋„ค๋ฃธ๐Ÿ”‘
    _๊ฑฐ๋ˆ„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๊ฑฐ๋ˆ„๋„ค๋ฃธ (83)
      • Languages | Frameworks (41)
        • Java (10)
        • Spring (23)
        • Docker (8)
      • Git | Github (1)
      • DBMS (4)
        • SQL (4)
      • DevOps | Server (3)
      • OS (6)
        • Linux (6)
      • Algorithm (26)
        • Theory (1)
        • Data Structure (7)
        • BaekJoon (5)
        • Programmers (1)
        • KBro Study (12)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • Github
    • BaekJoon
    • solved class
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
_๊ฑฐ๋ˆ„
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford)

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.