De enumeración a generación: un algoritmo de tiempo lineal para generar caminos de red 2D con un número dado de giros
Autores: Kuo, Ting
Idioma: Inglés
Editor: MDPI
Año: 2015
Acceso abierto
Artículo científico
2015
De enumeración a generación: un algoritmo de tiempo lineal para generar caminos de red 2D con un número dado de giros
Categoría
Ingeniería y Tecnología
Subcategoría
Ingeniería de Software
Palabras clave
Algoritmo de tiempo lineal
Caminos de retícula
Permutaciones de multiconjuntos
Resultados de enumeración
Algoritmo de partición de enteros
Programación de taller abierto
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 27
Citaciones: Sin citaciones
Proponemos un algoritmo de tiempo lineal, llamado , para generar caminos enrejados 2D (, ), equivalentes a permutaciones de multiconjuntos de dos elementos {A, B}, con un número dado de . El uso de tiene tres significados: en el contexto de permutaciones de multiconjuntos, significa que dos elementos consecutivos de una permutación pertenecen a dos elementos diferentes; en la enumeración de caminos enrejados, significa que el camino cambia de dirección, ya sea de este a norte o de norte a este; en la programación de tiendas abiertas, significa que transferimos un trabajo de un tipo de máquina a otro. La estrategia de es dividir y combinar; la división se basa en los resultados de enumeración de un estudio previo y se logra mediante un algoritmo de partición entera y un algoritmo de permutación de multiconjuntos; la combinación se logra mediante un algoritmo de concatenación que construye los caminos que requerimos. La ventaja de es doble. Primero, es óptimo en el sentido de que genera directamente todos los caminos factibles sin visitar uno inviable. Segundo, puede generar todos los caminos en cualquier orden especificado de , por ejemplo, en orden decreciente o en orden creciente. En la práctica, se discuten dos aplicaciones, programación y criptografía.
Descripción
Proponemos un algoritmo de tiempo lineal, llamado , para generar caminos enrejados 2D (, ), equivalentes a permutaciones de multiconjuntos de dos elementos {A, B}, con un número dado de . El uso de tiene tres significados: en el contexto de permutaciones de multiconjuntos, significa que dos elementos consecutivos de una permutación pertenecen a dos elementos diferentes; en la enumeración de caminos enrejados, significa que el camino cambia de dirección, ya sea de este a norte o de norte a este; en la programación de tiendas abiertas, significa que transferimos un trabajo de un tipo de máquina a otro. La estrategia de es dividir y combinar; la división se basa en los resultados de enumeración de un estudio previo y se logra mediante un algoritmo de partición entera y un algoritmo de permutación de multiconjuntos; la combinación se logra mediante un algoritmo de concatenación que construye los caminos que requerimos. La ventaja de es doble. Primero, es óptimo en el sentido de que genera directamente todos los caminos factibles sin visitar uno inviable. Segundo, puede generar todos los caminos en cualquier orden especificado de , por ejemplo, en orden decreciente o en orden creciente. En la práctica, se discuten dos aplicaciones, programación y criptografía.