Range minimum query

Finds the position of the minimum element between two given indices in an array in constant time.
123 download
Aggiornato 22 dic 2014

Visualizza la licenza

Given an array A[1...N], it finds the position of the element with the minimum value between two given indices.
It returns the answer in constant time. The RMQ problem can be used to recover the lca (lowest common ancestor) in a graph in constant time. See http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor for more details.
Time complexity: O(N log(N))
Space complexity: O(N log(N))
Example
A = [-1 5 0 3 -6 4 2 1 0 -1];
N = length(A);
M = rmq(A);
% Find the position of the minimum element between indices i, j
i = 2;
j = 6;
k = floor(log2(j - i + 1));
if A(M(i,k+1)) <= A(M(j-2^k+1,k+1))
idx = M(i,k+1);
else
idx = M(j-2^k+1,k+1);
end

Cita come

Georgios Papachristoudis (2024). Range minimum query (https://www.mathworks.com/matlabcentral/fileexchange/48841-range-minimum-query), MATLAB Central File Exchange. Recuperato .

Compatibilità della release di MATLAB
Creato con R2014b
Compatibile con qualsiasi release
Compatibilità della piattaforma
Windows macOS Linux
Categorie
Scopri di più su Matrices and Arrays in Help Center e MATLAB Answers
Tag Aggiungi tag
rmq

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Versione Pubblicato Note della release
1.1.0.0

I changed the title to a more descriptive one and added an image.

1.0.0.0