Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Algorithms vs. knowledge - What to do next?

Author: Dann Corbit

Date: 23:26:57 06/03/02

Go up one level in this thread


On June 04, 2002 at 02:11:40, Russell Reagan wrote:

>I've always heard, better algorithms will beat the fastest code using a less
>efficient algorithm any day (IE MinMax vs. Alpha-Beta). My question is, when do
>you stop working on algorithmic type stuff and start working solely on adding
>knowledge to your program, and focus solely on the evaluation function?

Never.

>Or is
>there a even point at which you stop working on things like search and only
>focus on evaluation?

Never.

>To me, it seems like there is only so much you can do in terms of improving the
>searching methods, improving the efficiency of various other functions that are
>used often (is square attacked, make move, generate legal moves, etc.).

There is no known hard limit to the search efficiency, other than the search
must visit at least the number of nodes contained in the optimal path.

>Do you
>ever reach a point where the only thing left to significantly improve is the
>evaluation function?

Not a chance.

>
>If someone could advise a good plan for what to work on, kind of a step by step
>thing, I would love to see what others think of this process. Maybe a sort of
>"basics" check list, like Alpha-beta, transposition table, null move, etc. I'm
>nearing the point at which my engine will be working, and I'm reaching the "what
>next?" stage. An example of what I'm thinking is "I've implemented alpha-beta.
>What am I supposed to do to improve the alpha-beta algorithm?" Perhaps I'm
>misunderstanding what people mean when they talk about "improving algorithms"
>instead of "optimizing".

1.  Get something working.
2.  Add Alpha-Beta (if your first stab was pure mini-max)
3.  Add hashing
4.  Add null-move
4.  Add PVS or go to MTD(f)

>I'm kind of looking for some general advice as to what to do after the engine is
>successfully up and running, playing without any major known bugs. Do I take a
>step back and work on improving those often used functions, or do I move ahead
>and begin implementing new things like null move?

You can do things in parallel.  When you are bored with search, work on eval.
When you are bored with eval, work on search.  A lot of time will be spent
removing bugs.



This page took 0.02 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.