comp.lang.ada
 help / color / mirror / Atom feed
From: tmoran@acm.org
Subject: Re: Generation of permutations
Date: Wed, 08 May 2002 05:23:35 GMT
Date: 2002-05-08T05:23:35+00:00	[thread overview]
Message-ID: <qD2C8.41$k97.25193567@newssvr13.news.prodigy.com> (raw)
In-Reply-To: ab8kf8$1mg$1@nh.pace.co.uk

> start running at instruction 0. Did the data set on disk get sorted? No? Go
> back to filling memory again.
>...
>So did the program get stuck in an infinite loop or is it just taking a
>*really* long time to sort the data?
  As Dewar points out, you just keep snapshots of all the states the
program has gone through and check for "Hey!  We've been here before!".
Your RAM + disk have a finite number of bits N so there are at most 2**N
possible states it can wander among.  If the instruction execution time is
t, it can't run more than t*2**N without repeating itself.  Or you can
calculate how long T some standard sort algorithm would take, maximum,
then abort if your randomly generated program is still running at T+1 sec.
If your random program generator will create all possible configurations
of RAM, then one of those is going to be identical to the standard sort
algorithm and eventually you are going to come across it, guaranteed.  If
there are N bits in RAM, this is guaranteed to take no more than
(T+1)*2**N.  And you may get lucky and find a better random program
sooner.  Slow, yes, but not interminable.  ;)

> assuming that one of the rules of slow sorting is that you
> guarantee the algorithm will eventually result in a sorted list of data.
  If no individual random program is allowed to run forever,
and your random generator generates all possible programs in your
finite machine, then
      loop
        generate random program;
        run it till done or it's in a loop or it's been running T seconds;
        exit when sorted;
      end loop;
is indeed guaranteed to sort your data in a finite, albeit long, time.
  You can do a similar thing to generate a general sort program.
      loop
        generate random program;
        appears_successful := true;
        for all possible sets of data on your disk loop
          run it till done or it's in a loop or it's been running T seconds;
          if not data_is_sorted then
            appears_successful := false;
            exit;
          end if;
        end loop;
        exit when appears_successful;
      end loop;
This too must terminate in a finite time, giving you a general sort
program that will work on any set of data on your disk.



  reply	other threads:[~2002-05-08  5:23 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-29 11:54 Generation of permutations Reinert Korsnes
2002-04-30 13:52 ` Ted Dennison
2002-04-30 14:20   ` Marin David Condic
2002-05-02 12:32     ` Robert Dewar
2002-05-02 15:47     ` Ted Dennison
2002-05-02 16:16       ` Mark Biggar
2002-05-03 13:04         ` Marin David Condic
2002-05-05  0:52           ` Robert Dewar
2002-05-05 23:11             ` tmoran
2002-05-06  2:13               ` Chad R. Meiners
2002-05-06 13:52                 ` Stephen Leake
2002-05-09 17:44                   ` Darren New
2002-05-09 18:07                     ` Stephen Leake
2002-05-09 20:58                       ` Darren New
2002-05-09 23:21                         ` tmoran
2002-05-09 23:51                           ` Darren New
2002-05-10  3:37                             ` tmoran
2002-05-10  3:59                               ` Darren New
2002-05-10 13:13                               ` Robert Dewar
2002-05-25 16:21                         ` Robert I. Eachus
2002-05-09 23:24                       ` Robert Dewar
2002-05-09 23:48                       ` Robert Dewar
2002-05-10  3:37                         ` tmoran
2002-05-10 15:10                         ` Chad R. Meiners
2002-05-11  4:04                           ` Robert Dewar
2002-05-16  1:35                             ` Chad R. Meiners
2002-05-11  4:05                           ` Robert Dewar
2002-05-06 15:46                 ` Wes Groleau
2002-05-06 16:21                   ` Chad R. Meiners
2002-05-06 16:33                   ` Darren New
2002-05-07  0:06                     ` tmoran
2002-05-07  0:26                       ` Darren New
2002-05-07  1:56                         ` tmoran
2002-05-07 10:39                           ` Robert Dewar
2002-05-07 17:25                             ` Chad R. Meiners
2002-05-08  2:27                               ` Robert Dewar
2002-05-08  8:44                               ` Mats Karlssohn
2002-05-07 17:00                         ` Wes Groleau
2002-05-06 21:33               ` Robert Dewar
2002-05-06 17:26             ` Marin David Condic
2002-05-07  7:35             ` tmoran
2002-05-07 13:22               ` Marin David Condic
2002-05-08  5:23                 ` tmoran [this message]
2002-05-08 14:10                   ` Marin David Condic
2002-05-09 16:20                     ` Darren New
2002-05-09 19:04                     ` tmoran
2002-05-08 16:20                   ` Darren New
2002-05-08 17:31                     ` tmoran
2002-05-08 17:39                     ` Chad R. Meiners
2002-05-07 15:34               ` Darren New
2002-05-07 17:44               ` Chad R. Meiners
2002-05-07 19:58                 ` tmoran
2002-05-07 21:05                   ` Turing-undecidable languages (OT) Chad R. Meiners
2002-05-08  8:24                     ` Danx
2002-05-08 17:16                       ` Chad R. Meiners
2002-05-10  2:37                       ` Robert Dewar
2002-05-08  9:16                     ` Dmitry A. Kazakov
2002-05-08 17:18                       ` Chad R. Meiners
2002-05-09 20:56                         ` Dmitry A.Kazakov
2002-05-09 16:18                           ` Chad R. Meiners
2002-05-10  2:52                             ` Robert Dewar
2002-05-08  2:17               ` Generation of permutations Robert Dewar
2002-05-03 13:13         ` Ted Dennison
2002-05-03 13:24           ` Lutz Donnerhacke
2002-04-30 15:06   ` Hyman Rosen
2002-05-01  8:40     ` Adrian Hoe
2002-05-01 19:53       ` Hyman Rosen
2002-05-11  1:52     ` Steven Deller
2002-05-02 16:24   ` Mark Biggar
2002-04-30 17:12 ` Wes Groleau
2002-04-30 22:57   ` Robert Dewar
2002-05-01  0:54     ` tmoran
2002-05-01  9:42       ` Florian Weimer
2002-05-02 12:34         ` Robert Dewar
2002-05-01 12:43       ` Robert Dewar
2002-05-01 15:05         ` TO WHOM IT MAY CONCERN Wes Groleau
2002-05-02 12:27           ` More on copyright, (Re: TO WHOM IT MAY CONCERN) Robert Dewar
2002-05-08 13:56             ` Wes Groleau
2002-05-08 18:01               ` Robert Dewar
2002-05-08 18:31                 ` Hyman Rosen
2002-05-09 13:41                 ` Wes Groleau
2002-05-01 12:46       ` Generation of permutations Robert Dewar
2002-05-01 18:22         ` OT:Copyright, was " tmoran
2002-05-01 21:56           ` Robert Dewar
2002-05-01 23:45             ` tmoran
2002-05-02 11:58               ` Robert Dewar
2002-05-01 14:55     ` Wes Groleau
2002-05-02 12:41       ` Robert Dewar
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox