logo

하벨-하키미 알고리즘 증명 📂그래프이론

하벨-하키미 알고리즘 증명

정리

증가하지 않는 시퀀스 D=(d1,,dn)D = (d_{1} , \cdots , d_{n}) 가 주어져있다고 하자. DD그래픽하다면 다음과 같은 방법으로 DD 의 실현 GG 를 찾을 수 있다.

  • Step 1.
    nn 개의 버텍스 v1,,vnv_{1} , \cdots , v_{n} 를 가지는 널 그래프를 만든다.
  • Step 2. k=1,,nk = 1, \cdots , n
    • Step 2-1.
      vkv_{k}vk+1,,vdk+1v_{k+1} , \cdots , v_{d_{k} + 1} 를 잇는다.
    • Step 2-2.
      dk+1,,ddk+1d_{k+1} , \cdots , d_{d_{k}+1}11 씩 감소시킨다.
    • Step 2-3.
      dk0d_{k} \gets 0 와 같이 대입한다. D=(0,,0)D = (0,\cdots , 0) 이 될때까지 Step 2.를 반복한다.

DD그래픽하다면 차수가 d1d_{1}v1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} 과 인접한 실현 GG 가 존재한다.

설명

하벨-하키미 알고리즘에르되시-갈라이 정리가 그 존재성을 보장하는 실현을 구체적으로 찾는 알고리즘이다. 그 원리는 단순히 덩치가 큰―제일 차수가 높은 버텍스부터 처리해서 자잘자잘하게 남는 것이 없도록 하는 것 뿐이다. 차수를 먼저 주고나서 그래프를 구축한다는 점에서 랜덤 그래프의 차수가 어떤 분포를 따르게끔 구축하는데에 곧바로 쓰일 수 있다.

20200319\_004730.png 가령 (5,5,5,3,2,2,1,1)(5,5,5,3,2,2,1,1) 과 같은 시퀀스가 있다면 하벨-하키미 알고리즘으로 얻을 수 있는 실현은 위와 같다. 시간이 여유롭다면 에르되시-갈라이 정리를 이용해 그래픽한 시퀀스를 만들어보고 하벨-하키미 알고리즘 없이 노가다로 실현을 찾아보는 것을 추천한다. 이 방법이 얼마나 유용한지 알 수 있을 것이다.

증명

DD 가 업데이트 될 때마다 차수의 최대값은 점점 작아진다. 각 단계에서 차수가 최대값인 노드 vkv_{k}vk+1,,vdk+1v_{k+1} , \cdots , v_{d_{k} + 1} 와 인접하면 되고, 차수가 d1d_{1} 인 첫 버텍스 v1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} 와 인접한 것만을 보이면 수학적 귀납법에 의해 증명이 끝난다.

DD 의 임의의 실현 RR 의 버텍스들이 deg(vi)=di\deg (v_{i}) = d_{i} 를 만족한다고 하고 다음과 같이 두 집합을 정의하자. TR:={v2,,vd1+1}NR(v1):={vV(R):vv1E(R)} T_{R} := \left\{ v_{2} , \cdots , v_{d_{1} + 1} \right\} \\ N_{R}(v_{1}) := \left\{ v \in V(R) : vv_{1} \in E(R) \right\} 정의에서 TRT_{R} 는 시퀀스 DDv1v_{1} 이후 d1d_{1} 개만큼의 버텍스를 모아놓은 집합이고, NR(v1)N_{R}(v_{1})v1v_{1}네이버후드, 즉 RR 에서 실제로 v1v_{1} 와 인접한 버텍스들의 집합이다. 이에 대해 다음과 같은 정수 tRt_{R} 를 생각해보자. tR:=NR(v1)TR t_{R} := \left| N_{R} (v_{1}) \cap T_{R} \right| 이제 GGDD 의 실현들 중 tGt_{G} 를 가장 최대화하는 실현임을 보여야한다. 이는 다시 말해 TG=NG(v1)T_{G} = N_{G}(v_{1})tG=d1t_{G} = d_{1} 을 만족해서 차수가 d1d_{1}v1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} 과 인접하다는 것이다. 만약 tG=d1t_{G} = d_{1} 이면 당연히 TG=NG(v1)T_{G} = N_{G}(v_{1}) 이므로 GGtGt_{G} 를 최대화하는 실현이 되어 더 이상 보일 것이 없다. 이제 tG<d1t_{G} < d_{1} 인 경우를 가정해보자. 만약 tG=tG+1t_{G'} = t_{G} + 1 가 되게끔 하는 DD 의 또 다른 실현 GG' 이 존재한다면20200321\_150533.png

tG<d1t_{G'}<d_{1} 인 경우 v1v_{1} 은 어떤 vxTGv_{x} \in T_{G'} 와 인접하지 않는 대신 어떤 vyTGcv_{y} \in T_{G'}^{c} 와 인접해야한다. 위 그림에서 적색 점선은 GG 에서는 존재하는 에지지만 GG' 에선 지워진 에지고, 적색 실선은 그 대신 v1v_{1} 의 차수가 일정해야하므로 새롭게 만들어진 에지다.

20200321\_150546.png

v1v_{1} 과 마찬가지로 vxv_{x}vyv_{y} 의 차수도 유지되어야하므로, 원래 GG 에서는 vxv_{x} 와 인접하지 않았고 vyv_{y} 와 인접했던 vzv_{z} 를 하나 골라서 vxvzv_{x} v_{z} 를 추가하고 vyvzv_{y} v_{z} 를 지운다. 이렇게 되면 원래의 디그리 시퀀스 DD 는 전혀 달라지지 않고, GG'DD 의 실현이라고 할 수 있다. 그러나 GG'TGT_{G'} 에서 vxv_{x} 하나가 빠졌고 NG(v1)N_{G'}(v_{1})vyv_{y} 하나가 추가 되었으므로 tGt_{G'} 는 오히려 tGt_{G} 보다 작아졌다. 이는 tG=tG+1t_{G'} = t_{G} + 1 를 만족시키는 실현 GG' 의 존재성에 모순이고, 따라서 tG=d1t_{G} = d_{1} 이어야한다. 다시 말해, 실현 GGv1v_{1}v2,,vd1+1v_{2} , \cdots , v_{d_{1} + 1} 과 인접하다.