Maintaining Leiden Communities in Large Dynamic Graphs

이 논문은 대규모 동적 그래프에서 기존 Leiden 알고리즘의 비효율적인 전체 재계산을 해결하고, 계층적 증분 트리 구조를 활용한 새로운 HIT-Leiden 알고리즘을 제안하여 기존 방법 대비 최대 5 개 차수의 속도 향상과 동등한 커뮤니티 품질을 달성함을 보여줍니다.

Chunxu Lin, Yumao Xie, Yixiang Fang, Yongmin Hu, Yingqian Hu, Chen Cheng

게시일 2026-03-05
📖 3 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

이 논문은 **"거대한 소셜 네트워크나 금융 거래 데이터 같은 거대한 '지도'가 매일매일 변할 때, 그 안에 있는 '친구 그룹'이나 '사기 집단'을 어떻게 빠르고 정확하게 찾아낼 것인가?"**라는 문제를 해결하는 방법을 소개합니다.

비유를 들어 쉽게 설명해 드릴게요.

1. 배경: 거대한 도시와 변하는 길

생각해 보세요. ByteDance(틱톡, 토타오 등) 같은 거대한 회사는 매일 **수십억 개의 사람 (정점)**과 **수천억 개의 관계 (간선)**로 이루어진 거대한 도시를 가지고 있습니다.

  • 목적: 이 도시에서 서로 밀접하게 연결된 '마을 (커뮤니티)'을 찾아야 합니다. 예를 들어, 사기꾼들이 뭉쳐 있는 '사기 마을'을 찾거나, 취향이 비슷한 '추천 그룹'을 만드는 데 쓰입니다.
  • 문제: 이 도시는 멈추지 않고 변합니다. 새로운 길이 생기고, 다리가 무너지고, 사람들이 이사를 갑니다.
    • 기존 방식 (Leiden 알고리즘) 은 이 마을을 찾을 때, 도시 전체를 다시 한 번 다 걷고 지도를 다시 그리는 방식입니다.
    • 하지만 도시는 매일 변하는데, 지도를 다시 그리려면 몇 시간이나 걸립니다. 사기꾼이 오늘 새로 뭉쳤는데, 우리가 지도를 다시 그리는 동안 사기를 치고 사라지면 어떡하죠? 너무 느립니다.

2. 기존 방식의 한계: "작은 변화에도 전체를 다시 그리는 바보"

기존의 'Leiden' 알고리즘은 아주 정교하게 마을을 찾아내지만, 변화가 조금만 생겨도 전체를 다시 계산합니다.

  • 비유: 도시의 한 구석에 작은 공터가 생겼을 뿐인데, 도시 전체의 모든 도로를 다시 측량하고 모든 마을의 경계를 다시 그리는 것과 같습니다.
  • 결과: 업데이트가 잦을수록 계산량이 폭발해서, 사실상 처음부터 다시 시작하는 것과 다를 바가 없습니다.

3. 새로운 해결책: HIT-Leiden (지혜로운 관리자)

이 논문에서 제안한 HIT-Leiden은 "전체를 다시 그릴 필요 없이, 변한 부분만 똑똑하게 수정하는 방법"입니다.

핵심 아이디어 1: "나무 구조"를 이용하다

Leiden 알고리즘은 마을을 찾을 때, 작은 마을을 합쳐서 큰 마을로, 또 더 큰 마을로 만드는 계단식 (위계적) 구조를 만듭니다.

  • 비유: 마치 나무처럼, 작은 나뭇잎 (개인) 이 모여 가지를 이루고, 가지가 모여 줄기가 되는 구조입니다.
  • HIT-Leiden은 이 나무 구조를 기억해 둡니다. 그래서 어떤 잎이 떨어지거나 새로운 잎이 붙으면, 그 잎이 속한 가지와 줄기만 살짝 수정하면 됩니다. 전체 나무를 다시 심을 필요가 없습니다.

핵심 아이디어 2: "영향받은 구역"만 다스리다

변화가 생겼을 때, 그 영향이 어디까지 미칠지 미리 계산합니다.

  • 비유: 도시 한 구석에 도로가 끊겼다면, 그 도로를 이용하는 인근 마을들만 재배치하면 됩니다. 도시 반대편에 사는 사람들은 전혀 영향을 받지 않으므로 건드리지 않습니다.
  • 이 논문은 "어떤 변화가 일어났을 때, 정말로 바뀌어야 하는 사람과 마을은 어디인가?"를 수학적으로 증명하여, 불필요한 계산을 100% 제거했습니다.

4. HIT-Leiden 의 세 가지 단계 (스마트한 수리 과정)

이 알고리즘은 세 가지 단계로 이루어져 있습니다.

  1. 이동 (Inc-movement): 변한 도로를 보고, 가장 효율적인 마을로 사람을 옮깁니다. (단, 영향을 받은 사람만 옮깁니다.)
  2. 정리 (Inc-refinement): 마을이 두 동강 나거나 연결이 끊어지지 않도록, 연결된 작은 마을들을 다시 정리합니다. (이전 방식은 이 부분에서 전체를 다시 계산했지만, 여기서는 끊어진 부분만 이어 붙입니다.)
  3. 합산 (Inc-aggregation): 작은 마을들이 합쳐져 큰 마을이 될 때, 그 변화가 상위 지도에 어떻게 반영될지 계산합니다.

5. 실제 성과: "비행기 vs 기차"

실험 결과, 이 새로운 방식 (HIT-Leiden) 은 기존 방식보다 최대 10 만 배 (5 개의 0) 더 빨랐습니다.

  • 비유: 기존 방식이 기차를 타고 전 노선을 다시 달리는 것이라면, HIT-Leiden은 헬리콥터로 변한 구간만 날아가서 바로 수리하는 것입니다.
  • 품질: 속도가 10 만 배 빨라졌지만, 찾아낸 '마을'의 질 (정확도) 은 기존 방식과 똑같이 훌륭했습니다.
  • 실제 적용: 이미 ByteDance 에서 실제 서비스 (사기 탐지, 추천 시스템 등) 에 적용되어, 수천만 건의 데이터가 매일 변해도 몇 분 안에 최신 상태를 유지하고 있습니다.

요약

이 논문은 **"거대한 데이터가 매일 변할 때, 무식하게 전체를 다시 계산하지 말고, 변한 부분만 똑똑하게 수정하는 '지혜로운 관리 시스템'을 만들었다"**는 이야기입니다.

이 덕분에 우리는 실시간으로 변하는 세상에서, 사기꾼을 바로 잡거나 내 취향에 맞는 콘텐츠를 더 빠르게 찾아낼 수 있게 되었습니다.