도구스학업·수학

최소 정점 덮개(그리디 vs 최적) 계산기

모든 간선의 양 끝 중 적어도 하나를 고르는 가장 작은 정점 집합을 2-근사·차수 그리디·전수 탐색 최적으로 나란히 냅니다. 차수 그리디에 2-근사 보장이 없다는 것을 실제로 지는 입력으로 보여 줍니다.

줄마다 「정점 정점」 — 지금 8개

최소 정점 덮개

4개

B, C, E, F

최적 (가지치기 분기)4
2-근사6개 · 최적의 1.5
차수 그리디4개 · 최적의 1
정점 · 간선6개 · 8
탐색한 가지 수4

2-근사가 고른 정점 (6개)

A, B, C, D, E, F

차수 그리디가 고른 정점 (4개)

A, B, D, E

최대 독립집합 (덮개의 여집합, 2개)

A, D

2-근사는 왜 두 배를 넘지 않나고른 간선 3개 ≤ 최적 4개 ≤ 넣은 정점 6개 = 고른 간선 × 2아직 덮이지 않은 간선을 아무거나 골라 양 끝을 «둘 다» 넣는 것이 전부입니다. 이렇게 고른 간선들은 서로 끝을 나누지 않는 매칭이고, 어떤 덮개든 그 간선마다 적어도 한 끝을 넣어야 하므로 최적해가 그 개수보다 작을 수 없습니다. 넣은 정점은 그 두 배이니 자동으로 2배 안에 듭니다.
차수 그리디는 「대개 낫지만」 보장이 없습니다. 가장 많은 간선을 덮는 정점부터 고르는 쪽이 훨씬 똑똑해 보이고 실제로 대개 더 작은 답을 냅니다. 그런데 최적의 Θ(log n)배까지 벌어지는 입력이 있어서 상수배 보장이 없습니다. 위의 「그리디가 지는 입력」 단추를 눌러 보세요 — 최적 16, 2-근사 32, 그리디 34로 그리디가 2-근사에게도 집니다. 최악을 걱정해야 하는 자리에서는 보장이 있는 쪽을 씁니다.
이분그래프가 아닙니다. 홀수 길이의 고리가 있으면 두 색으로 칠할 수 없습니다. 이분그래프였다면 쾨니그 정리로 최소 덮개가 최대 매칭과 같아 다항시간에 풀렸겠지만, 일반 그래프에서는 NP-완전이라 여기서도 가지치기 분기로 찾습니다.
덮개의 여집합은 독립집합입니다. 모든 간선이 덮개에 한 끝을 걸치고 있으므로, 덮개에 없는 정점끼리는 간선으로 이어질 수 없습니다. 그래서 최소 덮개를 찾는 것과 최대 독립집합을 찾는 것이 같은 문제이고, 지금은 4 + 2 = 6입니다.
NP-완전이라 큰 그래프는 못 풉니다. 이 계산기는 정점 60개·간선 400개까지 가지치기 분기로 최적해를 찾습니다. 그보다 큰 문제에서는 최적해를 포기하고 근사를 쓰는데, 그때 「어느 근사가 얼마나 믿을 만한가」를 아는 것이 이 도구의 목적입니다. 참고로 정점 덮개는 P ≠ NP라면 1.36배보다 잘 근사할 수 없다는 것이 알려져 있습니다.

계산 방법

  1. 1간선을 줄마다 「정점 정점」으로 넣습니다.
  2. 2세 방법의 결과 크기를 견줍니다. 2-근사의 비는 반드시 2 이하입니다.
  3. 3「그리디가 지는 입력」 단추로 그리디에 보장이 없다는 것을 확인합니다.
  4. 4이분그래프면 최대 매칭과 최적해가 같은지(쾨니그 정리) 봅니다.

자주 묻는 질문

모든 간선의 양 끝 중 적어도 하나를 포함하는 정점 집합입니다. 교차로에 CCTV를 놓아 모든 길을 감시하거나, 테스트 케이스로 모든 상호작용을 덮는 문제가 이것입니다. 가장 작은 것을 찾는 문제는 NP-완전입니다.

아직 덮이지 않은 간선을 아무거나 하나 골라 양 끝을 둘 다 넣고, 덮인 간선을 지우기를 되풀이합니다. 이렇게 고른 간선들은 서로 끝을 나누지 않는 매칭이라 어떤 덮개든 그 개수 이상이어야 하고, 우리가 넣은 정점은 그 두 배이므로 최적의 2배를 넘지 않습니다.

대개는 더 작은 답을 내지만 보장이 없습니다. 최적의 Θ(log n)배까지 벌어지는 입력을 만들 수 있어서, 2-근사 보장선인 2배를 넘어섭니다. 이 계산기의 「그리디가 지는 입력」 예제에서는 최적 16, 2-근사 32, 그리디 34로 그리디가 2-근사에게도 집니다.

최악을 걱정해야 하면 2-근사를, 평균이 중요하면 차수 그리디를 씁니다. 「보장이 있다」와 「대개 낫다」는 다른 말입니다. 두 결과를 모두 구해 작은 쪽을 취하면 2배 보장은 그대로 유지하면서 평균도 좋아집니다.

쾨니그 정리로 최소 정점 덮개의 크기가 최대 매칭의 크기와 같아지기 때문입니다. 매칭은 다항시간에 구할 수 있으므로 이분그래프에서는 이 문제가 NP-완전이 아닙니다. 홀수 길이의 고리가 하나라도 있으면 이분그래프가 아니고 이 성질이 깨집니다.

최소 정점 덮개의 여집합이 곧 최대 독립집합입니다. 모든 간선이 덮개에 한 끝을 걸치고 있으므로, 덮개에 없는 정점끼리는 간선으로 이어질 수 없기 때문입니다. 둘을 더하면 정점 수가 됩니다.

가지치기 분기로 찾습니다. 남은 간선 중 차수가 가장 큰 정점을 골라 「넣는다」와 「넣지 않는다(그러면 이웃을 모두 넣어야 한다)」로 나눠 재귀하고, 지금까지 찾은 최선보다 커지면 그 가지를 버립니다. 정점 60개까지는 이것으로 빠르게 끝납니다.

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

알아두면 좋은 점

  • NP-완전 문제입니다. 정점 60개·간선 400개까지만 최적해를 찾습니다.
  • 차수 그리디에는 상수배 보장이 없습니다. 최적의 Θ(log n)배까지 벌어집니다.
  • 2-근사의 비는 어떤 입력에서도 2를 넘지 않습니다.
  • 쾨니그 정리는 이분그래프에서만 성립합니다. 홀수 고리가 있으면 깨집니다.
  • 같은 크기의 최소 덮개가 여럿일 수 있습니다. 그중 하나를 보여 줍니다.
  • 방향이 있는 간선과 고리는 다루지 않습니다. 같은 간선이 두 번 나오면 한 번으로 봅니다.
  • P ≠ NP라면 1.36배보다 잘 근사하는 다항시간 알고리즘은 없다고 알려져 있습니다.

함께 보면 좋은 도구

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