Difference between revisions of "MVV-LVA"
GerdIsenberg (talk | contribs) |
GerdIsenberg (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
'''MVV-LVA''' ('''M'''ost '''V'''aluable '''V'''ictim - '''L'''east '''V'''aluable '''A'''ggressor),<br/> | '''MVV-LVA''' ('''M'''ost '''V'''aluable '''V'''ictim - '''L'''east '''V'''aluable '''A'''ggressor),<br/> | ||
− | is a simple heuristic to [[Move Generation|generate]] or sort [[Captures|capture moves]] in a reasonable order. Inside a so called find-victim cycle, one first look up the potential victim of all attacked opponent pieces, in the order of the most valuable first, thus [[Queen|queen]], [[Rook|rook]], [[Bishop|bishop]], [[Knight|knight]] and [[Pawn|pawn]]. After the most valuable victim is found, the find-aggressor cycle loops over the potential aggressors that may capture the victim in inverse order, from pawn, knight, bishop, rook, queen to [[King|king]]. The heuristic is easy to implement and covers a lot of simple cases, such as PxR before BxP. It is used in various move generators build in hardware, such a [[Belle#Hardware|Belle]] and more recently in [[FPGA]] approaches such as [[Brutus]] and [[MBChess]] <ref>[[Marc Boulé]] ('''2002'''). ''An FPGA Move Generator for the Game of Chess''. Masters thesis, [[McGill University]], (Supervisor: [[Zeljko Zilic]], Co-Supervisor: [[Monroe Newborn|Monty Newborn]]), [http://www.iml.ece.mcgill.ca/%7Emboule/files/mbthesis02.pdf pdf]</ref>. However the heuristic may fail, if victims attacked by more valuable attackers are defended, in such cases most programs rely on [[Attack and Defend Maps|attack tables]], set-wise [[Pawn Attacks (Bitboards)#PawnAttacks|pawn attacks]] (defends) on the fly to perform a [[Static Exchange Evaluation|static exchange evaluation]]. | + | is a simple heuristic to [[Move Generation|generate]] or sort [[Captures|capture moves]] in a reasonable order. Inside a so called find-victim cycle, one first look up the potential victim of all [[Attacks|attacked]] opponent pieces, in the order of the most valuable first, thus [[Queen|queen]], [[Rook|rook]], [[Bishop|bishop]], [[Knight|knight]] and [[Pawn|pawn]]. After the most valuable victim is found, the find-aggressor cycle loops over the potential aggressors that may capture the victim in inverse order, from pawn, knight, bishop, rook, queen to [[King|king]]. The heuristic is easy to implement and covers a lot of simple cases, such as PxR before BxP. It is used in various move generators build in hardware, such a [[Belle#Hardware|Belle]] and more recently in [[FPGA]] approaches such as [[Brutus]] and [[MBChess]] <ref>[[Marc Boulé]] ('''2002'''). ''An FPGA Move Generator for the Game of Chess''. Masters thesis, [[McGill University]], (Supervisor: [[Zeljko Zilic]], Co-Supervisor: [[Monroe Newborn|Monty Newborn]]), [http://www.iml.ece.mcgill.ca/%7Emboule/files/mbthesis02.pdf pdf]</ref>. However the heuristic may fail, if victims attacked by more valuable attackers are defended, in such cases most programs rely on [[Attack and Defend Maps|attack tables]], set-wise [[Pawn Attacks (Bitboards)#PawnAttacks|pawn attacks]] (defends) on the fly to perform a [[Static Exchange Evaluation|static exchange evaluation]]. |
=See also= | =See also= | ||
Line 17: | Line 17: | ||
* [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/645f44f84102e450 MVV/LVA vs SEE move ordering - more test results] by [[Robert Hyatt]], [[Computer Chess Forums|rgcc]], August 25, 1995 | * [http://groups.google.com/group/rec.games.chess.computer/browse_frm/thread/645f44f84102e450 MVV/LVA vs SEE move ordering - more test results] by [[Robert Hyatt]], [[Computer Chess Forums|rgcc]], August 25, 1995 | ||
: [http://groups.google.com/group/rec.games.chess.computer/msg/1951744da404fc33 Re: MVV/LVA vs SEE move ordering - more test results] by [[Brian Sheppard]], [[Computer Chess Forums|rgcc]], August 27, 1995 | : [http://groups.google.com/group/rec.games.chess.computer/msg/1951744da404fc33 Re: MVV/LVA vs SEE move ordering - more test results] by [[Brian Sheppard]], [[Computer Chess Forums|rgcc]], August 27, 1995 | ||
+ | * [https://groups.google.com/d/msg/rec.games.chess.computer/5byhl_6Jmc8/D1QAR146VLIJ MVV/LVA and SEE - what do they mean?] by [[Peter Kappler]], [[Computer Chess Forums|rgcc]], August 28, 1995 | ||
+ | * [https://www.stmintz.com/ccc/index.php?id=45655 MVA/LVA sorting order] by [[Jan Willem de Kort]], [[CCC]], March 12, 1999 | ||
==2000 ...== | ==2000 ...== | ||
* [https://www.stmintz.com/ccc/index.php?id=109588 Fast BB move generation] by [[Bas Hamstra]], [[CCC]], May 08, 2000 | * [https://www.stmintz.com/ccc/index.php?id=109588 Fast BB move generation] by [[Bas Hamstra]], [[CCC]], May 08, 2000 | ||
Line 34: | Line 36: | ||
* [http://www.open-chess.org/viewtopic.php?f=5&t=3058 A smarter MVV/LVA] by thevinenator, [[Computer Chess Forums|OpenChess Forum]], December 28, 2016 | * [http://www.open-chess.org/viewtopic.php?f=5&t=3058 A smarter MVV/LVA] by thevinenator, [[Computer Chess Forums|OpenChess Forum]], December 28, 2016 | ||
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67873 MVV LVA] by [[Vivien Clauzon]], [[CCC]], July 01, 2018 | * [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=67873 MVV LVA] by [[Vivien Clauzon]], [[CCC]], July 01, 2018 | ||
+ | * [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=70918 is LVA as in MVV-LVA useless ?] by [[Mahmoud Uthman]], [[CCC]], June 04, 2019 | ||
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=70936 correct way to score promotions using MVV-LVA] by [[Mahmoud Uthman]], [[CCC]], June 06, 2019 » [[Promotions]] | * [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=70936 correct way to score promotions using MVV-LVA] by [[Mahmoud Uthman]], [[CCC]], June 06, 2019 » [[Promotions]] | ||
Latest revision as of 21:28, 1 November 2019
Home * Search * Move Ordering * MVV-LVA
MVV-LVA (Most Valuable Victim - Least Valuable Aggressor),
is a simple heuristic to generate or sort capture moves in a reasonable order. Inside a so called find-victim cycle, one first look up the potential victim of all attacked opponent pieces, in the order of the most valuable first, thus queen, rook, bishop, knight and pawn. After the most valuable victim is found, the find-aggressor cycle loops over the potential aggressors that may capture the victim in inverse order, from pawn, knight, bishop, rook, queen to king. The heuristic is easy to implement and covers a lot of simple cases, such as PxR before BxP. It is used in various move generators build in hardware, such a Belle and more recently in FPGA approaches such as Brutus and MBChess [1]. However the heuristic may fail, if victims attacked by more valuable attackers are defended, in such cases most programs rely on attack tables, set-wise pawn attacks (defends) on the fly to perform a static exchange evaluation.
Contents
See also
- Belle | Hardware Move Generation
- Mater
- Move Generation
- Quiescence Search
- SEE - The Swap Algorithm with Bitboards
- Static Exchange Evaluation
Forum Posts
1995 ...
- mvv/lva vs SEE capture ordering test results by Robert Hyatt, rgcc, August 10, 1995
- MVV/LVA vs SEE move ordering - more test results by Robert Hyatt, rgcc, August 25, 1995
- Re: MVV/LVA vs SEE move ordering - more test results by Brian Sheppard, rgcc, August 27, 1995
- MVV/LVA and SEE - what do they mean? by Peter Kappler, rgcc, August 28, 1995
- MVA/LVA sorting order by Jan Willem de Kort, CCC, March 12, 1999
2000 ...
- Fast BB move generation by Bas Hamstra, CCC, May 08, 2000
- MVV/LVA or SEE - liability? by Severi Salminen, CCC, November 29, 2000 » Static Exchange Evaluation
- MVVLVA sorting does not help for move ordering by Scott Farrell, CCC, September 21, 2002
2005 ...
- Sorting captures by Pablo Vazquez, CCC, August 02, 2008
- Effect of MVV/LVA by Mathieu Pagé, CCC, Sepember 14, 2008
- MVV/LVA. Or should it be LVV/MVA? by Harm Geert Muller, CCC, March 31, 2009
2010 ...
- LVA MVV with relative Pin by Clemens Pruell, CCC, February 16, 2011 » Pin
- MVV/LVA sorting by Harm Geert Muller, CCC, June 05, 2013
2015 ...
- DarkThought sorts MVV/LVA without looking at any moves? by Rob Williamson, CCC, April 25, 2015 » DarkThought
- MVV/LVA by Folkert van Heusden, CCC, October 02, 2015
- Sorting Captures by David Cimbalista, CCC, August 03, 2016
- A smarter MVV/LVA by thevinenator, OpenChess Forum, December 28, 2016
- MVV LVA by Vivien Clauzon, CCC, July 01, 2018
- is LVA as in MVV-LVA useless ? by Mahmoud Uthman, CCC, June 04, 2019
- correct way to score promotions using MVV-LVA by Mahmoud Uthman, CCC, June 06, 2019 » Promotions
External links
- MVV/LVA from Bruce Moreland's Programming Topics
- Micro-Max 4: Quiescence Search by Harm Geert Muller
- The Dorf feat. FM Einheit und Caspar Brötzmann - Massaker, Grammatikoff, Duisburg, May 17, 2014, YouTube Video
References
- ↑ Marc Boulé (2002). An FPGA Move Generator for the Game of Chess. Masters thesis, McGill University, (Supervisor: Zeljko Zilic, Co-Supervisor: Monty Newborn), pdf