도구스개발

중국인 우편배달부 문제 계산기

모든 간선을 적어도 한 번 지나 출발점으로 돌아오는 가장 짧은 경로의 길이를 냅니다. 홀수 차수 정점을 짝지어 최단경로만큼 덧그리는 과정을 보이고, 만든 순회 경로가 실제로 모든 간선을 덮는지까지 검산합니다.

줄마다 「정점 정점 길이」 — 지금 7개. 길이를 빼면 1로 봅니다

모든 길을 지나 제자리로 오는 최소 거리

27

간선 길이 합 23 + 덧그리는 길이 4

간선 길이의 합23
덧그리는 길이 (최소 매칭)4
27
홀수 차수 정점B, D (2개)
세어 본 짝짓기 가짓수1가지
정점차수홀짝
A2짝수
B3홀수
C4짝수
D3홀수
E2짝수
B ↔ D 를 덧그림B → C → D (4)

실제로 만들어 본 순회 경로 (히어홀처)

A → B → C → D → B → C → E → D → C → A

만든 경로의 길이27
모든 간선을 덮는가
답과 일치하는가
계산 근거답 = 모든 간선 길이의 합 + 최소 매칭 비용
= 23 + 4 = 27
홀수 차수 정점끼리 짝지어 그 사이 «최단경로»만큼을 덧그리면 모든 차수가 짝수가 되어 오일러 회로가 생깁니다. 위의 순회 경로는 그 다중그래프에서 실제로 만들어 본 것이고, 길이가 답과 같은지·모든 간선을 덮는지를 검산으로 보였습니다.
홀수 차수 정점은 반드시 짝수 개입니다. 모든 차수의 합이 간선 수의 두 배라 짝수이므로, 홀수인 정점이 홀수 개일 수 없습니다. 그래서 짝짓기가 «늘» 가능하고 이 문제가 언제나 풀립니다. 지금은 2개입니다.
외판원 문제와 다릅니다. 외판원은 모든 «지점»을 한 번씩 들르는 문제라 다항시간 해법이 알려져 있지 않지만, 우편배달부는 모든 «길»을 지나는 문제라 최단경로 + 최소 매칭으로 다항시간에 풀립니다. 같은 「최소 순회」로 보여도 무엇을 덮느냐에 따라 난이도가 갈립니다.
매칭은 전수로 셌습니다. 홀수 정점이 2k개면 짝짓는 방법이 (2k−1)!!가지라, 4개면 3가지·6개면 15가지·10개면 945가지입니다. 일반 그래프의 최소 완전매칭은 블로섬 알고리즘으로 다항시간에 풀리지만 구현이 만만치 않아, 여기서는 12개까지를 전수로 확실하게 셉니다.
방향이 있는 길은 다루지 않습니다. 일방통행이 섞여 있으면 같은 문제가 아니라 최소비용흐름으로 풀어야 합니다. 여기서는 모든 간선을 양쪽 어느 방향으로든 지날 수 있다고 봅니다. 그래프가 끊겨 있으면 답이 없으므로 한 덩어리여야 합니다.

사용 방법

  1. 1간선을 줄마다 「정점 정점 길이」로 넣습니다.
  2. 2차수 표에서 홀수인 정점을 확인합니다. 반드시 짝수 개입니다.
  3. 3어떤 쌍을 어떤 경로로 덧그렸는지 봅니다.
  4. 4만든 순회 경로의 길이가 답과 같은지로 검산합니다.

자주 묻는 질문

모든 간선(길)을 적어도 한 번 지나 출발점으로 돌아오는 가장 짧은 경로를 찾는 문제입니다. 우체부가 담당 구역의 모든 길을 지나야 하는 상황에서 이름이 붙었고, 제설차 경로·검침 경로·도로 점검 경로가 같은 문제입니다.

외판원은 모든 「지점」을 한 번씩 들르는 문제이고, 우편배달부는 모든 「길」을 지나는 문제입니다. 그리고 결정적으로 우편배달부는 다항시간에 풀립니다. 최단경로를 구해 두고 홀수 차수 정점의 최소 매칭만 찾으면 되기 때문입니다.

모든 간선을 정확히 한 번씩 지나 제자리로 오는 오일러 회로는 모든 정점의 차수가 짝수일 때만 있기 때문입니다. 어떤 정점에 들어갔으면 나와야 하므로 붙은 간선이 짝을 이루어야 합니다. 그래서 홀수인 정점만 골라 간선을 덧그려 짝수로 만드는 것이 이 문제의 전부입니다.

그런 일은 일어나지 않습니다. 모든 차수의 합이 간선 수의 두 배라 짝수이므로, 홀수인 정점이 홀수 개일 수 없습니다. 그래서 짝짓기가 언제나 가능하고 이 문제는 항상 답이 있습니다(그래프가 한 덩어리이기만 하면).

간선 길이의 합이 그대로 답입니다. 덧그릴 것이 없고 오일러 회로가 이미 있습니다. 이 경계를 먼저 확인하는 것이 좋습니다.

두 홀수 정점을 짝지어 그 사이를 이을 때 가장 싸게 잇는 방법이 최단경로이기 때문입니다. 그래서 모든 정점 쌍의 최단거리를 플로이드–워셜로 구해 두고 그 위에서 매칭만 찾으면 됩니다. 직통 간선이 있어도 우회가 짧으면 우회를 씁니다.

이 계산기는 12개까지 다룹니다. 짝짓는 방법이 (2k−1)!!가지라 12개면 10,395가지를 전수로 셉니다. 그보다 많으면 블로섬 알고리즘 같은 다항시간 매칭이 필요합니다. 실제 우편 구역에서 홀수 교차로가 그보다 많은 일은 드뭅니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 방향이 있는 간선(일방통행)은 다루지 않습니다. 그 경우는 최소비용흐름으로 풀어야 합니다.
  • 그래프가 끊겨 있으면 답이 없습니다. 한 덩어리여야 합니다.
  • 자기 자신으로 가는 고리는 다루지 않습니다.
  • 홀수 차수 정점은 12개까지 전수 탐색합니다.
  • 만든 순회 경로가 모든 간선을 덮는지, 길이가 답과 같은지를 함께 검산해 보입니다.
  • 같은 최소 길이를 내는 순회 경로가 여럿일 수 있습니다. 그중 하나를 보여 줍니다.
  • 정점 40개·간선 200개까지 다룹니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.