10,028 research outputs found

    Efficiently listing bounded length st-paths

    Full text link
    The problem of listing the KK shortest simple (loopless) stst-paths in a graph has been studied since the early 1960s. For a non-negatively weighted graph with nn vertices and mm edges, the most efficient solution is an O(K(mn+n2log⁥n))O(K(mn + n^2 \log n)) algorithm for directed graphs by Yen and Lawler [Management Science, 1971 and 1972], and an O(K(m+nlog⁥n))O(K(m+n \log n)) algorithm for the undirected version by Katoh et al. [Networks, 1982], both using O(Kn+m)O(Kn + m) space. In this work, we consider a different parameterization for this problem: instead of bounding the number of stst-paths output, we bound their length. For the bounded length parameterization, we propose new non-trivial algorithms matching the time complexity of the classic algorithms but using only O(m+n)O(m+n) space. Moreover, we provide a unified framework such that the solutions to both parameterizations -- the classic KK-shortest and the new length-bounded paths -- can be seen as two different traversals of a same tree, a Dijkstra-like and a DFS-like traversal, respectively.Comment: 12 pages, accepted to IWOCA 201

    Tree-Independent Dual-Tree Algorithms

    Full text link
    Dual-tree algorithms are a widely used class of branch-and-bound algorithms. Unfortunately, developing dual-tree algorithms for use with different trees and problems is often complex and burdensome. We introduce a four-part logical split: the tree, the traversal, the point-to-point base case, and the pruning rule. We provide a meta-algorithm which allows development of dual-tree algorithms in a tree-independent manner and easy extension to entirely new types of trees. Representations are provided for five common algorithms; for k-nearest neighbor search, this leads to a novel, tighter pruning bound. The meta-algorithm also allows straightforward extensions to massively parallel settings.Comment: accepted in ICML 201

    Convex Tours of Bounded Curvature

    Get PDF
    We consider the motion planning problem for a point constrained to move along a smooth closed convex path of bounded curvature. The workspace of the moving point is bounded by a convex polygon with m vertices, containing an obstacle in a form of a simple polygon with nn vertices. We present an O(m+n) time algorithm finding the path, going around the obstacle, whose curvature is the smallest possible.Comment: 11 pages, 5 figures, abstract presented at European Symposium on Algorithms 199

    Efficient pebbling for list traversal synopses

    Full text link
    We show how to support efficient back traversal in a unidirectional list, using small memory and with essentially no slowdown in forward steps. Using O(log⁥n)O(\log n) memory for a list of size nn, the ii'th back-step from the farthest point reached so far takes O(log⁥i)O(\log i) time in the worst case, while the overhead per forward step is at most Ï”\epsilon for arbitrary small constant Ï”>0\epsilon>0. An arbitrary sequence of forward and back steps is allowed. A full trade-off between memory usage and time per back-step is presented: kk vs. kn1/kkn^{1/k} and vice versa. Our algorithms are based on a novel pebbling technique which moves pebbles on a virtual binary, or tt-ary, tree that can only be traversed in a pre-order fashion. The compact data structures used by the pebbling algorithms, called list traversal synopses, extend to general directed graphs, and have other interesting applications, including memory efficient hash-chain implementation. Perhaps the most surprising application is in showing that for any program, arbitrary rollback steps can be efficiently supported with small overhead in memory, and marginal overhead in its ordinary execution. More concretely: Let PP be a program that runs for at most TT steps, using memory of size MM. Then, at the cost of recording the input used by the program, and increasing the memory by a factor of O(log⁥T)O(\log T) to O(Mlog⁥T)O(M \log T), the program PP can be extended to support an arbitrary sequence of forward execution and rollback steps: the ii'th rollback step takes O(log⁥i)O(\log i) time in the worst case, while forward steps take O(1) time in the worst case, and 1+Ï”1+\epsilon amortized time per step.Comment: 27 page
    • 

    corecore