首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解MinConflicts算法

理解MinConflicts算法
EN

Stack Overflow用户
提问于 2016-11-08 21:28:12
回答 1查看 175关注 0票数 2

在维基百科中,它被写成(最小冲突算法):

值<--使冲突最小化的var值v(var,v,current,csp)

但这意味着什么呢?

例如,如果N皇后问题有以下矩阵:

代码语言:javascript
复制
  0 1 2 3
0 Q - - -
1 - Q - -
2 - - Q -
3 - - - Q

这里有三个冲突,对吧?

如果我们将女王的位置1、1移动到2、3,那么冲突函数的价值是什么:

代码语言:javascript
复制
  0 1 2 3
0 Q - - -
1 - - - -
2 - - Q -
3 - Q - Q

冲突应该返回2还是应该返回4?换句话说,我们应该只计算这位女王的冲突,还是应该把全球所有的冲突都计算在董事会上。

维基百科还说

冲突函数计算特定对象违反的约束数,因为分配的其余部分的状态是已知的。

但这感觉不对。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-09 10:37:16

“如果已知分配的其余状态,冲突函数会计算特定对象违反的约束数”,但这感觉不对。

这是正确的。

0 1 2 3 0 q--1-q-2-q-3-q-q 这里有三个冲突,对吧?

这里CONFLICTED[csp][Q0, Q1, Q2, Q3] (Qn意思是n-th列上的女王)。如果随机选择的变量是Q1

0 1 2 3 0 q1--1-q-2-1 q-3-2-q

Q1打破了3约束(它攻击Q0Q2Q3)。

CONFLICTS(Q1)随机返回(0,1)(2,1) (如果有多个具有最小冲突数的值,CONFLICTS会随机选择一个)。

它做的是而不是返回(3,1)

0 1 2 3 0 q1--1-3--2-1 q-3-q-q

CONFLICTS(Q1)随机返回(0,1)(2,1)

CONFLICTS(var, v, current, csp)考虑current状态中的特定女王(var)。

这一制度的一个可能的演变是:

代码语言:javascript
复制
  0 1 2 3
0 Q 1 - -
1 - Q - -
2 - 1 Q -
3 - 2 - Q

CONFLICTED[csp] = [Q0, Q1, Q2, Q3];
var = Q1
value = (0, 1)
代码语言:javascript
复制
  0 1 2 3
0 Q Q - -
1 1 - - -
2 1 - Q -
3 1 - - Q

CONFLICTED[csp] = [Q0, Q1, Q2, Q3];
var = Q0
value = (1, 0)
代码语言:javascript
复制
  0 1 2 3
0 1 Q - -
1 Q - - -
2 1 - Q -
3 1 - - Q

CONFLICTED[csp] = [Q0, Q1, Q2, Q3];
var = Q0
value = (2, 0)

如果同一个var保留在CONFLICTED[csp]中,则可以多次选择相同的CONFLICTED[csp](此处为Q0)。

代码语言:javascript
复制
  0 1 2 3
0 - Q 2 -
1 - - 1 -
2 Q - Q -
3 - - 1 Q

CONFLICTED[csp] = [Q0, Q2, Q3];
var = Q2
value = (3, 2)
代码语言:javascript
复制
  0 1 2 3
0 - Q - 1
1 - - - 0
2 Q - - 2
3 - - Q Q

CONFLICTED[csp] = [Q2, Q3];
var = Q3
value = (1, 3)
代码语言:javascript
复制
  0 1 2 3
0 - Q - -
1 - - - Q
2 Q - - -
3 - - Q -

CONFLICTED[csp] = [];

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

https://stackoverflow.com/questions/40496731

复制
相关文章

相似问题

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