
Olá amigos, tudo bem com vocês?
Chegou a hora de prosseguirmos no assunto que comecei a abordar lá no artigo de Janelas Deslizantes Parte 1 (caso não tenha lido, recomendo ir lá dar uma olhada nele para facilitar o entendimento do que vou discutir abaixo)
De volta para a biblioteca
Vamos imaginar que você está na mesma biblioteca do primeiro artigo e se depara com o anúncio de uma promoção inusitada: “Qualquer sequência de 3 volumes de uma determinada enciclopédia X, sairá pelo preço de um volume só“.

Imagem de uma biblioteca por dentro
Cada volume desta enciclopédia X tem a seguinte quantidade de páginas:
Volume 1 | 100 Páginas |
Volume 2 | 30 Páginas |
Volume 3 | 50 Páginas |
Volume 4 | 200 Páginas |
Volume 5 | 10 Páginas |
Volume 6 | 20 Páginas |
Dado que todos os volumes têm o mesmo valor financeiro, podemos concluir que é uma grande vantagem adquirir os volumes 2, 3 e 4 uma vez que eles possuem a maior quantidade total de páginas somadas (30 + 50 + 200 = 280 páginas).
Perceba que para um total de 6 volumes, o trabalho de somar os subconjuntos de 3 livros não chega a ser muito exaustivo. Basta realizar inicialmente a soma das páginas dos volumes 01, 02 e 03 repetir essa operação para os volumes 02, 03 e 04 e assim sucessivamente.
Contudo, para processar uma quantidade maior de itens (300 volumes por exemplo) esta operação poderia se tornar um pouco mais complexa e novamente a estratégia de usar um computador com um algoritmo eficiente surge como uma boa alternativa.
O grande diferencial do Algoritmo de Janelas Deslizantes Fixas é que ao invés de somar os 3 elementos da próxima subsequência, ele poupa trabalho ao simplesmente extrair o primeiro elemento da subsequência atual e somar o da próxima.
Basicamente estamos trocando a soma de subsequências, por apenas duas operações (uma soma e uma subtração).
Explicando com números
Vejamos em detalhes, para melhorar o entendimento:
A soma de 100 + 30 + 50 páginas é igual a 180, correto?

Conjunto de 3 números sinalizados pela cor verde em diferentes momentos
Se somarmos a este resultado mais 200 paginas (do primeiro volume da próxima subsequência) e removermos 100 páginas (do primeiro volume da subsequência atual) o resultado será de 280 páginas.
180 + 200 – 100 = 280 páginas. Mesmo valor valor encontrado na soma de 30 + 50 + 200.
Visualmente seria como andar entre os números com uma marcação fixa.
Num conjunto de dados mais extenso, com subsequências maiores, essa compensação de esforço é bastante perceptível.
Conclusão
Embora a ideia por trás desse algoritmo (que alguns consideram apenas uma técnica) possa parecer simples, ela oferece uma solução elegante e eficiente para realizar “deslocamentos” em conjuntos de dados durante diferentes tipos de análise.
O algoritmo de compressão de dados LZ77, que monta um dicionário para encontrar padrões num conjunto de bytes, é um exemplo de implementação que utiliza a técnica de Sliding Window Fixa em sua essência.
Caso queira mais detalhes sobre ele, recomendo esse vídeo abaixo:
Além disso, ele também é aplicado em sistemas das áreas de Finanças, Monitoramento de redes, Processamento de sinais…entre outros.
Espero que este artigo tenha sido útil para você. Um abraço e obrigado pela leitura.
Referências
https://www.freecodecamp.org/news/sliding-window-technique/