I have a -maybe quite simple- doubt about SEE.
I have always refused to implement a SEE routine. (you can say i'm lazy)
In my engine, I use some kind of SEE at "one-level", only recognizing if a move is a good capture or not. This is the pseudo-code:
Code: Select all
if captured_piece is undefended then return TRUE else if val(attacking_piece) < val(piece_captured) then return TRUE else //houston, we have a problem if val(attacking_piece) > val(piece_captured) && val(attacking_piece) <= val(piece_captured) + val(minimum_defender) then return true //because i want to search on this move else return False
I also use this routine for move ordering in the main search.
This is working very well in my tests, but I see some kind of node explosion when searching at depths over 10 and so on.
I believe that changing my simple routine to a more sophisticated SEE could improve this node explosion, but i'm not sure. So here is my question:
¿has anybody proven that SEE _WILL FOR SURE_ reduce the amount of nodes visited?