QUICK REVIEW
[논문 리뷰] Fast Generation of Big Random Binary Trees
William B. Langdon|arXiv (Cornell University)|2020. 01. 13.
Evolutionary Algorithms and Applications참고 문헌 16인용 수 4
한 줄 요약
이 논문은 3.60GHz CPU에서 매초 1,800만 개 이상의 노드를 생성할 수 있는 선형 시간 및 공간 복잡도를 갖는 고도로 최적화된 C++ 구현인 random_tree()를 제시한다. 이 알고리즘은 Knuth의 셔플을 사용해 노드와 리프의 순서를 무작위화한 후, 격자 경로 재정렬을 통해 유효한 이진 트리로 매핑함으로써, 유전적 프로그래밍 실험을 위한 최대 10억 노드의 트리를 효율적으로 생성할 수 있다.
ABSTRACT
random_tree() is a linear time and space C++ implementation able to create trees of up to a billion nodes for genetic programming and genetic improvement experiments. A 3.60GHz CPU can generate more than 18 million random nodes for GP program trees per second.
연구 동기 및 목표
- 유전적 프로그래밍(GP) 실험에서 매우 큰 트리로 확장할 때 기존의 무작위 트리 생성 방법의 비효율성을 해결하기 위해.
- 극도의 진화적 실행 조건에서 GP 시스템을 테스트하기 위해 최대 10억 노드까지의 초거대 무작위 트리를 생성할 수 있도록 하기 위해.
- 현대의 병렬 하드웨어를 고려해 대규모 GP 및 유전적 개선 작업 워크로드에 최적화된 트리 생성 성능을 향상시키기 위해.
- 초기 집단 생성 및 서브트리 변형 작업 모두에서 계산 효율성을 유지하면서 트리 공간의 균일한 샘플링을 보장하기 위해.
제안 방법
- n+1개의 리프와 n개의 이진 함수로 이루어진 결정론적 목록을 무작위로 재배열하기 위해 Knuth의 Fisher-Yates 셔플을 사용한다.
- 스택 깊이 제약을 위반하지 않도록 하기 위해, 무작위 순서를 유효한 이진 트리로 변환하기 위해 격자 경로 재정렬을 적용한다.
- Iba의 선형 시간 알고리즘을 활용해 재정렬된 순서를 n개의 내부 노드와 n+1개의 리프를 갖는 완전 이진 트리로 매핑한다.
- GPquick SETNODE 매크로를 순차적으로 사용해 노드를 할당함으로써 최종 GP 프로그램을 생성한다. 이때 리프 또는 이진 함수를 무작위로 선택한다.
- 트리 구축과 레이블링 단계를 분리하여 성능을 최적화했지만, 캐시 효율성을 높이기 위해 이 두 단계를 통합할 수도 있음을 언급한다.
- 가짜 무작위 수 생성을 위해 Park-Miller PRNG를 사용했으며, 시드 공간 제약으로 인한 한계를 인정한다.
실험 결과
연구 질문
- RQ1최대 10억 노드까지의 무작위 이진 트리를 대규모 유전적 프로그래밍 실험을 지원할 수 있을 정도로 효율적으로 생성할 수 있는가?
- RQ2계산 비용이 지나치게 높아지지 않도록 하면서도 스케일링된 환경에서 트리 공간의 균일한 샘플링을 어떻게 달성할 수 있는가?
- RQ3현대 고속 프로세서를 고려해 선형 시간 트리 생성 알고리즘의 아키텍처를 재설계함으로써 어떤 성능 향상을 얻을 수 있는가?
- RQ4큰 무작위 이진 트리의 깊이가 Flajolet과 Odlyzko의 분석에서 이론적으로 예측한 바와 얼마나 부합하는가?
주요 결과
- 새로운 random_tree() 구현은 3.60GHz CPU에서 매초 1,800만 개 이상의 무작위 노드를 생성할 수 있으며, 이는 초거대 트리의 빠른 생성을 가능하게 한다.
- 벤치마킹 결과, 인텔 i7-4790 CPU를 사용한 로그-로그 플롯을 통해 알고리즘이 트리 크기와 선형적으로 확장됨을 확인했다.
- 큰 무작위 이진 트리의 평균 깊이는 이론적 Flajolet 한계인 √(2π|size|)에 매우 가까이 맞추어져 있으며, 32,000개 노드를 초과하는 트리에서는 오차가 2% 미만이다.
- 구현은 32비트 정수 크기 제약으로 인해 약 20억 노드 근처의 트리를 생성하려 할 때 세그먼테이션 장애가 발생한다.
- 시드 공간이 제한된 PRNG를 사용하고 있음에도 불구하고, 일반적인 GP 응용 분야에서는 생성된 트리가 충분히 무작위로 보인다.
- 이 방법을 통해 진화된 프로그램을 무작위로 생성된 트리로 대체함으로써, GP 시스템의 초거대 트리에 대한 효율적인 테스트가 가능해진다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.