도구스학업·수학

프뤼퍼 수열(트리 ↔ 수열) 변환기

라벨 붙은 트리를 길이 n−2의 수열로 바꾸고 그 수열에서 트리를 그대로 되살립니다. 잎을 하나씩 떼어내는 과정을 표로 보여주고, 여기서 케일리 공식 n^(n−2)가 어떻게 나오는지 확인할 수 있습니다.

「1-2 2-3」처럼 정점 두 개를 짝지어 적습니다. 정점 번호는 1부터 이어져야 하고 60개까지.

프뤼퍼 수열

2 4 4 2 3

정점 7개짜리 트리라 길이는 7 − 2 = 5입니다.

정점 수7개
변 수6개
수열 길이5
되돌려 보면원래 트리 그대로
정점 7개인 라벨 트리의 개수16,807개

잎을 하나씩 떼어내는 과정

차례남은 잎떼어낸 잎수열에 적는 값
11, 5, 6, 712
25, 6, 754
36, 764
44, 742
52, 723

남은 잎 가운데 번호가 가장 작은 것을 고르는 규칙이 있어야 답이 하나로 정해집니다. 아무 잎이나 골라도 트리는 복원되지만, 그러면 같은 트리가 여러 수열로 가서 일대일 대응이 깨집니다.

정점별 차수와 수열에 나온 횟수

정점수열에 나온 횟수차수
101
223
312
423
501
601
701

차수는 언제나 「수열에 나온 횟수 + 1」입니다. 한 번도 안 나온 정점이 곧 잎이고, 이 성질만으로 수열에서 트리를 되살릴 수 있습니다.

여기서 케일리 공식이 곧바로 나옵니다. 수열의 자리는 n − 2개이고 각 자리에는 1부터 n까지 무엇이든 들어갈 수 있으니 수열은 정확히 n^(n−2)가지입니다. 트리와 수열이 일대일로 대응하므로 라벨 붙은 트리도 정확히 그만큼입니다. 정점이 4개면 16개, 10개면 1억 개입니다.
「라벨 붙은」이 중요합니다. 정점에 이름표가 붙어 있어 1–2–3과 2–1–3을 다른 트리로 셉니다. 이름표를 떼고 모양만 보면 개수가 훨씬 줄고, 그쪽은 닫힌 식이 없어 훨씬 어려운 문제가 됩니다.
n = 1은 정의되지 않습니다. 수열의 길이가 −1이 되기 때문입니다. n = 2는 길이 0의 빈 수열이고, 그때 트리는 1–2 하나뿐이라 2^0 = 1과 맞아떨어집니다.

계산 방법

  1. 1「트리 → 수열」에서 변을 1-2 2-3처럼 짝지어 적습니다.
  2. 2잎을 떼어내는 표에서 어느 잎이 언제 사라지는지 확인합니다.
  3. 3정점별 차수가 「수열에 나온 횟수 + 1」과 맞는지 봅니다.
  4. 4「수열 → 트리」로 바꿔 정점 수와 수열을 넣고 트리를 되살립니다.
  5. 5되돌린 결과가 원래와 같은지 확인합니다.

자주 묻는 질문

정점에 1부터 n까지 이름표가 붙은 트리를, 1부터 n 사이의 수 n−2개로 이루어진 수열 하나로 바꾼 것입니다. 남은 잎 가운데 번호가 가장 작은 것을 떼어내며 그 이웃을 적기를 n−2번 되풀이해 만듭니다. 이 대응은 일대일이라 수열에서 원래 트리를 그대로 되살릴 수 있습니다.

케일리 공식이 이 대응에서 곧바로 나옵니다. 수열의 자리는 n−2개이고 각 자리에 1부터 n까지 무엇이든 자유롭게 들어가므로 수열은 정확히 n^(n−2)가지입니다. 트리와 수열이 일대일이니 라벨 붙은 트리도 정확히 n^(n−2)개입니다. 정점이 4개면 16개, 10개면 1억 개입니다.

정점 v의 차수가 「수열에 v가 나온 횟수 + 1」이라는 성질을 씁니다. 한 번도 안 나온 정점이 곧 잎이므로, 수열을 앞에서부터 읽으며 아직 안 쓴 잎 가운데 가장 작은 것을 그 값에 이어 붙입니다. 수열을 다 읽으면 차수가 남은 정점이 정확히 둘이고 그 둘을 이으면 끝납니다.

답을 하나로 정하기 위해서입니다. 아무 잎이나 골라도 트리는 복원되지만, 그러면 같은 트리가 여러 수열로 갈 수 있어 일대일 대응이 깨집니다. 대응이 일대일이어야 개수를 세는 데 쓸 수 있으므로 규칙이 필요합니다.

n = 1이면 수열의 길이가 −1이 되어 정의되지 않습니다. n = 2는 길이 0의 빈 수열이고, 그때 트리는 1–2 하나뿐이라 2^0 = 1과 맞아떨어집니다. 그래서 이 도구는 정점 수를 따로 받아 빈 수열이 「입력을 안 한 것」과 헷갈리지 않게 했습니다.

정점에 이름표가 붙어 있어 1–2–3과 2–1–3을 서로 다른 트리로 세기 때문입니다. 이름표를 떼고 모양만 같으면 하나로 세는 「비라벨 트리」는 개수가 훨씬 적고, 닫힌 식이 없어 훨씬 어려운 문제가 됩니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고, 입력한 트리와 수열은 이 기기에만 남습니다.

알아두면 좋은 점

  • 정답지는 왕복이 항등인지입니다. 무작위 트리 800개에서 트리 → 수열 → 트리가 원래 변 집합 그대로 돌아오는 것, 무작위 수열 800개에서 수열 → 트리 → 수열이 그대로 돌아오는 것을 확인했습니다.
  • 케일리 공식은 말로만 적지 않고 전수 열거로 확인했습니다. n = 2~6에서 길이 n−2의 모든 수열을 훑어, 나온 트리가 모두 서로 다르고 개수가 정확히 n^(n−2)인 것을 대조했습니다(n = 6이면 1,296가지).
  • 되살린 것이 정말 트리인지는 분리 집합으로 따로 검사합니다. 변이 n−1개이고 사이클이 없는지를 프뤼퍼 코드와 무관한 방법으로 확인한 것입니다.
  • 차수가 「수열에 나온 횟수 + 1」인 것을 무작위 트리 400개에서 모든 정점에 대해 검사했습니다.
  • 만드는 걸음이 언제나 남은 잎 가운데 가장 작은 것을 고르는지도 검사합니다. 이 규칙이 깨지면 대응이 일대일이 아니게 됩니다.
  • 변은 구분자를 가리지 않고 읽습니다. 「1-2 2-3」과 「1 2, 2 3」이 같습니다. 정점 번호는 1부터 빠짐없이 이어져야 하고, 끊어졌거나 사이클이 있으면 어디가 문제인지 알려 줍니다.
  • 정점은 60개까지 다룹니다.

함께 보면 좋은 도구

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