2011-11-25 13 views
32

एक ज्यामिति समस्या को हल करते समय, मैं स्लाइडिंग विंडो एल्गोरिदम नामक एक दृष्टिकोण में आया।स्लाइडिंग विंडो एल्गोरिदम क्या है? उदाहरण?

वास्तव में कोई अध्ययन सामग्री/विवरण नहीं मिल सका।

एल्गोरिदम क्या है?

+2

क्या आप [इस तरह की विंडोज़] (http://en.wikipedia.org/wiki/Window_function) के बारे में बात कर रहे हैं? मुझे ज्यामिति के साथ लिंक नहीं दिख रहा है। –

+0

जब तक आप ज्यामिति समस्या का वर्णन नहीं करते हैं तब तक कनेक्शन समझाया जा सकता है। –

उत्तर

66

आम तौर पर एक स्लाइडिंग विंडो बोलना एक उप-सूची है जो अंतर्निहित संग्रह पर चलता है। यानी, अगर आप की तरह

[a b c d e f g h] 

एक सरणी है आकार 3 की एक रपट खिड़की की तरह

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

यह उपयोगी है अगर आप उदाहरण के लिए एक चल औसत की गणना करना चाहते हैं इस पर चल पाएंगे, या यदि आप सभी आसन्न जोड़े आदि का एक सेट बनाने के लिए

1

यह आकार n, जहां कश्मीर संख्याओं का योग एक और सरणी sum.The निम्नलिखित कोड में एक साथ संग्रहीत किया जाता है की एक सरणी के लिए स्लाइडिंग खिड़की प्रोटोकॉल का कोड जावा में किया जाता है चाहता हूँ ।

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

जबकि यह दिलचस्प है, यह ओपी पूछ रहा था * जानकारी * व्याख्या करने के लिए कुछ भी नहीं करता है। – Martin

+1

... और कोड भयानक है। – Gabriel

संबंधित मुद्दे