DarkThought sorts MVV/LVA without looking at any moves?
Posted: Sat Apr 25, 2015 5:36 am
I came across a surprising statement in Heinz's thesis, "Scalable Search in Computer Chess".
Heinz writes (Appendix A.4.1 Node Expansion):
"… node-expansion step achieves good move ordering by arranging the sequence of recursive search calls as follows.
1. Hashed move form transposition table (L/U),
2. capture moves in MVV/LVA order (L/U),
3. killer moves (U),
4. history moves (U),
5. statically pre-sorted remaining moves (U).
This ordering scheme enjoys wide-spread use in computer chess because it represents one of the best currently known according to many independent researchers. A nice side effect of the scheme is that it saves precious memory bandwidth because it does not require the creation of a move list prior to history-move selection."
That's quite a trick, sorting all captures into MVV/LVA order without generating any move lists. In other words, there is no move generation performed for MVV/LVA sorting.
How does one sort without extracting moves into some kind of list-like (or array-like) data structure? Heinz asserts this technique is used in virtually every performant chess engine in existence.
Rob
Heinz writes (Appendix A.4.1 Node Expansion):
"… node-expansion step achieves good move ordering by arranging the sequence of recursive search calls as follows.
1. Hashed move form transposition table (L/U),
2. capture moves in MVV/LVA order (L/U),
3. killer moves (U),
4. history moves (U),
5. statically pre-sorted remaining moves (U).
This ordering scheme enjoys wide-spread use in computer chess because it represents one of the best currently known according to many independent researchers. A nice side effect of the scheme is that it saves precious memory bandwidth because it does not require the creation of a move list prior to history-move selection."
That's quite a trick, sorting all captures into MVV/LVA order without generating any move lists. In other words, there is no move generation performed for MVV/LVA sorting.
How does one sort without extracting moves into some kind of list-like (or array-like) data structure? Heinz asserts this technique is used in virtually every performant chess engine in existence.
Rob