Tengo una matriz 2D de caracteres aleatorios. Quiero hacer coincidir patrones específicos de estos caracteres: ej .: ABA, BACKA, subir/bajar/izquierda/derecha. ¿Cuál es el mejor algoritmo para encontrar este patrón?La mejor manera de encontrar un patrón específico en una matriz 2D
Respuesta
Si esto es como una búsqueda de palabras, solo puede ir en una dirección (una vez que comience a la izquierda, solo puede seguir hacia la izquierda), la respuesta debería ser bastante simple, simplemente pruebe cada inicio posible ubicación e ir en cada dirección. En el peor de los casos, será O (mn^2) para n by n Si puede subir/izquierda/etc. en cualquier número de ocasiones, la forma más obvia es tratar la matriz como un gráfico y hacer un BFS o DFS. Dependiendo del tamaño de la palabra y la distribución de las letras, esto puede ser muy costoso.
Si tenía varias consultas para una matriz única, ambos métodos podrían acelerarse almacenando en caché las palabras generadas en una estructura tipo trie con referencias a las celdas originales.
Gracias. El número de palabras que necesito para que coincida también es muy grande. Para una matriz grande y una gran cantidad de palabras, la búsqueda es lenta y los requisitos de memoria caché también aumentan significativamente. Cualquier optimizaciones? – Swami
- 1. Python: la mejor manera de establecer una columna en una matriz de 2d a un valor específico
- 2. ¿Hay una mejor manera de transponer una matriz PHP 2D?
- 3. ¿La mejor manera de encontrar si un artículo está en una matriz de JavaScript?
- 4. La mejor manera de ordenar una matriz
- 5. ¿La manera más limpia de buscar una matriz 2D?
- 6. Transponer una matriz 2D
- 7. cómo encontrar el tamaño de la matriz 2d en C++
- 8. La mejor manera de almacenar una matriz dispersa en .NET
- 9. Gire una matriz 2D in situ sin utilizar una nueva matriz: ¿la mejor solución de C++?
- 10. ¿Cómo puedo encontrar el tamaño de una matriz 2D?
- 11. Dada una matriz 2D de números, encontrar grupos
- 12. Convierte una matriz 2D en una matriz de 1D
- 13. Atravesar una matriz F # 2D
- 14. copiar una matriz 2D en Java
- 15. ¿Cómo encontrar la int más común en una matriz de 2d de ints?
- 16. ¿Hay una mejor manera de encontrar la medianoche mañana?
- 17. ¿Ordenar una matriz 2D binaria?
- 18. La mejor manera de crear una matriz singleton
- 19. ¿Una mejor manera? Encontrar los controles ASP.NET, encontrar su ID
- 20. ¿cuál es la mejor manera de verificar una matriz vacía?
- 21. ¿Cuál es una buena manera de encontrar un valor específico en un documento XML usando C#?
- 22. Convertir una matriz numpy 2D en una matriz estructurada
- 23. Cálculo de una matriz de transformación 2D a partir de una matriz 2D inicial y resultante
- 24. Convertir una matriz 1D en una matriz 2D en numpy
- 25. Producir matriz 2D de una matriz 1D en MATLAB
- 26. ¿La manera más fácil de eliminar claves de una matriz 2D?
- 27. equivalente funcional a la iteración en una matriz 2D
- 28. Crear un degradado lineal en matriz 2D
- 29. Buscando 'burbujas' en una matriz 2D de caracteres en Java
- 30. representación de una matriz 2D como una matriz 1D
¿Esto es una pregunta de la entrevista? –
¿Es esta tarea? En caso afirmativo, márquelo como tal. –
Esta no es una pregunta de entrevista y esta no es tarea. – Swami