组合数学练习5

    复习到了SA,正好做了一道利用SA解决LP问题,是非常基础的一道题目。
    求x1-3x2的最小值?
    其中满足的条件是:2x1+3x2<=6,-x1+x2<=1,x1>=0,x2>=0,一看可能会有点熟悉的题目吧,是啊,这个是高中最普遍的解决线性规划的问题,我们当时的变量不多,如果变量好多的话,解决就要需要电脑了,现在我用SA的想法来解决问题。
   首先要加入衬垫变数x3,x4,使得2x1+3x2+x3=6,-x1+x2+x4=1,其中x1>=0,x2>=0,x3>=0,x4>=0.然后利用SA算法,下面有表格做说明
0 -1 -3 0 0
  x1 x2 x3 x4
6 2 3 1 0
1 -1 1 0 1

做法首先确定了其中的基底x3和x4(两个是线性无关的),然后找到第一行中的是负数的最小的那个,然后纵向找到一个正数即3,接着就是线性代数的知识,使得基底进行变动,并且使得第一行中的负数变为0
3 -4 0 0 3
x1 x2 x3 x4
3 5 0 1 -3
1 -1 1 0 1

下面的操作和上面的类似,最终得到
27/5 0 0 4/5 3/5
x1 x2 x3 x4
3/5 1 0 1/5 -3/5
8/5 0 1 1/5 2/5

对应表格中的左上角的数正是我们所求数的相反数,所以最小的值因为-27/5,而此时我们可以得到x1=3/5,x2=8/5

你可能感兴趣的:(算法)