ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

约束式编程学习笔记[0] CSP基本概念 整数示例 实数示例

2021-10-28 14:32:37  阅读:204  来源: 互联网

标签:Constraint 示例 可以 编程 problems 约束 satisfaction representation CSP


目录

2 Constraint satisfaction problems: examples

  1. Q: 列举"modeling"中可能出现的困难。
    A:

For other problems the appropriate representation as a CSP is by no means straightforward and relies on a non-trivial ‘background’ theory that ensures correctness of the adopted representation.

这时需要专家知识对问题进行表述,并论证正确性。
以及

more than one natural representation exists.

此时需要适当选择表述,提高效率等。

  1. Q: 快速阅读章简介,说出本章行文中分类标准。
    A:

the domains over which they are defined
integer, real, boolean, symbolic

之前的四类都是satisfaction问题,如果同时需要优化(最小或最大化)某个objective就是optimization问题. 后者也单独作为了本章一节。

2.1 Basic concepts

  1. Q: \(\langle \mathcal C; \mathcal D\mathcal E\rangle\)中的两者有什么区别和联系?
    A: 先由后者限定各个变量\(y_i\)的定义域,在此基础上再由前者进一步进行约束。从更大的角度来看,限定定义域也是一种特殊的约束。
    某种意义上,两者是“全集和子集”的关系。

a constraint \(C\) on \(Y\) we mean a subset of ...

满足约束就是在子集中。
注:从这个角度可帮助理解(对于\(m\)元约束)满足约束的记号是\((d_{i_1},\cdots,d_{i_m})\in C\).
注:此处可以联系数理逻辑中论域、扩展的一阶语言、变元的类型、谓词等概念。如\(m\)元谓词对应\(m\)元约束。而\(\mathcal D\mathcal E\)可以看成指定“变元类型”,也可以看成一元谓词。

  1. Q: 如何理解"no syntax was assumed".
    A: 在最基础的定义中,约束都是直接由子集表示的。syntax实际上可以看成辅助表示子集,提高书写效率的某些合理描述方式和人为约定。例如\(x<y\)表示集合\(\{(x,y)|x\in D_x, y\in D_y,x<y\}\).
    从根本上来说,syntax在原始定义中没有涉及,且不是必须的、本质的。
  2. Q: 简要阐释"define constraints and CSPs to the sequences".
    A: 定义约束时都是有序的,不是无序的set,这在实际求解中带来好处。(必要性)
    这么做是可行的。举例:通过移项,引入辅助变量等手段。(可行性)

2.2 Constraint satisfaction problems on integers

  1. Q: \(SEND+MORE=MONEY\)问题中,如果各个domain都是自然数集,那么需要哪些约束来描述这个问题?
    A: \(S,M\)是\([1,9]\)间整数,而其余字母都是\([0,9]\)间整数(注:从这可以看出2.1题0.的思想),且各个字母互不相同(注:这可以称为一条alldifferent约束)。且:
    \(1000S+100E+10N+D+1000M+100O+10R+E=10000M+1000O+100N+10E+Y\).
    注:也可以考虑“进位”,即\(D+E=10C_1+Y,N+R+C_1=10C_2+E\)等等。其中\(C_i\in\{0,1\}\).
  2. Q: 如何理解\(x-y\le 10-11z_{x,y}\)中的数字\(10,11\)?
    A: 对于\(x-y\)有界的情况,想表达\(x\ne y\)(也就是\(x<y\vee x>y\))可以引入取值为\(\{0,1\}\)的辅助变量\(z_{x,y}\).
    对于\(x-y\le 10-11z_{x,y}\),当\(z_{x,y}\)取1时变为\(x<y\),否则相当于没有额外约束(因为已知有界)。
    另一条也类似。
    可以看出,这里\(x-y\le m-(m+1)z_{x,y},y-x\le (m+1)z_{x,y}-1\)中的\(m\)理论上可以取任何大于等于10的整数。不过10可以限制得最严格,具有某种意义上“最佳”性。
  3. Q: 八皇后问题中直观中有16个所谓“自由度”,为什么可以用8个变量表示?
    A: 因为已知每列有且仅有一个皇后,因此可以用8个变量表示8个皇后依次所在的行。
    然而,这不能拓展到“8x8棋盘放7个皇后”等问题。实际上,从这里就折射出普遍和特殊的思想。特殊的representation可以提高效率,但其难以泛化。
  4. Q: \(x_i-x_j\ne i-j\)中依次出现字母\(i,j,i,j\),这是否和2.1题2.矛盾?
    A: 不矛盾。\(i,j\)并不是变量,\(x_i,x_j\)才是。这样一来每条约束都是依次出现\((x_i,x_j)\)两个变量。
  5. Q: The Zebra Puzzle中,如果给5栋房子指定数字1到5,那么3号房主人是violinist怎么表达?如果指定数字1到5对应的characteristic不是房子的序号而是饮料种类(比如water指定为2,等等. 而非原来的“最左边房子指定为1,它右边的指定为2”,等等),该representation与前面相比有何异同之处?
    A: violinist=3
    在新的representation中,(不含有加减号的)等式的意义仍然类似。比如如果我们指定water对应2,那么violinist=2就表示小提琴家喝水,而mid=green的含义是“中间的房子是绿色的”
    然而,这样一来从左到右的5栋房子用5个变量表示,例如left, midleft, mid, midright, right,他们之间的度量和序结构消失了,这使得"to the right", "next to"等不方便表达。这实际上相当于该问题不再是on integers,而是on symbols.

2.3 Constraint satisfaction problems on reals

  1. Q: spreadsheet的例子让你有什么有关于编程“模式”(如约束式、命令式)的感想?
    A: 例:在一些特殊条件下(一般是非常简单的case)命令式程序可以很容易地与约束式程序相互转化。此处的例子中可以用命令式程序依次求解出\(D4,D5,E7,E8\).
    但是比如说已知其它求\(B5\),那就不能直接地把约束式转化成命令式。而公式中若出现条件判断,带条件判断的循环等,就反过来比较难把命令式转化成约束式。
  2. Q: 对于找多项式零点的问题,我们把原始CSP转化成什么,作为所谓“解”,来规避什么问题?
    A: 转化成等价的数个interval CSPs即
    \(\langle f(x)=0;x\in[l,r]\rangle\),其中\(x\in\mathbb R;l,r\in F\).
    \(F\)是计算机可表示的浮点数集,特别地,包括\(\pm \infty\).
    当\(r-l\)足够小,我们可以认为近似找到了解。
    规避问题:计算机能表示的实数是有限的,且方程未必有根式解。
    注:容易理解的是,如果理想中的一台计算机能表示无限个(所有的)实数,那么就肯定不需要interval CSPs. 另一方面,如果确保方程有根式解,那么其实也可以尝试用计算机精确表示解。虽然仍然只能表示有限个数,但是只要合理地设定一个足够大的集合,那么也是有可能在实际应用中足够的。因此这两个问题综合起来才是我们需要interval CSPs的原因。

标签:Constraint,示例,可以,编程,problems,约束,satisfaction,representation,CSP
来源: https://www.cnblogs.com/minor-second/p/15475462.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有