在2D阵列中查找特定图案的最佳方法

时间:2011-06-07 20:43:47

标签: algorithm puzzle

我有一个随机字符的2D数组。 我想匹配这些字符的特定模式:例如:ABA,BACKA,上/下/左/右。 找到这种模式的最佳算法是什么?

1 个答案:

答案 0 :(得分:1)

如果这就像一个单词搜索,你只能向一个方向前进(一旦你向左开始,你只能继续向左),答案应该很简单,只需继续测试每个可能的起始位置并走向每个方向。在最坏的情况下,对于n乘n,这将是O(mn ^ 2)。如果你可以向上/向左/等任何次数,最明显的方法是将矩阵视为图形并执行BFS或DFS。根据单词的大小和字母的分布,这可能太昂贵了。

如果您对单个矩阵有多个查询,则可以通过在类似特里结构中缓存生成的单词来加速这两种方法,并引用原始单元格。