一切问题都可以是最优化

来源:互联网 发布:云南特色饰品淘宝 编辑:程序博客网 时间:2024/05/16 08:07

一切问题都可以是最优化

本文版权属于重庆大学计算机学院刘骥,禁止转载

  • 一切问题都可以是最优化

最优化问题的一般定义是:存在目标函数f(x1,x2,...,xn),求满足特定条件的变量x1,x2,...,xn使得目标函数值最大或者最小。最典型的例子就是求解函数f(x)=ax2+bx+c的极值(初中数学的内容)。在现实生活中,人们求解一个问题,往往需要找到这个问题最好的解。比如找到最好的伴侣、找最好的工作、最好的美食、最省钱的商品,以及最XXX的XXX。在解决这些问题的过程中,最优化函数往往只存在于脑海中,求解也在脑袋里进行。因此我们往往得到的是这些问题的近似解,但如果要求得更为准确的结果,那么就需要严格的定义目标函数,采用最精确的数学方法求解。随着大数据的发展,如果你愿意,那么完全可以利用现代科技,解决找工作、择偶、吃饭等等一系列的问题。事实上,这一切都由高科技公司帮忙做了,只是大家浑然不觉而已。比如外卖网站会给你推荐美食,这些推荐就是根据一系列的最优化算法得出的。

因此如果抛开一些非常特殊的问题,例如打印“Hello World”(生拉硬扯也不是不行),大多数问题都可以纳入最优化的框架。下面列举一个简单的非最优化问题,我们试试如何将其转换为最优化问题。

问题:求解水仙花数
该问题就不再描述了,学过计算机的都懂。下面我们将其转换为最优化问题。设集合N是从100到999的自然数数列,niN,且n1=100n100=999ni<ni+1。定义函数g(ni)如下:

g(ni)={01h(ni)3+k(hi)3+l(hi)3niotherwise

函数h(ni)k(ni)l(ni)的定义如下:
h(ni)=ni/100

k(ni)=(ni%100)/10

l(ni)=ni%10

集合X={xi|xi{0,1}},且集合X的元素个数为100。求集合X使其满足:
argmaxXi=1100xig(ni)

上述函数称为称为水仙花数最优化问题的目标函数。可以看出只有当ni是水仙花数并且xi=1,目标函数求得最大值。
我们应该如何解决这个最优化问题呢?最愚蠢的方法是穷举。任何一个xi有两种取值,因此共需要穷举2100次。这显然是不现实的。可行的方法仍然是经典教科书中的从100到999测试每一个自然数是否为水仙花数
我们可以得出两个推论:
推论1:任何问题可以转化为最优化问题。
推论2:最优化问题并不一定能够直接求解,或者说问题转换为最优化问题之后,求解难度不一定会下降。
最终我们可以得出如下结论:
结论:如果一个问题不容易直接求解,那么可以尝试将其转化为最优化问题。若转换后的问题容易求解,那么就可以通过求解最优化问题得出原问题的解。

下面来看一个比较复杂的问题
这里写图片描述
如上图所示,这张图片充满了噪声,并且中间还缺少了一块,应该如何修补这张图片才能产生如下的结果呢?
这里写图片描述
真是一点头绪都没有。既然原始问题不好解,为什么不将问题转换一下呢?先做一些简单的定义,图像I上的任意像素点坐标为pC(p)表示像素点p对应的RGB值,N(p)表示像素点周围的邻居。最终修补后的图像,必然满足如下条件:

argminIE(I)=Ed(I)+λEs(I)

意思就是说,求得的I必然使得E(I)最小。看到这里,你一定想问为什么。没有为什么!事实只可能如此!任何函数都可以划分为两个部分,比如f(x)=kx+b=g(x)+λh(x),其中g(x)=kxh(x)=1λ=b。真正关键的是如何定义EdEs
Ed(I)=pID(p)

很好解释,Ed是每个像素D(p)值的和。
Es(I)=pIqN(p)S(p,q)

Es稍微复杂,它是p和邻居qs(p,q)值之和。如果用人类的语言来翻译,函数E(I)I上所有像素点的D(p)S(p,q)值的和,而D(p)只和p有关,S(p,q)p的邻居q有关。如果更直白一些,p的最优值由他自身和邻居决定。这几乎是宇宙间通行的法则。我们甚至可以用E(I)来描述人际关系、描述行星的运动、描述生命的演化等等。
你可能认为我在做梦。我当然是在做梦。因为D(p)S(p,q)压根就没有定义。怎么定义呢?恕我无能,我不知道。事实上众多的学者也不可能知道,他们顶多能够给出一些近似的模型。因此大量的研究其实就是在不断的细化某个函数、某个模型。

如果我们假设E(I)能够被定义出来,接下来的问题就变成了如何求解E(I)的最优解。穷举法总是可以在一定范围内适用的,但多数情况下会产生指数时间复杂度的算法。这个话题太长,下一篇文章再谈。
总结一下。读完本文,你所需要记住的内容有以下两点:
(1)如果一个问题不容易直接求解,那么可以尝试将其转化为最优化问题。若转换后的问题容易求解,那么就可以通过求解最优化问题得出原问题的解。
(2)很多问题经过前人的研究,已经有现成的最优化框架,你所能做的不过是细化这个框架,以及找到更好的解最优化问题的方法。

阅读全文
0 0
原创粉丝点击