Основні поняття
k-포레스트 문제를 O(k^3 min{kn, m} log^2 n + k · MAXFLOW(m, m) log n) 시간 복잡도로 해결할 수 있는 알고리즘을 제시한다. 이는 기존 접근법의 O_k(n^{3/2}) 복잡도 장벽을 돌파한다.
Анотація
이 논문은 k-포레스트 문제를 효율적으로 해결하는 새로운 알고리즘을 제안한다. k-포레스트 문제는 그래프 G에서 k개의 서로 disjoint인 포레스트를 찾아 그 합집합의 크기를 최대화하는 문제이다.
저자들은 세 가지 하위 루틴을 활용하여 O(k^3 min{kn, m} log^2 n + k · MAXFLOW(m, m) log n) 시간 복잡도로 문제를 해결한다. 이는 기존 접근법의 O_k(n^{3/2}) 복잡도 장벽을 돌파한다.
- 제한된 진입차수를 가진 방향성 k-포레스트 문제
- k-의사포레스트 문제
- 상위 클럼프 계산
이 알고리즘은 다음과 같은 과정으로 진행된다:
- 현재 해답 F에 대해 진입차수 제한 하에서 최적의 포레스트 F1, ..., Fk를 찾는다.
- F를 확장하여 진입차수 제한 하에서 최대가 되는 부그래프 P를 찾는다.
- P에서 다시 최적의 포레스트 F1, ..., Fk를 찾는다.
- F의 상위 클럼프를 찾아 이를 축약하고 재귀적으로 문제를 해결한다.
- 축약된 부분을 다시 펼쳐 최종 해답을 구한다.
이 과정을 통해 복잡도 장벽을 돌파할 수 있다.
Статистика
그래프 G의 정점 수 n과 간선 수 m은 O(n)의 관계를 가진다.
제한된 진입차수 하의 k-포레스트 문제는 O(k^2m log n) 시간에 해결할 수 있다.
의사포레스트 문제는 O(MAXFLOW(m, m)) 시간에 해결할 수 있다.
상위 클럼프 계산은 O(kn log n) 시간에 수행할 수 있다.
Цитати
"k-포레스트 문제는 그래프 G에서 k개의 서로 disjoint인 포레스트를 찾아 그 합집합의 크기를 최대화하는 문제이다."
"우리는 세 가지 하위 루틴을 활용하여 O(k^3 min{kn, m} log^2 n + k · MAXFLOW(m, m) log n) 시간 복잡도로 문제를 해결한다."
"이는 기존 접근법의 O_k(n^{3/2}) 복잡도 장벽을 돌파한다."