您的位置:首页 > 编程语言 > Go语言

Noise is good

2016-05-31 11:03 483 查看

由来

噪声是信号处理和图像处理中很让人厌烦的东西,往往我们想方设法去消除噪声或者减弱噪声,恢复原来的信号或者图像。可是,在矩阵运算过程中,

我们可能会遇到一些特殊的矩阵,计算复杂度如噪声毛刺一般,比周围领域内的计算复杂度许多。(病态系统)这就象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

这篇文章对单精度算法的时间复杂度进行了分析和解释,为什么实际使用的单精度算法非常好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法