[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: computer-go: Authenticating the identity of a remote go-playing computer program



On Mon, Dec 11, 2000 at 02:25:58PM -0500, Don Dailey wrote:
> 
> > I'm not claiming that a "deterministic" program can't do simulated
> > annealing and machine learning and so forth. (I vaguely remember that
> > someone else may have claimed that, but I definitely remember that it
> > wasn't me.:-) I did my Ph. D. thesis on Monte Carlo simulations of
> > quantum mechanics, and I learned a thing or two about PRNGs along the
> > way. I even went to some trouble to make my Monte Carlo programs as
> > deterministic as possible, in part for debugging. My argument here is
> > only about the difficulty of making a program's time consumption
> > deterministic.
> 
> I didn't  say YOU claimed  this.  In  fact I  assumed you knew better,
> because you seem to at least understand  the issues.  You seem bent on
> trying to prove to me that programs written in a non-deterministic way
> are non-deterministic,  which  isn't very useful.   All I  am claiming
> that you can write a strong deterministic program that is not severely
> handicapped.  You are not making any points I don't disagree with.
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Perhaps that's part of the problem.:-|

> >                                                 I hope to convince you
> > that while ignoring the real time clock may work well for your
> > programs, it does not necessary work well for other people's programs.
> 
> Ok,  so now you   have identified the  single  point worthy  of debate
> because this  is where we disagree.   I maintain that you don't ignore
> the concept of TIME, you  just have to adjust your  point of view that
> you   somehow just HAVE to  use  a non-deterministic  measurment of it
> because it makes you unhappy to do otherwise.  You seem to accept that
> it's ok to use deterministic random numbers (psuedo-random), why can't
                                                               ^^^^^^^^^
> you  use  a deterministic  measure   of time?   Because  it  makes you
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> unhappy?   
  ^^^^^^^^

Because you haven't convinced me that it's practical to do so. Because
I'm not aware of any programs which successfully do so, and I think
that's not a coincidence: trying to do so seems to me to be a severe
limitation on a program.

Don Dailey also wrote in another message that
> I never claimed it was impossible to incorporate non-randomness into a
> program,  only  that I  don't  think it  "limits"  a  program.  It was
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> earlier implied that   determinism  was a limiting    requirement that
> prevented sophisticated AI techniques from being used.  

I believe that on a typical modern system (vanilla Windows or Unix)
it's often impractical to avoid using an external real-time clock to
estimate elapsed time. It's relatively practical to avoid using such a
clock if your program has very predictable memory access patterns,
e.g. just doing FFTs and matrix multiplications. It's much less
practical when your program has memory access patterns which depend on
the input data in a complicated way, as in e.g. many search algorithms
for NP-or-harder problems.

A great way to start convincing me that bounding runtime in an
open-loop way isn't in practice an important limit for search programs
would be to show me an example of a search program as powerful as GCC,
SMLNJ, SBCL/CMUCL, or crafty which does bound runtime in an open-loop
way. The best example that I'm aware of is early versions of Handtalk:
IIRC Handtalk was so fast in general that the programmer didn't bother
to check the real-time clock. However, my recollection is that
Handtalk then lost on time against a pathological opponent in a
tournament, and the programmer switched over to checking the clock!

If you can't show a successful example of your design philosophy, I'll
be predisposed to be skeptical. However, you could still start
convincing me by explaining, in somewhat more detail than you have so
far, how you propose to make your application code estimate the
elapsed runtime in the presence of nontrivial, input-data-dependent
memory access patterns.

-- 
William Harold Newman <william.newman@xxxxxxxxxxxxxxxxx>
software consultant
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C  B9 25 FB EE E0 C3 E5 7C