首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数独观点

数独观点
EN

Stack Overflow用户
提问于 2016-03-14 14:59:13
回答 1查看 525关注 0票数 5

我正在寻找使用约束编程解决sudoku问题的其他观点。

经典的观点是使用有限域(行,列)变量,它可以取1到9的值。这是一个很好的观点,很容易为它定义约束。例如:(1, 2 )值为4的变量意味着4位于第2列的第1行。

但是很难找到其他的观点。我尝试并提出了一个三维矩阵的观点,它采用二进制值。例如,变量(1, 2 ,7)1为值意味着第2列的第1行中有7,但如果其他所有视点都不能提供良好的约束,则应该使用二进制值。

还有其他好的观点吗?

编辑:一个好的观点应该允许简洁地表达约束。我更喜欢允许使用尽可能少的约束来描述问题的观点,只要这些约束有有效的算法。

定义视点:视点是一对X,D,其中X= {x1,。。。,xn}是一组变量,D是一组域;对于每个xi∈X,相关联的域Di是x的可能值集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-14 15:34:03

您给出的观点是由(行、列、数字)构建的sudoku关系的位置编码的同态映射。

另一种方法是编码限制集(第1-9行,第1-9列,正方形领事,嗯,呃,毫升,毫升,毫米,mr,11,lm,lr,或任何适用的限制),以及是否有某个数字在其中。在定义约束方面,这可能是可怕的。(因此,我认为这是不好的)。它要求将约束集之间的关系编码为“已知”。

例如,经典观点中的a (2,5,7)将意味着(第2,7行),(col5,7)和(嗯,7)在这一备选方案中。

正如您所看到的,问题在于对逻辑位置和各种约束之间的关系进行编码。经典的vieport是建立在对位置数据进行编码的基础上,并对可能的位置应用约束。(对sudoko的解释和解决方法。)另一种方法是使用约束集作为视点,并需要将定位作为约束来处理。

不过,正常人可能会因为这种表现而在大脑中打个结。(我也不会自愿去找出这些约束.)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35990953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档