我需要学习二维模式搜索算法。非常感谢提示和链接。
更重要的是:
给定一个 M[m,n] 矩阵,其值在 K 中
example
000000000000
000001000000
0101
00010010 = M, K = {0, 1}
0101
00010001
10111
1010111
和一个矩阵 L[i, j],其中 K + {X} 中的值表示“形状”
例如,字母“L”的形状
1
X
1
X = L
11
哪些算法可以回答以下问题:
- L 能在 M 中找到吗?
- M 中可以找到 L 多少次(析取 L,没有公共部分(1 或 0))
- L 可以在 M 中找到多少次(可以有公共部分(1 或 0))
- M 中可以找到多少次 L 和 K(K 的定义类似于 L,K != L)(不相交)
ETC。
实现语言是 JavaScript,但任何其他语言都可以。
编辑
还发现this PDF https://web.archive.org/web/20150621110055/http://www.fastar.org/publications/MScMartijn.pdf.
看看这个推介会 https://web.archive.org/web/20150621110105/http://www.fastar.org/publications/MScPresentationMartijn.ppt它应该给你一个基本知识。
X 符号可以被视为通配符,因此它始终会给出匹配项。
不知道你到底是什么意思
在M(不相交)等中可以找到多少次L和K(K的定义与L类似)。
K 代表字母或形状(如 L)?
确定不相交匹配的最大数量的问题将更加困难。该方法如下:
- 找到所有可能的匹配项
- 创建图,其中节点表示匹配,边表示两个匹配具有公共字段。
- 现在你必须在这个图中找到最大独立集(wiki http://en.wikipedia.org/wiki/Independent_set_%28graph_theory%29) - 图中的一组顶点,其中没有两个顶点是相邻的,因此不会违反问题约束。
编辑:如果您的形状是 L,则可以有效地计算匹配。为列和行创建表格,并为每个单元格检查向上和右侧是否存在匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)