Range minimum query

Finds the position of the minimum element between two given indices in an array in constant time.
123 téléchargements
Mise à jour 22 déc. 2014

Afficher la licence

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

Citation pour cette source

Georgios Papachristoudis (2026). Range minimum query (https://fr.mathworks.com/matlabcentral/fileexchange/48841-range-minimum-query), MATLAB Central File Exchange. Extrait(e) le .

Compatibilité avec les versions de MATLAB
Créé avec R2014b
Compatible avec toutes les versions
Plateformes compatibles
Windows macOS Linux
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et MATLAB Answers
Tags Ajouter des tags
rmq
Version Publié le Notes de version
1.1.0.0

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

1.0.0.0