My thinking is that, if I use alpha-beta search, I can not use things like quiescence search or depth extensions / reductions, since then the first win found is not necessarily shortest. Or perhaps I can still use them, but need to keep searching after a win is found to ensure it's shortest.
Can I even use a transposition table? I feel like this might not guarantee shortest win if there are exact hash hits?
For retrieving the PV line, I found this old topic which seems relevant; does this still seem like the best way to do it?
Am I complicating things -- does alpha-beta with heuristic evaluation function even make sense, or should I skip that and just search for win/loss?
Btw, my priorities in creating this app are:
- Correctness / optimality -- This is a must!
- Simple code / algorithm
-- This is a small project, I want to finish it in about 2 weeks.
-- With more complicated code I'm afraid I'll introduce bugs.
-- Prefer to focus engineering effort on concurrency rather than fast single-core performance, since I'll run on a 16 core machine. - Efficiency -- Not top priority, but ideally I can solve 10-20 ply mates within a few minutes.