The implementation of src/solvers/simpdiv is some of the oldest remaining, with many details of the implementation able to be traced back into the C version of Gambit in the early 1990s.
Over time the implementation has been amended as the library has evolved, but has never had a thorough review and update. This would be quite useful to do, as this has proven to be a useful method for the analysis of many $n$-player games.
In particular, the implementation uses a class PVector which is the last remnant of a more widely-used class. However, the use of this class actually is not what PVector was really intended for. Rather, actually, these are used to store pairs of indices representing (player, strategy) numbers. The algorithm could instead be re-written more transparently to use pairs, or possibly even better by using GameStrategy directly in places to work with games more abstractly.
This would be a good project for someone interested in how simplicial subdivision-type algorithms work. The existing implementation is definitely correct, so there is a strong base for doing regression testing with a new implementation, where a new implementation would also result in making the understanding of how the method works much more clear.
The implementation of
src/solvers/simpdivis some of the oldest remaining, with many details of the implementation able to be traced back into the C version of Gambit in the early 1990s.Over time the implementation has been amended as the library has evolved, but has never had a thorough review and update. This would be quite useful to do, as this has proven to be a useful method for the analysis of many$n$ -player games.
In particular, the implementation uses a class
PVectorwhich is the last remnant of a more widely-used class. However, the use of this class actually is not whatPVectorwas really intended for. Rather, actually, these are used to store pairs of indices representing (player, strategy) numbers. The algorithm could instead be re-written more transparently to use pairs, or possibly even better by usingGameStrategydirectly in places to work with games more abstractly.This would be a good project for someone interested in how simplicial subdivision-type algorithms work. The existing implementation is definitely correct, so there is a strong base for doing regression testing with a new implementation, where a new implementation would also result in making the understanding of how the method works much more clear.