|
Main
Date: 30 Dec 2008 09:10:21
From:
Subject: Chess Programming: Quescent search
|
Most of the Chess programs I've examined handle quescence by implementing a custom quescent search routine, oftentimes named "Quesce". I would think that a quescent search would be subject to all of the same optimizations that occur in the general search such as alpha-beta pruning, utilization of the transposition table, etc..., so my question is why isn't quescent search just handled as a direct extension of the main search (e.g. a position classified as unstable is simply not considered a terminal position and therefore search deeper). Why bother to implement a customized quescent search? Any insights on this are appreciated. -- Greg
|
|
|
Date: 30 Dec 2008 12:13:56
From:
Subject: Re: Chess Programming: Quescent search
|
So I'm beginning to think that both approaches are valid and it's basically a matter of choice based on a combination of code organization and efficiency. -- Greg
|
|
Date: 30 Dec 2008 13:35:13
From: Guest
Subject: Re: Chess Programming: Quescent search
|
<[email protected] > wrote in message news:6f94d82e-947a-4371-9237-9f5e896f1137@q30g2000prq.googlegroups.com... > Most of the Chess programs I've examined handle quescence by > implementing a custom quescent search routine, oftentimes named > "Quesce". > > I would think that a quescent search would be subject to all of the > same optimizations that occur in the general search such as alpha-beta > pruning, utilization of the transposition table, etc..., so my Right. Although you need to be careful about putting quiescent search results into the trans table. > question is why isn't quescent search just handled as a direct > extension of the main search (e.g. a position classified as unstable > is simply not considered a terminal position and therefore search > deeper). Why bother to implement a customized quescent search? It often is combined. Most of the differences are hidden elsewhere (in the GenNextMove() function) or with a flag saying whether its the normal search or some part of the quienscent search. Such as: If (InQSearch == TRUE) then GenerateQMoves(); else GenerateAllMoves(); But many people prefer to have it seperate because they do things differently enough from the regular search that it looks cleaner and is more easily maintained when seperate. There is no fundamental reason you can't combine them. And many people do precisely that. But many just prefer to keep them seperate for better organization, etc. The more complex you do your Qsearch, the more extensions etc., the more convenient it is to have it seperate. > Any insights on this are appreciated. > > -- Greg ----== Posted via Pronews.Com - Unlimited-Unrestricted-Secure Usenet News==---- http://www.pronews.com The #1 Newsgroup Service in the World! >100,000 Newsgroups ---= - Total Privacy via Encryption =---
|
|
Date: 30 Dec 2008 10:52:47
From:
Subject: Re: Chess Programming: Quescent search
|
On Dec 30, 1:16=A0pm, Simon Krahnke <[email protected] > wrote: > You usually have optimizations beyond alpha-beta and transposition- > tables. Theses are usually not shared across normal search and quiescent > search. > > And the fundamental difference of course is, you don't search all the > moves. Accordingly they are sorted differently. > > Plus some convergence tricks like going back to normal search for one > ply when you are in check. > > That's so many depth=3D=3D0 tests (one for the recursion!) that you > are usually better off giving it its own function. > > mfg, =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 simon .... l I was also thinking that the search could be in "quescent mode" when it is searching the extra plys and thus could do additional things such as only generate captures. I think you're saying that's possible, but generally inefficient. I wonder if any existing programs do it this way. -- Greg
|
|
Date: 30 Dec 2008 19:16:35
From: Simon Krahnke
Subject: Re: Chess Programming: Quescent search
|
* <[email protected] > (18:10) schrieb: > Most of the Chess programs I've examined handle quescence by > implementing a custom quescent search routine, oftentimes named > "Quesce". > > I would think that a quescent search would be subject to all of the > same optimizations that occur in the general search such as alpha-beta > pruning, utilization of the transposition table, etc..., so my > question is why isn't quescent search just handled as a direct > extension of the main search (e.g. a position classified as unstable > is simply not considered a terminal position and therefore search > deeper). Why bother to implement a customized quescent search? You usually have optimizations beyond alpha-beta and transposition- tables. Theses are usually not shared across normal search and quiescent search. And the fundamental difference of course is, you don't search all the moves. Accordingly they are sorted differently. Plus some convergence tricks like going back to normal search for one ply when you are in check. That's so many depth==0 tests (one for the recursion!) that you are usually better off giving it its own function. mfg, simon .... l
|
|