On Rearrangement of Items Stored in Stacks
There are n > 2 stacks, each filled with d items (its full capacity), and one empty stack with capacity d. A robot arm, in one stack operation (move), may pop one item from the top of a non-empty stack and subsequently push it into a stack that is not at capacity. In a labeled problem, all nd items are distinguishable and are initially randomly scattered in the n stacks. The items must be rearranged using pop-and-push moves so that at the end, the k^ th stack holds items (k-1)d +1, ..., kd, in that order, from the top to the bottom for all 1 < k < n. In an unlabeled problem, the nd items are of n types of d each. The goal is to rearrange items so that items of type k are located in the k^ th stack for all 1 < k < n. In carrying out the rearrangement, a natural question is to find the least number of required pop-and-push moves. In terms of the required number of moves for solving the rearrangement problems, the labeled and unlabeled version have lower bounds Ω(nd + ndlog d/log n) and Ω(nd), respectively. Our main contribution is the design of an algorithm with a guaranteed upper bound of O(nd) for both versions when d < cn for arbitrary fixed positive number c. In addition, a subroutine for a problem that we call the Rubik table problem is of independent interest, with applications to problems including multi-robot motion planning.
READ FULL TEXT