【すらいでぃんぐうぃんどう】

スライディングウィンドウ とは?

💡 窓をスライドさせるだけで、計算を何倍も速くするテクニック
📌 このページのポイント
スライディングウィンドウ:窓をずらして効率計算 2 5 1 8 3 7 4 合計 = 8 1 合計 = 14 2 合計 = 12 3 スライド方向 計算の工夫 窓を1つスライド: 8 - 2 + 8 = 14 (抜けた数を引いて 入った数を足すだけ) 全再計算: O(n×k) → 差分更新: O(n) 大幅に高速化!
スライディングウィンドウのイメージ
ひよこ ひよこ

スライディングウィンドウって何をする技法なの?

ペンギン先生 ペンギン先生

データの上に一定の幅の窓を置いて、1つずつずらしながら処理する方法だよ。例えば「連続する5個の数の合計が最大になる場所を探す」みたいな問題で大活躍するんだ。

ひよこ ひよこ

全部の組み合わせを計算するのとは何が違うのかな?

ペンギン先生 ペンギン先生

窓を1つずらすとき、抜けた1個を引いて入った1個を足すだけで新しい合計が出せるんだ。毎回5個全部を足し算し直す必要がないから、O(n²)がO(n)になるよ。

ひよこ ひよこ

ネットワークのスライディングウィンドウは別物なの?

ペンギン先生 ペンギン先生

考え方は同じだよ!TCPでは送信側が「この範囲のデータを送ってOK」という窓を管理していて、受信確認が来たら窓をずらして次のデータを送る。通信速度を最適化する流量制御の仕組みだね。

ひよこ ひよこ

プログラミングの面接でもよく出るのかな?

ペンギン先生 ペンギン先生

超頻出だよ!「最長の重複なし部分文字列」「最小の部分配列」といった問題はスライディングウィンドウの定番問題だね。固定幅と可変幅の2パターンを理解しておくと、かなりの問題が解けるようになるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「スライディングウィンドウ」って出てきたら「窓をずらして効率よく処理するテクニック」と思えればだいたいOK!
📖 おまけ:英語の意味
「Sliding Window」 = 滑動窓
💬 窓(Window)を滑らせる(Sliding)ように動かすからこの名前なんだよ
← 用語集にもどる