Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Expander graph
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== AKS sorting network and approximate halvers === {{Main|Sorting network}} Sorting networks take a set of inputs and perform a series of parallel steps to sort the inputs. A parallel step consists of performing any number of disjoint comparisons and potentially swapping pairs of compared inputs. The depth of a network is given by the number of parallel steps it takes. Expander graphs play an important role in the AKS sorting network, which achieves depth {{math|''O''(log ''n'')}}. While this is asymptotically the best known depth for a sorting network, the reliance on expanders makes the constant bound too large for practical use. Within the AKS sorting network, expander graphs are used to construct bounded depth {{mvar|ε}}-halvers. An {{mvar|ε}}-halver takes as input a length {{mvar|n}} permutation of {{math|(1, …, ''n'')}} and halves the inputs into two disjoint sets {{mvar|A}} and {{mvar|B}} such that for each integer {{math|''k'' ≤ {{frac|''n''|2}}}} at most {{mvar|εk}} of the {{mvar|k}} smallest inputs are in {{mvar|B}} and at most {{mvar|εk}} of the {{mvar|k}} largest inputs are in {{mvar|A}}. The sets {{mvar|A}} and {{mvar|B}} are an {{mvar|ε}}-halving. Following {{harvtxt|Ajtai|Komlós|Szemerédi|1983}}, a depth {{mvar|d}} {{mvar|ε}}-halver can be constructed as follows. Take an {{mvar|n}} vertex, degree {{mvar|d}} bipartite expander with parts {{mvar|X}} and {{mvar|Y}} of equal size such that every subset of vertices of size at most {{mvar|εn}} has at least {{math|{{sfrac|1 – ''ε''|''ε''}}}} neighbors. The vertices of the graph can be thought of as registers that contain inputs and the edges can be thought of as wires that compare the inputs of two registers. At the start, arbitrarily place half of the inputs in {{mvar|X}} and half of the inputs in {{mvar|Y}} and decompose the edges into {{mvar|d}} perfect matchings. The goal is to end with {{mvar|X}} roughly containing the smaller half of the inputs and {{mvar|Y}} containing roughly the larger half of the inputs. To achieve this, sequentially process each matching by comparing the registers paired up by the edges of this matching and correct any inputs that are out of order. Specifically, for each edge of the matching, if the larger input is in the register in {{mvar|X}} and the smaller input is in the register in {{mvar|Y}}, then swap the two inputs so that the smaller one is in {{mvar|X}} and the larger one is in {{mvar|Y}}. It is clear that this process consists of {{mvar|d}} parallel steps. After all {{mvar|d}} rounds, take {{mvar|A}} to be the set of inputs in registers in {{mvar|X}} and {{mvar|B}} to be the set of inputs in registers in {{mvar|Y}} to obtain an {{mvar|ε}}-halving. To see this, notice that if a register {{mvar|u}} in {{mvar|X}} and {{mvar|v}} in {{mvar|Y}} are connected by an edge {{mvar|uv}} then after the matching with this edge is processed, the input in {{mvar|u}} is less than that of {{mvar|v}}. Furthermore, this property remains true throughout the rest of the process. Now, suppose for some {{math|''k'' ≤ {{frac|''n''|2}}}} that more than {{mvar|εk}} of the inputs {{math|(1, …, ''k'')}} are in {{mvar|B}}. Then by expansion properties of the graph, the registers of these inputs in {{mvar|Y}} are connected with at least {{math|{{sfrac|1 – ''ε''|''ε''}}''k''}} registers in {{mvar|X}}. Altogether, this constitutes more than {{mvar|k}} registers so there must be some register {{mvar|A}} in {{mvar|X}} connected to some register {{mvar|B}} in {{mvar|Y}} such that the final input of {{mvar|A}} is not in {{math|(1, …, ''k'')}}, while the final input of {{mvar|B}} is. This violates the previous property however, and thus the output sets {{mvar|A}} and {{mvar|B}} must be an {{mvar|ε}}-halving.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)