슬라이딩 윈도우 기법 (Sliding Window Technique)

컴퓨터과학·AI
한 줄 정의: 배열이나 문자열 위에서 일정한 크기(또는 조건에 따라 늘었다 줄었다 하는) 구간을 창(윈도우)처럼 옮겨가며, 매번 처음부터 다시 계산하지 않고도 부분 구간의 값을 효율적으로 구하는 기법입니다.

쉽게 풀면

기차 창밖 풍경을 볼 때, 우리는 매 순간 전체 풍경을 새로 보는 게 아니라 창틀이라는 고정된 틀 안으로 들어오고 나가는 풍경만 갱신해서 봅니다. 슬라이딩 윈도우 기법도 같은 원리입니다. 예를 들어 "연속된 5일간 매출 합계 중 최댓값"을 구한다고 할 때, 순진하게 풀면 매번 5일치를 처음부터 다시 더해야 합니다. 하지만 윈도우를 하루씩 오른쪽으로 옮길 때 "맨 앞에서 빠지는 하루"를 빼고 "새로 들어오는 하루"만 더하면, 매번 전체를 다시 계산하지 않고도 답을 구할 수 있습니다. 이렇게 창을 조금씩 이동시키며 이미 계산한 결과를 재활용하는 것이 핵심입니다.

왜 중요한가

슬라이딩 윈도우 기법은 전체 데이터를 매번 다시 훑지 않고도 최근 구간의 값을 효율적으로 갱신할 수 있게 해주기 때문에, 실시간 스트리밍 처리와 대용량 데이터를 다루는 알고리즘 연구에서 계산량을 줄이는 기본 도구로 자주 채택됩니다. 네트워크 트래픽 분석, 시계열 이상 탐지, 문자열 패턴 매칭처럼 연속된 데이터 구간을 반복적으로 살펴봐야 하는 여러 상위 연구주제와 직접 연결되어 있습니다.

논문에서는 이렇게 쓰입니다

"실시간 이상 탐지를 위해 슬라이딩 윈도우 기법(sliding window technique)을 적용하여, 매 시점마다 전체 로그를 재분석하지 않고 최근 N개 이벤트만으로 통계량을 갱신하도록 설계하였다."

이 문장은 데이터 스트림 전체를 매번 다시 훑는 대신, 정해진 크기의 최근 구간(윈도우)만 유지하며 값이 들어오고 나갈 때마다 통계량을 조금씩만 갱신함으로써 계산량을 크게 줄였다는 뜻입니다. 스트리밍 데이터 처리, 네트워크 트래픽 분석, 문자열 알고리즘 논문에서 자주 사용됩니다.

"합성곱 신경망의 특징 추출 과정에서 슬라이딩 윈도우 방식으로 입력 이미지를 일정 크기의 패치 단위로 스캔하며 지역적 패턴을 탐지하도록 구성하였다."

컴퓨터비전 논문에서는 슬라이딩 윈도우 개념이 합성곱 연산이나 객체 탐지에서 이미지 전체를 일정 크기 구간으로 훑어가며 지역적 특징을 뽑아내는 방식으로도 확장되어 쓰인다.

"TCP 혼잡제어 알고리즘의 성능을 분석하기 위해 슬라이딩 윈도우 크기 변화에 따른 처리량과 지연시간의 관계를 시뮬레이션하였다."

네트워크공학 논문에서는 슬라이딩 윈도우가 데이터 흐름 제어의 실제 프로토콜 메커니즘으로 다뤄지며, 윈도우 크기 자체가 성능에 영향을 미치는 설계 변수로 분석된다.

조금 더 깊게 보면

슬라이딩 윈도우는 크기가 고정된 형태와, 조건에 따라 늘어나거나 줄어드는 가변 크기 형태로 나뉘는데, 가변 윈도우는 흔히 두 개의 포인터(시작과 끝)를 조건에 맞게 독립적으로 움직이며 최적의 구간을 찾는 데 사용됩니다. 알고리즘 문제에서는 이 기법이 전체 탐색을 O(n²) 대신 O(n)에 가까운 시간에 처리할 수 있게 해주는 대표적인 최적화 방법으로 소개되며, 컴퓨터 네트워크에서는 흐름제어·혼잡제어 프로토콜의 실제 구현 메커니즘으로서 완전히 다른 맥락으로도 등장한다는 점에 유의할 필요가 있습니다.

주의할 점

슬라이딩 윈도우 기법은 흔히 투 포인터 기법과 함께 묶여 설명되지만 완전히 같은 개념은 아닙니다. 투 포인터는 두 개의 인덱스(포인터)를 조건에 따라 움직이는 더 일반적인 방식이고, 슬라이딩 윈도우는 그중에서도 연속된 구간(윈도우)을 유지하며 이동시키는 특수한 형태로 볼 수 있습니다. 또한 이 기법이 효과를 내려면 창이 이동할 때 값을 O(1)에 가깝게 갱신할 수 있어야 하며, 그렇지 않으면 기대한 만큼의 속도 향상을 얻기 어렵습니다.

관련 용어