由来
噪声是信号处理和图像处理中很让人厌烦的东西,往往我们想方设法去消除噪声或者减弱噪声,恢复原来的信号或者图像。可是,在矩阵运算过程中,
我们可能会遇到一些特殊的矩阵,计算复杂度如噪声毛刺一般,比周围领域内的计算复杂度许多。(病态系统)这就象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
这篇文章对单精度算法的时间复杂度进行了分析和解释,为什么实际使用的单精度算法非常好。