L'algoritmo MJRTY si propone di risolvere il problema di trovare l'elemento di maggioranza in un flusso (un elemento che comprende più del 50% del flusso). Moore ha proposto di risolvere questo problema utilizzando solo 2 informazioni e una singola scansione dei dati. Immagina di avere un flusso di nomi ("matt", "timon", "matt", "matt", "rob", "ben", ...) e volevi sapere se qualche nome appariva in più della metà del flusso. Boyer e Moore hanno proposto quanto segue:
count = 0
majority = ""
for val in stream:
if count == 0:
majority = val
count = 1
elif val == majority:
count += 1
else:
count -= 1
print majority if count > 0 else "no majority!"
se stream = A A A A B B B B C = > risultato = C, ma non è la verità.
passo dopo passo
step val majority count
0 A A 1
1 A A 2
2 A A 3
3 A A 4
4 B A 3
5 B A 2
6 B A 1
7 B A 0
8 C C 1
Informazioni su questo algotithm: link