[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: owl pattern matching speedup (was: [gnugo-devel] GnuGo 3.2 port opt
From: |
Trevor Morris |
Subject: |
Re: owl pattern matching speedup (was: [gnugo-devel] GnuGo 3.2 port option) |
Date: |
Fri, 30 Aug 2002 20:59:08 -0400 |
>I think there is a better way to substantially speed up the owl pattern
>matching: we should use matchpat_goal_anchor (introduced by Trevor for
>his experimental pattern based reading code) also for the owl databases.
>This would enormously reduce both the time spent in scan_for_patterns
>and in check_pattern_light (both need about 4-5% of total run time,
>IIRC).
>...
>Opinions?
>
>There would be two ways of doing the duplications of patterns as D108:
>Either having it done automatically by mkpat.c (and manually adding
>a 'Q' element to patterns where we don't want it). Or writing a script
>that patches owl_defendpats.db (i.e., it would have to understand
>connectedness of 'O' stones in the patterns); then we could afterwards
>manually delete the patterns where we don't want the duplication.
My gut tells me that for almost all of the patterns, a single Q replacement
should be sufficient. One effective owl tuning technique is to REMOVE
patterns rather than add them. This is especially important because the
owl node limit is necessarily small. Over-general patterns can cause problems.
I think it will be easiest to do owl_attack & owl_defend at the same time
(i.e. don't try one first, then the other), because often attack and defense
patterns balance each-other out. That is, in order to solve an owl problem,
sometimes a correct attack and defense move must be added - if only
not to break other owl tests.