En los autómatas celulares , el vecindario de Moore se define en una red cuadrada bidimensional y está compuesto por una celda central y las ocho celdas que la rodean.
El barrio lleva el nombre de Edward F. Moore , un pionero de la teoría de autómatas celulares.
Es uno de los dos tipos de vecindad más utilizados, el otro es la vecindad de von Neumann , que excluye las celdas de las esquinas. El conocido Juego de la vida de Conway , por ejemplo, utiliza la vecindad de Moore. Es similar a la noción de 8 píxeles conectados en los gráficos de computadora .
El vecindario de Moore de una célula es la célula misma y las células a una distancia de Chebyshev de 1.
El concepto se puede extender a dimensiones superiores, por ejemplo, formando un vecindario cúbico de 26 celdas para un autómata celular en tres dimensiones, como el utilizado por 3D Life . En la dimensión d, donde , el tamaño del vecindario es 3 d − 1.
En dos dimensiones, el número de celdas en un vecindario de Moore extendido de rango r es (2 r + 1) 2 .
La idea detrás de la formulación del vecindario de Moore es encontrar el contorno de un grafo dado. Esta idea fue un gran desafío para la mayoría de los analistas del siglo XVIII y, como resultado, se derivó un algoritmo a partir del grafo de Moore que luego se denominó algoritmo del vecindario de Moore.
El pseudocódigo para el algoritmo de rastreo de Moore-Neighbor es
Entrada : una teselación cuadrada, T, que contiene un componente conectado P de celdas negras. Salida : una secuencia B (b1, b2, ..., bk) de píxeles de contorno, es decir, el contorno.Defina M(a) como el vecindario de Moore del píxel a.Sea p el píxel límite actual.Sea c el píxel actual bajo consideración, es decir, c está en M(p).Sea b el retroceso de c (es decir, el píxel vecino de p que se probó previamente) Comience con el conjunto B vacío . De abajo a arriba y de izquierda a derecha, escanee las celdas de T hasta encontrar un píxel negro, s, de P. Insertar s en B. Establezca el punto límite actual p en s, es decir, p=s Sea b = el píxel desde el que se ingresó s durante el escaneo de la imagen. Establezca c como el próximo píxel en el sentido de las agujas del reloj (desde b) en M(p). Mientras c no sea igual a s, haga lo siguiente: Si c es negro Insertar c en B Sea b = p Sea p = c (retroceder: mover el píxel actual c al píxel desde el que se ingresó p) Sea c = siguiente píxel en el sentido de las agujas del reloj (desde b) en M(p). de lo contrario (avanzar el píxel actual c al siguiente píxel en el sentido de las agujas del reloj en M(p) y actualizar el retroceso) Sea b = c Sea c = siguiente píxel en el sentido de las agujas del reloj (desde b) en M(p). fin Si fin Mientras Fin
La condición de finalización original era detenerse después de visitar el píxel de inicio por segunda vez. Esto limita el conjunto de contornos que recorrerá completamente el algoritmo. Una condición de detención mejorada propuesta por Jacob Eliosoff es detenerse después de ingresar al píxel de inicio por segunda vez en la misma dirección en la que lo ingresó originalmente.