Временная сложность расчета MSD - PullRequest
0 голосов
/ 26 апреля 2020

Глядя на следующее, я бы предположил, что сложность по времени составляет O (T), где T - это количество строк в data, но из моего опыта с этим кодом это намного длиннее ...

data = S(i).POS;                                    %# 2 or 3 column vector, with T rows.
nData = size(data,1);
numberOfDeltaT = floor(nData/4);
msd = zeros(numberOfDeltaT,1);

for dt = 1:numberOfDeltaT
    deltaCoords = data(1+dt:end,:) - data(1:end-dt,:);
    squaredDisplacement = sum(deltaCoords.^2,2);    %# dx^2+dy^2+dz^2
    msd(dt) = mean(squaredDisplacement);
end

В качестве продолжения, распараллеливание этого (путем простого использования parfor) сохранит сложность такой же? Я бы предположил, что это зависит от количества потоков, но для чего-то вроде 2-4 потоков это не повлияет на Big-O, даже если фактическое время выполнения будет короче?

Это в MATLAB, кстати.

...