Parallel Parentheses Matching
williamdue.github.io
Parallel Parentheses Matching
1–10 of 21 posts
Re: Parallel Parentheses Matching
#2Re: Parallel Parentheses Matching
#3Earlier versions of the work were featured on HN [3][4], but this is much more sophisticated. (plus a few more zero-comment submissions)
The basic idea (bicyclic semigroup and binary search) is the same as the submission. I think earliest attribution is to Bar-On and Vishkin[5] from 1985. Another implementation of this idea is in pareas[6], an experimental GPU-accelerated compiler.
I believe this work is publishable and would love to work with a student to resubmit it. Especially if you're a student or prof in Sydney, please reach out.
[1]: https://arxiv.org/abs/2205.11659
[2]: https://github.com/raphlinus/raphlinus.github.io/issues/66
[3]: https://news.ycombinator.com/item?id=24385095
[4]: https://news.ycombinator.com/item?id=27164009
Re: Parallel Parentheses Matching
#4Fun article and worth the read, but sadly none of the LaTeX was rendered for me (assuming it was supposed to).
Re: Parallel Parentheses Matching
#5Re: Parallel Parentheses Matching
#6Re: Parallel Parentheses Matching
#7You can solve the same problem with Range Min Query Tree. The query for balanced or unbalanced parentheses is O(log N). A two or three level RMQTree can represent billions of parentheses already (a two-level tree of 65536 branch factor = 4B parentheses). The query is O(65536 + 65536) or effectively O(1). For a four-level tree of 256 branch factor, the query is O(256 + 256 + 256 + 256) or O(1). It becomes a problem of memory access on the number of levels vs the number of entries to process per level. A total = 0 and min > 0 mean the parentheses are balanced.
The parentheses can be broken up into multiple segments, and be processed in parallel. Multiple RMQTrees can be used, one per segment, and the trees can be processed in parallel. Need to have a final pass to sum up the 'total' and 'min' from all the RMQTrees. Parallel processing probably doesn't gain much.
Re: Parallel Parentheses Matching
#8Re: Parallel Parentheses Matching
#9Re: Parallel Parentheses Matching
#10This is an interesting read. You can solve the same problem with Range Min Query Tree. The query for balanced or unbalanced parentheses is O(log N). A two or three level RMQTree can represent billions of parentheses already (a two-level tree of 65536 branch factor = 4B parentheses). The query is O(65536 + 65536) or effectively O(1). For a four-level tree of 256 branch factor, the query is O(256 + 256 + 256 + 256) or…