Noise is good

由来

噪声是信号处理和图像处理中很让人厌烦的东西,往往我们想方设法去消除噪声或者减弱噪声,恢复原来的信号或者图像。可是,在矩阵运算过程中,
我们可能会遇到一些特殊的矩阵,计算复杂度如噪声毛刺一般,比周围领域内的计算复杂度许多。(病态系统)这就象simplex algorithm算法一样,按照常规思维看的话
需要O(m^2n)的计算复杂度,可是往往我们实验结果是线性的。这是为什么呢?这可以用smoothedcomplexity来解释。

matlab病态矩阵实验

构造病态矩阵 A,例如 n = 5 时 A 如下

 1     0     0     0     1
-1     1     0     0     1
-1    -1     1     0     1
-1    -1    -1     1     1
-1    -1    -1    -1     1

Test Code

% The script for ill-conditioned system example.
% date: 2015-11-22
% author: Clython

n = 80;
b = randn(n,1);

A = tril(ones(n) - ones(n)*2 + 2*eye(n));
A(:,end) = 1;
x = A\b;
disp('The ill-condition error :');
disp(norm(A*x - b));

% add noise to the matrix A
A = A + rand(n,n,'double');
x = A\b;
disp('After add noise to matrix A error:');
disp(norm(A*x - b));

Test Result

The ill-condition error :
7.2116

After add noise to matrix A error:
7.6684e-14

结论

噪声有时也是好的,可以噪声对原有的病态系统进行平滑,取得意想不到效果。

Why the Simplex Algorithm Usually Takes Polynomial Time

ABSTRACT
We introduce the smoothed analysis of algorithms, which is a hybrid of the worst-case and average-case analysis of algorithms. Essentially , we study the performance of algorithms under small random perturbations of their inputs. We show that the shadow vertex simplex algorithm has polynomial smoothed complexity.

Somothed Analysis of Algorithm

这篇文章对单精度算法的时间复杂度进行了分析和解释,为什么实际使用的单精度算法非常好。

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