Buckets, Heaps, Lists, and Monotone Priority Queues
SIAM Journal on Computing
The influence of caches on the performance of sorting
Journal of Algorithms
A Shortest Path Algorithm for Edge-Sparse Graphs
Journal of the ACM (JACM)
Algorithm 360: shortest-path forest with topological ordering [H]
Communications of the ACM
STL tutorial and reference guide, second edition: C++ programming with the standard template library
STL tutorial and reference guide, second edition: C++ programming with the standard template library
Introduction to Algorithms
On the Uniqueness of the Selection Criterion in Neighbor-Joining
Journal of Classification
QuickJoin---fast neighbour-joining tree reconstruction
Bioinformatics
Clearcut: a fast implementation of relaxed neighbor joining
Bioinformatics
Engineering a cache-oblivious sorting algorithm
Journal of Experimental Algorithmics (JEA)
An adaptive resolution tree visualization of large influenza virus sequence datasets
ISBRA'07 Proceedings of the 3rd international conference on Bioinformatics research and applications
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
Large-scale neighbor-joining with NINJA
WABI'09 Proceedings of the 9th international conference on Algorithms in bioinformatics
Hi-index | 0.00 |
The complexity of the neighbor joining method is determinedby the complexity of the search for an optimal pair ("neighbors tojoin") performed globally at each iteration. Accelerating the neighbor-joining method requires performing a smarter search for an optimal pairof neighbors, avoiding re-evaluation of all possible pairs of points at eachiteration. We developed an acceleration technique for the neighbor-joining method that significantly decreases complexity for important applicationswithout any change in the neighbor-joining method. This techniqueutilizes the bucket data structure. The pairs of nodes are arranged inbuckets according to values of the goal function δij = ui+uj-dij. Bucketsare adaptively re-arranged after each neighbor-joining step. While thepairs of nodes in the top bucket are re-evaluated at every iteration, pairsin lower buckets are accessed more rarely, when the algorithm determinesthat the elements of the bucket need to be re-evaluated based on newvalues of δij. As a result, only a small portion of candidate pairs of nodesis examined at each iteration. The algorithm is cache efficient, since the bucket data structures areable to exploit locality and adjust to cache properties.