완전 구간 토너먼트 재구성: 점수열 존재조건과 효율적 알고리즘

읽는 시간: 5 분
...

📝 Abstract

Let $a, b$ and $n$ be nonnegative integers $(b \geq a, \ b > 0, \ n \geq 1) $, $\mathcal{G}_n(a,b)$ be a multigraph on $n$ vertices in which any pair of vertices is connected with at least $a$ and at most $b$ edges and \textbf{v =} $(v_1, v_2, ..., v_n)$ be a vector containing $n$ nonnegative integers. We give a necessary and sufficient condition for the existence of such orientation of the edges of $\mathcal{G}_n(a,b) $, that the resulted out-degree vector equals to \textbf{v}. We describe a reconstruction algorithm. In worst case checking of \textbf{v} requires $\Theta(n)$ time and the reconstruction algorithm works in $O(bn^3)$ time. Theorems of H. G. Landau (1953) and J. W. Moon (1963) on the score sequences of tournaments are special cases $b = a = 1$ resp. $b = a \geq 1$ of our result.

💡 Analysis

**

1. 연구 배경 및 동기

  • 점수열(Score Sequence) 은 토너먼트(또는 경기 결과)를 정량적으로 표현하는 핵심 개념이며, 순위 매김, 비교 기반 의사결정 등에 널리 활용된다.
  • 기존 연구(Landau, Moon)는 단일 토너먼트((a=b=1))와 동일 간선 수를 갖는 다중 토너먼트((a=b\ge1))에 대해서만 점수열 존재조건을 제시했다.
  • 실제 응용에서는 경기당 배분되는 점수가 범위 (

📄 Content

Acta Univ. Sapientiae, Informatica, 1, 1 (2009) 71–88
완전 구간 토너먼트의 재구성

Antal Iv´anyi
Eötvös Loránd University, Computer Algebra Department
1117 Budapest, Pázmány Péter sétány 1/C.
이메일: tony@compalg.inf.elte.hu


초록

정수 (a, b, n)이 비음수이며 (b\ge a,; b>0,; n\ge 1)이라고 하자.
(G_n(a,b))를 정점이 (n)개인 다중 그래프라 하자. 이 그래프에서는 임의의 두 정점 사이에 최소 (a)개, 최대 (b)개의 간선이 존재한다.
(v=(v_1,v_2,\dots ,v_n))을 비음수 정수들로 이루어진 벡터라 하면, 우리는 다음과 같은 필요충분조건을 제시한다.
(G_n(a,b))의 모든 간선을 방향을 부여했을 때, 그 결과로 얻어지는 출도(out‑degree) 벡터가 정확히 (v)가 되도록 할 수 있는지 여부이다.
또한, 이를 실제로 재구성하는 알고리즘을 제시한다. 최악의 경우 입력 벡터 (v)를 검증하는 데는 (\Theta(n)) 시간이 필요하고, 재구성 알고리즘은 (O(bn^{3})) 시간 안에 동작한다.
H. G. Landau(1953)와 J. W. Moon(1963)의 “토너먼트 점수열 정리”는 각각 (b=a=1) 및 (b=a\ge 1)인 특수 경우에 해당한다.


1. 서론

객체들의 순위를 매기는 문제는 실무에서 매우 흔히 나타난다. 가장 널리 쓰이는 방법 중 하나는 **쌍대 비교(pairwise comparison)**이다.
비교 결과를 “점수” 형태로 나누어 표현한다면, **방향 그래프(directed graph)**가 자연스러운 모델이 된다. 정점은 객체를, 호(arc)는 점수를, 그리고 각 정점의 **출도(out‑degree)**는 순위 산정의 근거가 된다. 또 다른 자연스러운 표현은 **점수표(score table)**이다.

본 논문에서는 D. E. Knuth[9]의 용어와 T. H. Cormen 등[2]의 의사코드를 그대로 사용한다.

  • AMS 2000 분류: 05C20, 68C25
  • CR 분류: F.2 [Theory of Computation] – 알고리즘 분석 및 문제 복잡도
  • 핵심어: 점수열(score sequences), 토너먼트(tournaments), 알고리즘 효율성(efficiency of algorithms)

2. 구간 토너먼트와 점수벡터

정수 (a,b,n)이 비음수이며 (b\ge a,; n\ge 1)이라고 하자.
(T_n(a,b))를 정점이 (n)개인 방향 다중 그래프라 하자. 이 그래프에서는 임의의 두 정점 사이에 최소 (a)개, 최대 (b)개의 호가 존재한다.

  • 구간 토너먼트(interval (a,b)-tournament): 위와 같은 그래프
  • 정점은 **선수(player)**라 부른다.
  • 점수벡터(score vector) (v=(v_1,\dots ,v_n))는 각 선수의 출도(out‑degree) 순서열이다.
  • **점수열(score sequence)**은 점수벡터를 비내림차순으로 정렬한 것, 즉 (s=(s_1\le s_2\le\cdots\le s_n))이다.

점수의 배분이 자유로운 경우 토너먼트를 **완전(complete)**이라 하고, 제한이 있으면 **불완전(incomplete)**이라 한다[7].

특수 경우:

  • (a=b\ge 1)이면 **다중 토너먼트(multitournament) (T_n(a))**가 된다.
  • (a=b=1)이면 전통적인 **토너먼트 (T_n)**가 된다.

2.1 Landau와 Moon 정리

1953년 H. G. Landau[10]는 다음 정리를 증명하였다.

정리 1
(0\le s_1\le s_2\le\cdots\le s_n)인 정수열 ((s_1,\dots ,s_n))이 **어떤 토너먼트 (T_n(1))**의 점수열이 되려면 그리고 오직 그때만
[ \sum_{i=1}^{k}s_i;\ge; \binom{k}{2}\qquad (1\le k\le n) ] 이며, (k=n)일 때는 등호가 성립한다.

1963년 J. W. Moon[11]은 이를 다음과 같이 일반화하였다.

정리 2
(0\le s_1\le s_2\le\cdots\le s_n)인 정수열 ((s_1,\dots ,s_n))이 **(a)-토너먼트 (T_n(a))**의 점수열이 되려면 그리고 오직 그때만
[ \sum_{i=1}^{k}s_i;\ge; a\binom{k}{2}\qquad (1\le k\le n) ] 이며, (k=n)일 때는 등호가 성립한다.


3. 필요조건

(B_k=\binom{k}{2})를 이항계수라 하자.

보조정리 1
((s_1,\dots ,s_n))이 ((a,b))-토너먼트 (T_n(a,b))의 점수열이라면
[ \sum_{i=1}^{k}s_i;\ge; aB_k\qquad(1\le k\le n) \tag{3} ] [ \sum_{i=1}^{n}s_i;\le; bB_n \tag{4} ]

위 두 식만으로는 충분하지 않다. 예를 들어 (a=2,;b=10,;s=(1,1,21))은 (3),(4)를 만족하지만 실제로는 존재하지 않는다.

3.1 손실함수(Loss function)

(L_k;(k=0,1,\dots ,n))를 다음 재귀식으로 정의한다.
[ L_0=0,\qquad L_k=\max!\Bigl(L_{k-1},; bB_k-\sum_{i=1}^{k}s_i\Bigr)\quad(1\le k\le n) \tag{5} ]

(L_k)는 선수 (P_1,\dots ,P_k) 사이에서 잃은 점수의 하한을 제공한다(정확한 값은 아닐 수 있다).

보조정리 2
((s_1,\dots ,s_n))이 ((a,b))-토너먼트의 점수열이면
[ \sum_{i=1}^{k}s_i+(n-k)s_k;\le; bB_n-L_k\qquad(1\le k\le n) \tag{6} ]

보조정리 3
위 두 보조정리를 결합하면
[ aB_k;\le;\sum_{i=1}^{k}s_i;\le;bB_k-L_k-(n-k)s_k\qquad(1\le k\le n) \tag{7} ]


4. 알고리즘 개요

다음 세 개의 알고리즘을 제시한다.

알고리즘역할
ScoreCheck보조정리 3을 이용해 입력 점수열이 필요조건을 만족하는지 검사
ScoreSlicingRyser의 구성 방법을 확장한 점수 절단(slicing) 절차
Main위 두 알고리즘을 조합해 전체 토너먼트를 재구성

4.1 ScoreCheck (필요조건 검사)

PSEUDO
ScoreCheck(n, a, b, B, L, s, S)
01 L0 ← 0
02 S0 ← 0
03 B0 ← 0
04 for i ← 1 to n do
05    Si ← Si‑1 + si
06    Bi ← Bi‑1 + i‑1
07    Li ← max(Li‑1, b·Bi – Si)
08    if Si < a·Bi then return i‑th score is too small
09    if Si > b·Bn – Li – si·(n‑i) then return i‑th score is too large
10 return “the sequence satisfies both necessary conditions”
클릭하여 더 보기

시간 복잡도: 최악의 경우 (\Theta(n))
공간 복잡도: (\Theta(n)) (입력 순차적으로 받으면 (O(1)) 메모리만 사용 가능)

4.2 Main (전체 흐름 제어)

PSEUDO
Main(a, b, n, B, L, p, R)
01 for i ← 1 to n do
02    Ri,i ← 0
03    pi ← si
04 if n ≥ 3 then
05    for k ← n downto 3 do
06        ScoreSlicing(a, b, B, L, k, pk‑1, pk)
07        for g ← 1 to k‑1 do
08            Rg,k ← qg
09            Rk,g ← rg
10 r1,2 ← ⌊(p1 + p2)/2⌋
11 r2,1 ← ⌈(p1 + p2)/2⌉
12 return R
클릭하여 더 보기

4.3 ScoreSlicing (점수 절단)

PSEUDO
ScoreSlicing(a, b, B, L, k, pk‑1, pk)
01 p0 ← 0;   P0 ← 0
02 for i ← 1 to k‑1 do
03    Pi ← Pi‑1 + pi
04    Ai ← Pi – a·Bi          // 추가 가능한 점수
05 for g ← 1 to k‑1 do rg,k ← 0; rk,g ← b
06 M ← (k‑1)·b – pk            // Pk가 아직 받아야 할 점수
07 while M > 0 and Ak‑1 > 0
08    x ← k‑1
09    while rx,k = b do x ← x‑1
10    f ← 1
11    while px‑f+1 = px‑f do f ← f+1
12    d ← px‑f+1 – px‑f
13    m ← min(b, d, ⌈Ax/f⌉, ⌈M/f⌉)
14    for g ← f downto 1 do
15        y ← min(b‑rx+1‑g, k, m, M, Ax+1‑g, px+1‑g)
16        rx+1‑g,k ← rx+1‑g,k + y
17        px+1‑g 

<div style="text-align:center; margin:30px 0;">
  <a href="https://arxiv.org/pdf/1003.4016.pdf" target="_blank" style="padding:12px 25px; background:#007bff; color:white; border-radius:8px; text-decoration:none; font-weight:bold;"> ArXiv 원문 보기</a>
</div>

<p style="font-size:0.8em; color:gray;">이 글은 AI가 자동 번역 및 요약한 내용입니다.</p>
클릭하여 더 보기

검색 시작

검색어를 입력하세요

↑↓
ESC
⌘K 단축키