A new idea to solve RMQ problem

Revision en15, by FeS2_qwq, 2024-08-16 11:21:37

My English is poor as a Chinese...

A few days ago I post an idea at a Chinese Online Judge named Luogu.This is my first idea created by myself to solve RMQ problem. Unfortunately it's Chinese.The basic idea is divide the array into $$$n^\frac{4}{7}$$$ part,each part has a length of $$$n^\frac{3}{7}$$$.We name it as a "big block".Then we divide each block into $$$n^\frac{2}{7}$$$ part,each part has a length of $$$n^\frac{1}{7}$$$.Thus it can has a time complexity of $$$O(n^\frac{8}{7})$$$.It is quicker than ST Table both in theory and practice.

And then I create second idea.AWAK there is a algo called Four Russian.It can solve RMQ problem at a time complexity $$$O(n\log\log n)$$$.We found when we finish initialization,we are actually solve an RMQ problem but a smaller scale.Then we use Four Russian to this smaller RMQ problem,and then our time complexity become $$$O(n\log\log\log n)$$$.And we do it again while $$$n\neq 1$$$,it can do it in a time complexity of $$$O(n\log^*n)$$$.This can be called Sqrt Tree Set Four Russia(I like to call it as Log Tree)

This is a very outstanding algorithm but it's not enough.To improve it,we can set up many data structure and the .We set $$$T(m,n)$$$ to be the complexity of the $$$m$$$-layer data structure.We build a Sqrt Tree with $$$B=T(m-1,n)$$$ and let it be the $$$m$$$-layer data structure.Between block and block we use the $$$m-1$$$-layer data structure to solve the problem and in a block we use next layer of this data structure,then,as Base Four Russian Multiple Sqrt Tree(BFRMST) I called,finish.It is a algo of $$$O(n\alpha(n))$$$

FeS2_qwq independently invented this algorithm.

Lumos_QwQ and zhaoyuebo tested the theoretical correctness of this algorithm.

zyb_txdy coding for it.

You can find the algo Sqrt Tree on here.

Fun fact:when I finish it,CF crashed I use mirror to post it.

Tags rmq, new algo, algorithms, data structures

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en17 English FeS2_qwq 2024-08-19 09:11:31 1 Tiny change: 'there is a algo call' -> 'there is an algo call'
en16 English FeS2_qwq 2024-08-16 11:35:24 1 Tiny change: 'sh.It is a algo of $' -> 'sh.It is an algo of $'
en15 English FeS2_qwq 2024-08-16 11:21:37 0 (published)
en14 English FeS2_qwq 2024-08-16 11:20:17 126 (saved to drafts)
en13 English FeS2_qwq 2024-08-16 10:00:36 0 (published)
en12 English FeS2_qwq 2024-08-16 10:00:24 4 Tiny change: 'O(n^\frac{7}{8})$.It is ' -> 'O(n^\frac{8}{7})$.It is ' (saved to drafts)
en11 English FeS2_qwq 2024-08-16 09:53:58 0 (published)
en10 English FeS2_qwq 2024-08-16 09:53:45 0 (saved to drafts)
en9 English FeS2_qwq 2024-08-16 09:47:00 0 (published)
en8 English FeS2_qwq 2024-08-16 09:46:45 65 (saved to drafts)
en7 English FeS2_qwq 2024-08-16 09:44:11 0 (published)
en6 English FeS2_qwq 2024-08-16 09:43:48 2 Tiny change: 'f $O(n\alpga(n))$\n\n' -> 'f $O(n\alpha(n))$\n\n'
en5 English FeS2_qwq 2024-08-16 09:43:26 31 Tiny change: 'ed,finish.\n\nFeS2_q' -> 'ed,finish.It is a algo of $O(n\alpga(n))$\n\nFeS2_q'
en4 English FeS2_qwq 2024-08-16 09:42:29 919
en3 English FeS2_qwq 2024-08-16 09:10:51 454
en2 English FeS2_qwq 2024-08-15 10:42:25 22 Tiny change: 'ctice.\n\n' -> 'ctice.\n\nTo be continued...\n\n'
en1 English FeS2_qwq 2024-08-15 10:40:47 530 Initial revision (saved to drafts)