Sea una matriz . Decimos que dos entradas son vecinas si son adyacentes horizontal o verticalmente, y ambas entradas son 's. Uno quiere encontrar un número mínimo de para agregar, por lo que cada puede alcanzar a otro a través de una secuencia de vecinos.
Ejemplo:
100
000
001
Aquí necesitamos 3 's:
100
100
111
¿Cómo podemos encontrar eficientemente la cantidad mínima de 's para agregar y dónde?
algorithms
graph-theory
matrices
Chao Xu
fuente
fuente
Respuestas:
Si modela su problema con gráficos, su problema es como el problema de Steiner Tree :
Vea aquí la definición más simple posible.
Como puede ver, es NPC en general, pero en su caso su gráfico es un gráfico de cuadrícula, puede encontrar una buena solución para él, pero para su ejemplo actual (cuando los terminales están en el límite) puede ver el árbol Steiner en el papel de gráficos de cuadrícula .
De todos modos, existen excelentes heurísticas para el problema de Steiner Tree, puede aplicar un enfoque similar a su problema.
PD: puede suponer que los vecinos 1 son nodos conectados, después de eso puede contraer sus bordes para hacer un nuevo gráfico, su nuevo gráfico creado es plano, y si pudiera resolver el Árbol Steiner, puede resolver su problema, pero puede ser Hay una buena solución para su problema que es independiente de Steiner Tree.
fuente