Ventana deslizante en Python

Vaibhhav Khetarpal 14 abril 2022
Ventana deslizante en Python

En cualquier punto dado, cualquier ventana de la que se pueda decir que es un subconjunto de una estructura de datos particular dada se conoce como ventana deslizante. El tamaño de la ventana decide el número de elementos que contendrá este subconjunto.

Este tutorial analiza la ventana deslizante y demuestra cómo implementarla en Python.

La razón principal para usar una ventana deslizante es que reduce la complejidad del tiempo. Se especializa en resolver los problemas resueltos utilizando el método de fuerza bruta a un ritmo aún más rápido.

Una ventana deslizante puede ser útil en tareas de codificación simples y tareas gigantescas y avanzadas como el procesamiento de imágenes digitales y la detección de objetos. Sin embargo, este artículo se centrará en un área simple para ayudarlo a comprender la ventana deslizante y cómo se utiliza.

Para explicar esto mejor, tomaremos un ejemplo de un problema y luego implementaremos una ventana deslizante sobre él. Para este artículo, tomamos el siguiente problema:

Dada una matriz de números de tamaño x. encuentre un subarreglo del tamaño de ventana k que tenga la suma máxima.

Entrada: x =[12,11,10,23,55,45,15,28], k=3.

Ahora, aplicaremos una ventana deslizante para resolver este problema.

n = int(input("enter size of array "))
print("enter arrays elements")
a = list(map(int, input().split()))
k = int(input("enter the size of subarray "))
ms = -(10 ** 6)
ws = sum(a[:k])
for i in range(n - k):
    ms = max(ms, ws)
    ws = ws - a[i] + a[i + k]
ms = max(ms, ws)
print("subarray of size {} with maximum sum as {}".format(k, ms))

El código anterior proporciona el siguiente resultado:

enter size of array 8
enter arrays elements
12 11 10 23 55 45 15 28
enter the size of subarray 3
subarray of size 3 with maximum sum as 123
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Artículo relacionado - Python Array