Some people use Most Valuable Victim/Least Valuable Aggressor to improve capture moves order. But is Static Exchange Evaluation not always better.
So when to use SEE and when to use MVV/LVA ?
I can imagine MVV/LVA takes less time to compute.
MVV/LVA versus SEE
Moderator: Ras
-
Michel
- Posts: 2292
- Joined: Mon Sep 29, 2008 1:50 am
Re: MVV/LVA versus SEE
Please stop this trolling!!!!
Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
-
hgm
- Posts: 28464
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: MVV/LVA versus SEE
SEE ordering is not always better. If you have the choice between two profitable captures, B x protected R and P x unprotected N, the latter has SEE = +3, while the former has only SEE = +2. So playing by SEE would make you play PxN, after which the opponent saves his Rook, and you would end at +3. If you would have played in MVV order, you would play BxR first. If the opponent now saves his Knight, you would save your Bishop, and you would end at +5. If he would recapture your Bishop, you would then play PxN, and you would also end at +5.
So in SEE ordering you would not play the best move first.
Even if the MVV move brings no gain in itself (i.e. has SEE=0), like Q x protected Q, playing it before another profitable capture (say P x unprotected N) that would make you fail high can be better. The problem is that to make P x N fail high the opponent's reply to it would be an all-node, where he tries anything (to no avail). In particular he can try much more when he is still in posession of his Queen. Most of it silly Queen sacs, no doubt, but if you can trade Q, he can too, and he would certainly try that as well. So in the end you would still be searching the Q trade, but now with him taking the initiative. When you start by taking the Queen (MVV ordering), he would be forced to recapture it (any other captures leaving him so much behind they would be considered futile), and then you would play PxN with no Queen of his left around to try silly stuff. So the QS sub-tree with MVV ordering would be a lot smaller to prove the same +3 score.
In Joker I use SEE on H x L captures, and replace the victim value in the sort key by the SEE value for those, before doing the sorting. On L x H and equal captures I keep using the victim value. The effect is to push 'dubious' and 'bad' captures to the back.
So in SEE ordering you would not play the best move first.
Even if the MVV move brings no gain in itself (i.e. has SEE=0), like Q x protected Q, playing it before another profitable capture (say P x unprotected N) that would make you fail high can be better. The problem is that to make P x N fail high the opponent's reply to it would be an all-node, where he tries anything (to no avail). In particular he can try much more when he is still in posession of his Queen. Most of it silly Queen sacs, no doubt, but if you can trade Q, he can too, and he would certainly try that as well. So in the end you would still be searching the Q trade, but now with him taking the initiative. When you start by taking the Queen (MVV ordering), he would be forced to recapture it (any other captures leaving him so much behind they would be considered futile), and then you would play PxN with no Queen of his left around to try silly stuff. So the QS sub-tree with MVV ordering would be a lot smaller to prove the same +3 score.
In Joker I use SEE on H x L captures, and replace the victim value in the sort key by the SEE value for those, before doing the sorting. On L x H and equal captures I keep using the victim value. The effect is to push 'dubious' and 'bad' captures to the back.
-
Henk
- Posts: 7251
- Joined: Mon May 27, 2013 10:31 am
Re: MVV/LVA versus SEE
I don't want to search for days getting answers to my questions.Michel wrote:Please stop this trolling!!!!
Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
Searching is exhausting. And at the end you may find that no good answer was present.
-
tpetzke
- Posts: 686
- Joined: Thu Mar 03, 2011 4:57 pm
- Location: Germany
Re: MVV/LVA versus SEE
May I ask how old you are ?
Thomas...
Thomas...
-
Henk
- Posts: 7251
- Joined: Mon May 27, 2013 10:31 am
Re: MVV/LVA versus SEE
I do not like any personal questions, personal references. Because I like the illusion that that's more safe.tpetzke wrote:May I ask how old you are ?
Thomas...
-
syzygy
- Posts: 5909
- Joined: Tue Feb 28, 2012 11:56 pm
Re: MVV/LVA versus SEE
How do you prefer that we do the work for you?Henk wrote:I don't want to search for days getting answers to my questions.Michel wrote:Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
Searching is exhausting. And at the end you may find that no good answer was present.
Do you want us to use google and the search function of this forum to find the relevant threads and post links here so that you only have to click them?
Or do you prefer that we simply repeat here what has already been written many times on this forum and elsewhere?
-
lucasart
- Posts: 3243
- Joined: Mon May 31, 2010 1:29 pm
- Full name: lucasart
Re: MVV/LVA versus SEE
The key thing to understand is that there is no 'right' or 'wrong' way, and the choice of either MVV/LVA or SEE is the result of a tradeoff.Henk wrote:Some people use Most Valuable Victim/Least Valuable Aggressor to improve capture moves order. But is Static Exchange Evaluation not always better.
So when to use SEE and when to use MVV/LVA ?
I can imagine MVV/LVA takes less time to compute.
SEE
better predictor of best capture. the capture with the highest SEE is not always the best capture, but it's more often a good predictor than MVV/LVA. Both methods are local (only lookng at what happens on the target square) so they are both blind to many other things.
MVV/LVA
Trying to capture the biggest pieces first, also means that the subtree has a lower branching factor (less big pieces on the board means less legal moves on average).
[*] You need to experiment this for yourself to really understand it. This will be a good opportunity to put your own brain at work rather than asking people to do things for you:
- create a position that gives you a qsearch() explosion.
- try SEE sorting in your qsearch()
- try MVV/LVA
- which is best? have a look at the deep lines that are exploding the tree, and try to understand why.
Of course, MVV/LVA is also faster to compute. But that's trivial and uninteresting. Look at node count rather than time.
I've done quite a bit of experiment in my engine, and have concluded that, as far as DiscoCheck is concerned:
- SEE is best for ordering captures in the search()
- MVV/LVA is best for ordering captures in the qsearch()
PS: To demonstrate that you are not a Troll, you need to do your homework [*] before you answer to this post. So please do your homework before to answer any nonsense.
Theory and practice sometimes clash. And when that happens, theory loses. Every single time.
-
tpetzke
- Posts: 686
- Joined: Thu Mar 03, 2011 4:57 pm
- Location: Germany
Re: MVV/LVA versus SEE
I asked because that would help me to put your answers into the right context.
You're free not to answer but so am I now.
Thomas...
You're free not to answer but so am I now.
Thomas...
-
Henk
- Posts: 7251
- Joined: Mon May 27, 2013 10:31 am
Re: MVV/LVA versus SEE
If you know the answer right away, you may consider if you would like to answer the question, if you do not want to keep the answer [as] [a] secret.syzygy wrote:How do you prefer that we do the work for you?Henk wrote:I don't want to search for days getting answers to my questions.Michel wrote:Such basic issues have been discussed an infinite number of times already. Please read up on prior discussions. The CPW is also a good start.
Searching is exhausting. And at the end you may find that no good answer was present.
Do you want us to use google and the search function of this forum to find the relevant threads and post links here so that you only have to click them?
Or do you prefer that we simply repeat here what has already been written many times on this forum and elsewhere?