29 jul. 2008

Producto Escalar Mínimo

Nuevamente comparto con ustedes un problema del Google Code Jam 2008, esta vez corresponde al primer problema (Problema A) de la ronda de clasificación 1A. Se trata de calcular el Producto Escalar Mínimo entre dos vectores considerando todas sus permutaciones. Si no quedó claro, me disculpo y les ofrezco la traducción del problema que pueden descargar aquí.

Como ya sabrán quienes pasaron por el sitio del Google Code Jam el problema planteado debe ser resuelto para dos conjuntos de soluciones un conjunto pequeño y un conjunto grande, el tiempo entre la descarga del conjunto de prueba y la remisión de la solución es de 4 y 8 minutos respectivamente.

La idea detrás de este mecanismo es que un algoritmo que resuelva el problema pueda ser probado sin mayores optimizaciones con el conjunto de prueba pequeño que, usualmente, tiene restricciones en el rango de los datos de entrada no solamente en el número de casos. Y luego, en un segundo paso se pueda optimizar el mismo algoritmo para procesar el conjunto de prueba grande que contendrá un número mayor de casos y estará compuesto por valores también mucho más grandes. Para descargar los conjuntos de prueba y remitir sus soluciones pueden acceder a la página de la competencia.

Nuevamente, espero que se animen a resolver este problemita. Utilizando fuerza bruta se puede resolver para el caso de prueba pequeño y para el caso grande se puede utilizar alguna heurística o una estructura como un árbol. En cualquier caso, no se olviden de comentar como les fue.

No hay comentarios: