如果你想解决图片混乱,你会使用什么算法的计算机?
你总是可以在算法的效率方面争论,但在这里我真的在寻找要遵循的方法。
由于
答案 0 :(得分:6)
您需要做的是为拼图游戏的每个面定义一个索引词汇表,这样右侧边缘的索引可以告诉您相应的左侧边缘的索引是什么(例如,一个简单的词汇:“凸”和“凹”,在一个面上有“凸”,暗示在匹配的相对面上“凹”),然后根据索引词汇对每个片段进行分类。词汇越精细,面部匹配越多,你的算法就会越快,但你实现它。 (例如,你可能有“平边,直边倾斜 - 左边,直边倾斜 - 右边,凹面,凸面,旋钮,旋钮孔......)。我们假设索引方案抽象了边缘的实际形状,并且有一个谓词“精确拟合(piece1,edge1,piece2,edge2)”,只有在边缘完全匹配时才是真的。我们进一步假设最多只有一个完全匹配的一块具有特殊优势。
目标是增长一组区域,例如一组连接的区域,直到不再可能生长区域为止。我们首先使用唯一的区域名称标记所有部分,每个部分1个,并且所有边缘都是无与伦比的。然后我们按任何顺序枚举片段边缘。对于具有边E的每个枚举的片P,使用索引方案来选择可能匹配的片/边对。检查完全适合的谓词;最多一件Q,边缘F,完全匹配。将P和Q的区域组合在一起形成一个大区域。重复。我认为这解决了这个难题。
答案 1 :(得分:0)
解决拼图游戏基本上可以减少到像边缘一样匹配边缘。在一个真正的拼图游戏中,只有一对棋子可以沿着特定的边缘正确地互锁,每个棋子都有角落,这样你就可以知道特定的一侧开始和结束的位置。
因此,只需找到每条边的端点并选择几个控制点。然后迭代所有未绑定边缘的片段,直到找到正确的边缘。当没有未绑定的边缘时,你已经解决了这个难题。
答案 2 :(得分:0)
要详细阐述艾拉·巴克斯特的答案,另一种概念化问题的方法是将拼图作为一个图形来考虑,其中每个部分都是一个节点,每个部分都是另一个部分是边缘。
例如,如果你正在设计一个益智游戏,那么以这种方式存储“答案”将使得“检查这是否适合”代码的速度要快得多,因为它可以简化为某种散列查找。
答案 3 :(得分:0)
.1找到 2x2-gram ,以便所有四条边都适合。然后,评估图像内容彼此匹配的程度。
P1 <--> P2 ^ ^ | | v v P3 <--> P4
.2标记方向(手动或启发式),但仅将它们用作启发式分数(用于排名),而不是用作最终搜索条件。
.3 形状背景