Sujet : Re: LineSort
De : acm (at) *nospam* muc.de (Alan Mackenzie)
Groupes : comp.theoryDate : 09. Jun 2025, 22:00:38
Autres entêtes
Organisation : muc.de e.V.
Message-ID : <1027i1m$avr$1@news.muc.de>
References : 1
User-Agent : tin/2.6.4-20241224 ("Helmsdale") (FreeBSD/14.2-RELEASE-p1 (amd64))
Richard Heathfield <
rjh@cpax.org.uk> wrote:
I have no doubt that I am not the first one here to reinvent
several wheels (my biggest wheel was AVL tree-balancing, but it's
by no means the only one).
So, if a Web search turns nothing up, how does one know that one
has been beaten to the punch?
One asks around, of course... so I'm asking.
Consider a set of n unequal items, such that EITHER Charles >
Lisa OR Lisa > Charles. You are NOT ABLE to compare two items
directly, but you are given enough ordered pairings that you can
reconstruct the proper order of the set.
I devised a solution ('LineSort') for this problem, and my
question is simply whether prior art beat me to it.
This sounds like something called a "topological sort", where there are
lots of ordering relationships between pairs of objects and the object is
to reach a total ordering of all the objects such that each of the given
pairs is in the correct order.
The standard application of this is in make utilities where there are
lots of "depends upon" relationships expressed in the Makefile.
Place the items in arbitrary order. Starting at the back B, work
through the pairings looking for an item A that is currently
ahead of B but belongs somewhere behind it, and do this:
1. cdefAghijkB
2. cdef_ghijkB
3. cdefghijkB_
4. cdefghijkBA
Keep going through all your pairings, looking for an item that
you can dislodge because it belongs behind B; everybody (back to
B) shuffles up one place, and the dislodged item goes in the
place that B vacates.
When you've run out of pairings, go round again, this time
starting with the item in front of B.
Once you're starting at the front, obviously you have to stop.
That's one pass.
Make as many passes as you need to until no movements occur
throughout the pass.
Clearly this is fairly easy to de-pessimise, but my question is
whether there is prior art for the general approach.
Any ideas?
I suspect if you search the Internet for "topological sort", you'll find
everything you want to know (if not a lot more).
--
Richard Heathfield
Email: rjh at cpax dot org dot uk
"Usenet is a strange place" - dmr 29 July 1999
Sig line 4 vacant - apply within
-- Alan Mackenzie (Nuremberg, Germany).