您的位置:首页 > 其它

差分约束系统

2015-10-13 01:08 169 查看

差分约束系统

总结近两天的学习,真是吐血三升,尤其あなたを想っている。。。日语好高大上。。

首先引出差分约束系统的定义

引自百度百科。。。

如下

如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。

接下来开始分析如何转化为图论问题

首先是>=问题求解方法(详细论述)

对于一组不等式(1)

x1-x0>=w(0,1);

x2-x1>=w(1,2);

x3-x2>=w(2,3);

x4-x3>=w(3,4);

求x0~x4的最小值。

显然 上述不等式组(1)变形得

不等式组(2)

x1>=x0+w(0,1);

x2>=x1+w(1,2);

x3>=x2+w(2,3);

x4>=x3+w(3,4);

我们定义w(i,j)为从第i个点到第j个点的边权,那么我们可以理解为从第i个点到第j个点的最近值,正好是最长路进行“松弛操作”

也即

if  dist[j]< dist[i]+w[i,j]
then dist[j]:=dist[i]+w[i,j];


即j的权值即为由第i个点恰好走最低限度的要求需要的j的值是多少。由此,我们可以得出只要这条路能走,那么j的值必然是在约束条件下的取值的极小值,因为j的值是由i按照约束条件的最低限度而转移出来的,正确性显而易见,只要走这条路得出的值必然是每个点所能取到的最小值。再根据上述的“松弛操作”即可得出从求出不等式组(1)的最小的一组解。当不等式之间出现相互约束,时该组不等式组无解,因为嘉定如下不等式组(3)

x2-x1>=w(1,2)

x1-x2>=w(2,1)

这显然是无解的

因为

既要求x2比x1大w(1,2)又要求x2比x1大w(2,1)

Obviously,(突然地高大上,(^__^) 嘻嘻……)

当x1取到某个值,x2必须至少比x1大w(1,2);

当x2取到某个比x1大w(2,1)时又要求x1必须至少比x2大w(2,1)

显然 x1出现两个值,矛盾,由此得出无解。

说明

(解该不等式组要求w值均为非负值,由定义也可以推知,不能出现负值,因为当a比b大一个负值时,即b比a小一个正值。不等号方向便被改变。除非认为是绝对值即认为是距离才可以,那么就认为大于负值其实是小于负值,只是绝对值差要大这个值。转化为大的比小的大一个负值的相反数)。

至此将不等式组(1)转化为一张图求最长路来解得该组不等式组的充分性成立



满足不等式组(1)的最小解=>图中的最长路

只要走图中的这条路,必须按照约束条件来给下一个点赋值,而这个值又是按照约束条件的最低限度来赋的其值必然是最小解;

当求最长路时出现正环时显然无解。对应上述不等式组(3)

至此对于形如不等式组(1)的解决方法论证完毕。

总结

当有一组形如x-y>=z的一组不等式时可以由其建立起一张约束图,然后在这张图上跑最长路;

自然语言描述具体实现办法

因为首先不知道这张图是否为连通的,避免图不连通的情况出现,那么我们可以设置一个”超级源点”(引自多个博客的说法);

根据题设条件将源点与所有约束图中的点连边;

例如 题中要求所有边非负

如下

xi-x0>=0

由此便可得出从源点向每条边连出一条边权为0的边

要求为大于0

即xi-x0>0

其形式不符合标准式,无法转化为约束图中的点,那么由于差分约束研究的是整数问题,那么该约束条件可以转化为

xi-x0>=1

这样就可以连出从x0到xi的边权为1的边。

跑SPFA (+SLF,LLL) 求出最长路即可。由此边求出了在约束条件下的最小解。

关于<=问题求解最大解

解决方法类似,只是全部转化为<=的形式然后跑最短路即可

总结(不详加展开,请自行论证(脑补))

同样x2-x1<=w(1,2)有x2<=x1+w(1,2)



if dist[x2]>dist[x1]+w(1,2)

then dist[x2]:=dist[x1]+w(1,2)

由此在约束条件下每次都是约束条件允许的最大范围中取值,由此便易推知,当跑最短路时得出的为满足约束条件的最大解。

同样的,在有负环时无解。即既要求x2比x1小w(1,2)有要求x1比x2小w(2,1)同样推出矛盾。

综上所述



=型 求其满足约束条件的最小解==>建图求最长路

<= 型 求其满足约束条件的最大解==>建图求最短路

无论如何都是由减数指向被减数连边且必须化成标准式,否则开区间无最值,必须等号成立。

代码明天补上。

鸣谢(万分感激教导(附带、超链接))

Void-man

xuezhongfenfei 生活总是要微笑着面对~

有间博客

特别鸣谢

奥神t14t41t 神犇的指导,快被我气炸的说。。。

ametake。。。没啥说的。。。

半夜写博客好困。。。


!







国风·卫风·氓

 氓之蚩蚩,抱布贸丝。匪来贸丝,来即我谋。

 送子涉淇,至于顿丘。匪我愆期,子无良媒。

 将子无怒,秋以为期。

 

 乘彼垝垣,以望复关。不见复关,泣涕涟涟。

 既见复关,载笑载言。尔卜尔筮,体无咎言。

 以尔车来,以我贿迁。

 

 桑之未落,其叶沃若。于嗟鸠兮,无食桑葚!

 于嗟女兮,无与士耽!士之耽兮,犹可说也。

 女之耽兮,不可说也。

  

 桑之落矣,其黄而陨。自我徂尔,三岁食贫。

 淇水汤汤,渐车帷裳。女也不爽,士贰其行。

 士也罔极,二三其德。

 三岁为妇,靡室劳矣;夙兴夜寐,靡有朝矣。

 言既遂矣,至于暴矣。兄弟不知,咥其笑矣。

 静言思之,躬自悼矣。

 

 及尔偕老,老使我怨。淇则有岸,隰则有泮。

 总角之宴,言笑晏晏。信誓旦旦,不思其反。

 反是不思,亦已焉哉!

 翻译(醉了。。。)

  无知农家小伙子,怀抱布匹来换丝。其实不是真换丝,找此借口谈婚事。

  送你渡过淇水西,到了顿丘情依依。不是我要误佳期,你无媒人失礼仪。

  希望你不要生气,我们以秋天为期。

  登上那堵破土墙,面朝复关凝神望。复关遥远不得见,心里忧伤泪千行。

  情郎忽从复关来,又说又笑喜洋洋。你去卜卦问吉祥,卦象吉祥心欢畅。

  赶着你的车子来,把我财礼往上装。

  桑树叶子未落时,挂满枝头绿萋萋。唉呀那些斑鸠呀,别把桑叶急着吃。

  唉呀年轻姑娘们,别对男人情太痴。男人要是迷恋你,要说放弃也容易。

  女子若是恋男子,要想解脱不好离。

  桑树叶子落下了,又枯又黄任飘零。自从嫁到你家来,三年挨饿受清贫。

  淇水滔滔送我归,车帷溅湿水淋淋。我做妻子没差错,是你奸刁缺德行。

  做人标准你全无,三心二意耍花招。

  婚后三年为你妇,繁重家务不辞劳。早起晚睡不嫌苦,忙里忙外非一朝。

  你的目的一达到,逐渐对我施凶暴。兄弟不知我处境,个个见我都讥笑。

  静下心来想一想,独自黯然把泪抛。

  白头偕老当年誓,如今未老生怨愁。淇水滔滔终有岸,沼泽虽宽有尽头。

  回想少时多欢聚,说笑之间情悠悠。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息