¿Cómo puedo encontrar el agujero en una matriz 2D?

Sé que el título parece algo ambiguo y por esta razón he adjuntado una imagen que será útil para entender el problema con claridad. Necesito encontrar agujeros dentro de la región blanca. Un agujero se define como una o varias celdas con un valor '0' dentro de la región blanca. Quiero decir que tendrá que estar completamente encerrado por celdas con un valor '1' (por ejemplo, aquí podemos ver tres agujeros marcados como 1, 2 y 3 ). Se me ha ocurrido una solución bastante ingenua: 1. Busque celdas con celdas con un valor '0'. 2. Ejecute un DFS (Flood-Fill) cuando encuentre una celda de este tipo (negra) y verifique si podemos tocar el límite de la región rectangular principal 3. Si podemos tocar el límite durante el DFS, entonces no es un agujero y si no podemos alcanzar el límite, se considerará como un agujero

Ahora, esta solución funciona pero me preguntaba si existe alguna otra solución eficiente / rápida para este problema.

Por favor, hágame saber sus pensamientos. Gracias.

Respuestas a la pregunta(5)

Su respuesta a la pregunta