In this section we describe an algorithm for sorting kN packets on
an N-node k-dimensional array with maximum side length M in
steps. The algorithm closely follows the algorithm of
Section 8 for sorting on the butterfly network.
For the sake of brevity, we omit many of the details.
Sketch of proof:
The algorithm is essentially the same as the algorithm for sorting on
the butterfly. For simplicity, we assume that .
As before, there is a recursive subroutine for sorting
packets. We describe the action of the
subroutine on a
-dimensional subcube. (A
-dimensional
subcube of an array is a subgraph of the array consisting of
nodes whose labels
share the same
value in some set of
coordinates. For example, given a set
coordinates and a set
of values, there is a subcube consisting of
those nodes
such that
for
.) The array is lightly loaded by the factor of
to ensure that at each level of the recursion,
the number of packets entering any
-dimensional subcube is at
most
.
The first step is to choose a set of splitters. A set of
packets are randomly chosen to be splitter
candidates and then sorted by comparing every candidate with every
other candidate, which can be done in
steps. Next,
every
th candidate is selected to be a splitter.
The subcube routes packets on a leveled logical routing network as
described in Section 6. The splitters are placed
on the plateaus of the logical network, of them on plateau i. Since
there are only
splitters, only the first
plateaus get any, where
is some fixed constant less than one.
On plateau 1, the jth splitter is assigned to all of the nodes
labeled
, where
for
. A packet routes across dimension 1 edges on
plateau 1 until until it reaches a splitter that is larger than
itself. It then routes across dimension 2 edges to plateau 2.
Because dimension 1 edges do not appear in any later plateaus, each
of the M intervals is routed to a disjoint k-1 dimensional
subgraph of the logical network. On each of these subgraphs, M
splitters are positioned on plateau 2, and so on.
The subroutine calls itself recursively on subcubes with
dimensions. The recursion terminates when the number of packets
entering a subcube is less than kM, in which case they are sorted
sequentially in
time. There are
levels to the
recursion. As before, we can estimate the time required by the algorithm by
assuming that the time spent on a
-dimensional subcube is
equal to the expectation,
. The time is given by the recurrence
which has solution . To rigorously bound the time
we would have to argue that delay does accumulate across the levels of the
recursion.
The algorithm for sorting kN packets calls the subroutine once.
First, packets are randomly chosen to be
candidates and sorted using the subroutine. Next, every
th
candidate is selected to be a splitter. The splitters partition the
packets into intervals of size
. Since
, each interval has at most
packets. Since
the 1-dimensional subcubes can each sort kM packets in
steps using bubblesort, and
, Columnsort can be applied to
sort all of the packets in
steps.