El método de marcha rápida [ 1 ] es un método numérico creado por James Sethian para resolver problemas de valores en la frontera de la ecuación de Eikonal :
Normalmente, este tipo de problema describe la evolución de una superficie cerrada en función del tiempo.con velocidaden la dirección normal en un puntoen la superficie de propagación. Se especifica la función de velocidad y el tiempo en el que el contorno cruza un punto.se obtiene resolviendo la ecuación. Alternativamente,puede considerarse como la cantidad mínima de tiempo que se necesitaría para alcanzarcomenzando desde el puntoEl método de marcha rápida aprovecha esta interpretación de control óptimo del problema para construir una solución desde el exterior, partiendo de la "información conocida", es decir, los valores límite.
El algoritmo es similar al de Dijkstra y se basa en el hecho de que la información solo fluye hacia afuera desde el área de siembra. Este problema es un caso especial de los métodos de conjuntos de nivel . Existen algoritmos más generales , pero suelen ser más lentos.
Extensiones a dominios no planos (triangulados) que resuelven
para la superficiey, fueron presentados por Ron Kimmel y James Sethian .
Laberinto como función de velocidad de camino más corto
Mapa de distancias con múltiples plantillas y puntos de origen aleatorios
Algoritmo
Primero, supongamos que el dominio se ha discretizado en una malla. Nos referiremos a los puntos de la malla como nodos. Cada nodotiene un valor correspondiente.
El algoritmo funciona igual que el algoritmo de Dijkstra, pero difiere en cómo se calculan los valores de los nodos. En el algoritmo de Dijkstra, el valor de un nodo se calcula utilizando uno solo de los nodos vecinos. Sin embargo, al resolver la EDP en, entreyde los nodos vecinos se utilizan .
Los nodos se clasifican como lejanos (aún no visitados), considerados (visitados y con un valor asignado provisionalmente) y aceptados (visitados y con un valor asignado permanentemente).
- Asignar cada nodoel valor dey etiquetarlos como lejos ; para todos los nodoscolocary etiquetacomo se aceptó .
- Para cada nodo lejano, utilice la fórmula de actualización de Eikonal para calcular un nuevo valor para. Siluego establecery etiquetacomo se considera .
- Dejarsea el nodo considerado con el valor más pequeño. Etiquetacomo se aceptó .
- Por cada vecinodeEso no se acepta, calcule un valor tentativo..
- Siluego establecer. Sifue etiquetado como hasta ahora , actualice la etiqueta a considerado .
- Si existe un nodo considerado , vuelva al paso 3. De lo contrario, finalice.
Véase también
Enlaces externos
- Métodos tipo Dijkstra para la ecuación de Eikonal, JN Tsitsiklis, 1995
- El método de marcha rápida y sus aplicaciones por James A. Sethian
- Métodos de marcha rápida con múltiples plantillas
- Implementación en Matlab de marcha rápida con múltiples plantillas
- Detalles de implementación de los métodos de marcha rápida
- Método de Marcha Rápida Generalizada de Forcadel et al. [2008] para aplicaciones en segmentación de imágenes.
- Implementación en Python del método de marcha rápida
- Consulte el capítulo 8 de «Diseño y optimización de elementos nanoópticos mediante el acoplamiento de la fabricación al comportamiento óptico», archivado el 20 de agosto de 2013 en Wayback Machine.
Notas
- ↑ JA Sethian. Un método de conjunto de nivel de marcha rápida para frentes que avanzan monótonamente, Proc. Natl. Acad. Sci., 93, 4, pp.1591--1595, 1996.
- Ecuaciones diferenciales numéricas