[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
Look - here's the point: all bug-free algorithms are deterministic. That
is, given the same set of inputs it will produce the same output. It
doesn't matter if you have a random number generator - it is also
deterministic. Given the algorithm and the random seed, it will always
produce the same sequence. This is DETERMINISTIC. Sure it produces a
string of pseudo random numbers, and you can create things that behave
stochastically, but given the same start state (All the state including
random seeds etc) the algorithm will do exactly the same thing it did the
first time. Think of it as "conditionally" deterministic if you want.
So: A deterministic go program does not need to respond to a given board
position the same way each time it sees it as long as some other part of
its state is different (eg. random seed). Hence it's behavior appears to
have random qualities, but it is entirely deterministic. The point is
that if _all_ the state is the same, it should produce the same output.
It it doesn't then there are bugs, or just sloppy programming going on.
Matt
On Sun, 10 Dec 2000, Steve Korfhage wrote:
>
>
> >You make it sound as if avoiding deterministic behavior is some kind
> >of virtue and allowing it allows you to write more sophisticated
> >higher level AI programs. This is nonsense and has nothing to do with
> >AI.
>
> I am not portraying any "virtues", Please don't label me.
>
>
> >The only reason a computer based algorithm might be non-deterministic
> >is if you do not, or are not able to document all it's inputs.
>
> An algorithm may be deterministic, but it is not necessary that its results
> are. If you don't believe this, check into stochastic methods. The most
> common of these is "simulated annealing", which attempts to model a natural
> random process. This class of methods, which definitely has something to
> do with AI, are most commonly used for solving optimization and constraint
> based problems, and they *intentionally* introduce non-deterministic
> behavior. They have been proven to be beneficial for many types of problems.
>
> Stochastic methods and learning algorithms are the non-deterministic
> behaviors which I am concerned about eliminating. These approaches can be
> successfully used in solving problems with exponential search space, like Go.
>
> >These inputs might include flaky hardware or even software bugs where you
> >access uninitialzed memory. Some parallel algorithms are
> >non-deterministic, but only because it's not possible to predict the
> >state of the hardware at every given instance of execution. Even in
> >this case, it's no virtue, it's an undesirable side affect.
> >
> >I think we all agree that we don't wish to require all programs to be
> >properly deterministic in this respect, but having said that, I'll bet
> >most are. Since programs are deterministic by nature, you actually
> >have to program them explicity to change this behavior. Or if a
> >program is complex enough it will have enough bugs to make it
> >nondeterministic, which might mean it is accessing un-initialized
> >memory or some other goof like this.
> >
> >Don
>
> Obviously, programming/design errors are excluded from the definition of
> non-deterministic behavior for the purpose of this discussion. Like you
> said, most programs will probably have errors, but this is not intentional.
> I prefer to leave the implementation open to any method desired, and
> instead prevent or detect inputs coming from outside the algorithm.
>
>
>
> -----------------------------------------------------------------
> Steve
> s_korfhage@xxxxxxxxxxxxxxxxx
> korfhage@xxxxxxxxxxxxxxxxx
>