5

In an Alpha Beta search in that utilizes a Negamax framework, how does one collect principal variations to use in move ordering, and how does one use them, without using a transposition table?

Additionally, would it be different in a principal variation search, and do we collect and store important moves for quiescence search too? Please provide a code example.

  • I don't have time to provide a code example now. Refer to chessprogramming.wikispaces.com/Principal+variation for details. – SmallChess Mar 18 '15 at 0:13
  • I only use TT for PVs, it's easy and efficient. Stockfish does that, why would you not use it? Anyway, I've seen people use triangular-PV, Harm Geert Muller uses it a lot. Google him and the topic and you'll see it. I don't have much experience in that. – SmallChess Mar 18 '15 at 0:15
  • PVS doesn't change the PV collection. It's a technique for doing more work on the PV nodes. – SmallChess Mar 18 '15 at 0:18
  • Of course, you'll need to store important nodes in QS. You'll need to update hashing. I update the score and bound for a move in QS. – SmallChess Mar 18 '15 at 0:19
  • jonathan, I'd guess that you've seen sources similar to the site referenced in the first comment. What exactly have you found lacking in whatever sources you've read before? Spelling that out a bit might help you get answers as specifically tailored to your needs as possible. – ETD Mar 18 '15 at 0:20
1

In an Alpha Beta search in that utilizes a Negamax framework, how does one collect principal variations to use in move ordering

Every strong modern chess engine which uses alpha-beta search uses a transposition table to store the PV move for ordering. If you are writing a chess engine, you should this high-performance, now ubiquitous technique.

and how does one use them, without using a transposition table?

There are various approaches to storing the principal variation which are commonly used alongside a transposition table. The most popular of these is a triangular PV table. The Chess Programming Wiki has a page on this, which includes code examples as you requested.

Additionally, would it be different in a principal variation search

No. Move ordering can be implemented in the same way for both pure alpha-beta and for PVS. The only difference is the way in which the ordered moves are searched.

and do we collect and store important moves for quiescence search too?

No. Standard techniques used to order captures are sufficient in quiescence search (namely, MVV/LVA and Static Exchange Evaluation). The move stored in the transposition table may not be a capture, so it is unlikely to be useful for quiescence.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.