3. 非确定Zone模型
在2的推导中,把common生成新Zone的条件定为: common中雷数可确定 (最大最小雷数相等)
为什么这么做?抛开细节追寻思路: 因为先有的 Zone,后有的 common,所以我自然想要把common往Zone上靠 而 Zone 是由数字线索得来的,雷数已经确定 所以我只接受 雷数可以确定的 common 转化为 Zone 加入
那么,如果不这么做,来看看 common 有什么? 未知方块集合,最大可能雷数,最小可能雷数 —— 这些信息难道不也是有用的吗?
如果把 Zone 的概念往这上面靠会怎样? Zone 的确定雷数,不过是 最大可能雷数 等于 最小可能雷数 的特殊情况而已!
3.1 由此,更改Zone定义,将mine,safe参数改为 maxmine,minmine(非确定Zone) 由数字块初始构建的非确定Zone,maxmine=minmine,简单推理规则不变
3.2 基于非确定Zone 的 多集合模型, 同样, 取出 n(n>1)个有重叠的非确定Zone ∈ZC ,其交集记作common,大小记作 s
commom中可能含有的最大雷数: maxmine = min(common大小s,ZC中每个Zone的最大雷数maxmine ) commom中可能含有的最小雷数: minmine = max( ZC中每个Zone的最小雷数减去不属于common的方块数: minmine-(num-s) )
无需任何条件, common 即是一个新的 非确定Zone, 把它加入推导,就能生成新的非确定Zone, 直到有 满足 简单推理条件 的Zone产生
上一楼的贴图情况,即可利用本方法解决。有兴趣者可自行推导。
另: 本方法只完成了理论推导,还没有实现在代码里, 本人近期也有些别的事儿忙活, 算法思路介绍完了,这个事儿可能也要先放一放了 希望能对其他想做自动扫雷算法的朋友有所启发 欢迎交流
|
|