ventanas ventana telecomunicaciones protocolos protocolo parada mediante flujo esquema espera enlace ejemplos deslizante datos control capa algorithm sliding-window

algorithm - telecomunicaciones - ventana deslizante ejemplos



¿Qué es el algoritmo de ventanas deslizantes? ¿Ejemplos? (2)

En términos generales, una ventana deslizante es una sublista que se ejecuta sobre una colección subyacente. Es decir, si tiene una matriz como

[a b c d e f g h]

una ventana deslizante de tamaño 3 pasaría sobre ella como

[a b c] [b c d] [c d e] [d e f] [e f g] [f g h]

Esto es útil si, por ejemplo, desea calcular un promedio continuo, o si desea crear un conjunto de todos los pares adyacentes, etc.

Mientras resolvía un problema de geometría, encontré un enfoque llamado Sliding Window Algorithm.

Realmente no pude encontrar ningún material de estudio / detalles sobre él.

¿De qué se trata el algoritmo?


Este es el código del protocolo de ventana deslizante para una matriz de tamaño n, donde la suma de k números se almacena en otra suma de matriz. El siguiente código está en Java.

import java.io.*; class deva { public static void main(String args[])throws IOException { BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); int n=Integer.parseInt(in.readLine()); int[] a = new int[n]; for(int i=0;i<n;i++) a[i]=Integer.parseInt(in.readLine()); int k=Integer.parseInt(in.readLine()); int[] sum = new int[n-k+1]; for(int i=0;i<k;i++) sum[0]+=a[i]; System.out.println(sum[0]); for(int i=1;i<n-k+1;i++) { sum[i]=sum[i-1]+a[i+k-1]-a[i-1]; System.out.println(sum[i]); } } }