2011-11-25 5 views
32

Al resolver un problema de geometría, encontré un enfoque llamado Algoritmo de ventana deslizante.¿Qué es el algoritmo de ventanas deslizantes? ¿Ejemplos?

No pude encontrar ningún material de estudio/detalles sobre el mismo.

¿De qué se trata el algoritmo?

+2

¿Estás hablando de [este tipo de ventanas] (http://en.wikipedia.org/wiki/Window_function)? No veo el enlace con la geometría. –

+0

Explicar la conexión no será posible a menos que describa el problema de geometría. –

Respuesta

66

En general, una ventana deslizante es una lista secundaria 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 correrí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 móvil, o si desea crear un conjunto de todos los pares adyacentes, etc.

1

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]); 
     } 
    } 
} 
+2

si bien esto es interesante, esto no hace nada para * explicar * la información que el OP estaba pidiendo. – Martin

+1

... y el código es terrible. – Gabriel

Cuestiones relacionadas