두 개의 저장 공간을 이용한 미끄러지는 창 집계 알고리즘
1. 이게 뭔가요?
미끄러지는 창 집계란 정해진 시간이나 범위 동안 들어온 데이터에서 최댓값이나 합계 같은 요약 정보를 반복해서 계산하는 방식을 말합니다. 이 글에서 다루는 두 스택 알고리즘은 데이터를 담는 임시 저장 공간 두 개를 활용해, 덧셈처럼 거꾸로 되돌릴 수 없는 연산이나 최솟값 구하기 같은 다양한 요약 계산을 효율적으로 처리할 수 있게 해주는 구조입니다.
2. 왜 화제인가요?
기존의 단순한 방식은 더한 값을 나중에 다시 빼는 연산만 쉽게 처리할 수 있었고, 최솟값이나 소수점 연산처럼 값을 되돌릴 수 없는 경우에는 한 번 들어온 잘못된 값이 창을 벗어나도 영원히 결과에 오염을 남기는 문제가 있었습니다. 새로 소개하는 방식은 창 안에 포함된 데이터만 정확하게 조합하여 계산하므로, 오래된 오류가 계속 쌓이거나 전체 결과로 번져나가는 문제를 근본적으로 막아줍니다.
3. 핵심 내용
글쓴이는 과거에 최솟값과 최댓값을 유지하는 복잡한 알고리즘을 직접 만들었지만, 훨씬 광범위한 집계 문제를 단순하고 효율적으로 해결할 수 있는 두 스택 알고리즘이 이미 존재한다는 사실을 알게 되었습니다. 이 방식은 비어 있는 상태 만들기, 단일 값 처리하기, 두 값을 합치기, 최종 결과 다듬기라는 규칙을 바탕으로 작동합니다. 내부에는 값을 담는 목록과 누적 집계 목록이라는 두 개의 저장 공간을 두고, 윈도우 크기에 따라 주기적으로 데이터를 정리하며 전체적인 작업 처리 속도를 평균적으로 일정하게 유지합니다. 또한 결합 법칙이 성립하지 않거나 연산 순서가 중요한 상황에서도 원래의 데이터 순서를 유지하며 안정적으로 결과를 도출할 수 있습니다.
4. 나에게 어떤 영향이 있나요?
일반 독자의 경우 컴퓨터가 실시간 데이터를 요약할 때 계산이 꼬이지 않도록 만들어주는 기초 기술 중 하나로 이해할 수 있습니다. 소프트웨어 개발자들은 대용량 데이터를 다루는 프로그램이 센서 오차나 잘못된 값으로 인해 흔들리지 않고 안정적으로 작동하도록 코드를 작성할 때 이 방식을 활용할 수 있습니다.