Index   Main   Namespaces   Classes   Hierarchy   Annotated   Files   Compound   Global   Pages  

GoBensonSolver Class Reference

#include <GoBensonSolver.h>

Inheritance diagram for GoBensonSolver:

Inheritance graph
[legend]
List of all members.

Detailed Description

Benson's classic algorithm for finding unconditionally alive blocks.

Definition at line 21 of file GoBensonSolver.h.

Public Member Functions

 GoBensonSolver (GoBoard &board, GoRegionBoard *regions=0)
 If regions = 0, creates its own.
void FindSafePoints (SgBWSet *safe)
 Main function, compute safe points.
Accessors
const GoBoardBoard () const
 our board
Forwarding accessors for GoRegionBoard
virtual bool UpToDate () const
 See GoRegionBoard::UpToDate.
const GoRegionBoardRegions () const
 our regions

Protected Member Functions

GoRegionBoardRegions ()
 our regions
virtual void FindTestSets (SgVectorOf< SgVectorOf< GoBlock > > *sets, SgBlackWhite color) const
 Main step of Benson's algorithm.
virtual void FindClosure (SgVectorOf< GoBlock > *blocks) const
 Compute closure of blocks set for Benson's algorithm.
virtual void GenBlocksRegions ()
 Compute all GoBlock's and GoRegion's on board.
virtual bool RegionHealthyForBlock (const GoRegion &r, const GoBlock &b) const
 Is r healthy for b? Implements Benson, override for better tests Benson's classic healthyness test: all empty points of region must be liberties of the block.
virtual void FindHealthy ()
 Find healthy regions for block, calls RegionHealthyForBlock.
void TestAlive (SgVectorOf< GoBlock > *blocks, SgBWSet *safe, SgBlackWhite color)
 Test if list of Benson blocks forms a living group.
void TestAdjacent (SgVectorOf< GoRegion > *regions, const SgVectorOf< GoBlock > &blocks) const
 Reduce regions: keep only if completely surrounded by blocks.


Constructor & Destructor Documentation

GoBensonSolver::GoBensonSolver ( GoBoard board,
GoRegionBoard regions = 0 
) [explicit]

If regions = 0, creates its own.

Definition at line 25 of file GoBensonSolver.h.


Member Function Documentation

const GoBoard & GoStaticSafetySolver::Board (  )  const [inherited]

our board

Definition at line 114 of file GoStaticSafetySolver.h.

References GoStaticSafetySolver::m_board.

Referenced by GoSafetySolver::FindSafePair(), GoSafetySolver::FindSurroundedSingleRegion(), GoSafetySolver::GenBlocksRegions(), GoSafetySolver::Test2Vital(), and GoSafetySolver::UpToDate().

void GoStaticSafetySolver::FindClosure ( SgVectorOf< GoBlock > *  blocks  )  const [protected, virtual, inherited]

Compute closure of blocks set for Benson's algorithm.

Expand set of blocks until all blocks adjacent to all adjacent regions are in set. see [Benson] for explanation.

Reimplemented in GoSafetySolver.

Definition at line 162 of file GoStaticSafetySolver.cpp.

References SgVectorOf< T >::Back(), SgVectorOf< T >::Contains(), SgVectorOf< T >::NonEmpty(), SgVectorOf< T >::PopBack(), and SgVectorOf< T >::PushBack().

Referenced by GoStaticSafetySolver::FindTestSets().

void GoStaticSafetySolver::FindHealthy (  )  [protected, virtual, inherited]

Find healthy regions for block, calls RegionHealthyForBlock.

Reimplemented in GoSafetySolver.

Definition at line 59 of file GoStaticSafetySolver.cpp.

References GoStaticSafetySolver::RegionHealthyForBlock(), GoStaticSafetySolver::Regions(), and GoRegionBoard::SetComputedHealthy().

Referenced by GoStaticSafetySolver::FindSafePoints().

void GoBensonSolver::FindSafePoints ( SgBWSet safe  )  [virtual]

Main function, compute safe points.

Reimplemented from GoStaticSafetySolver.

Definition at line 22 of file GoBensonSolver.cpp.

References SgBWSet::Clear(), DEBUG_BENSON, GoStaticSafetySolver::FindSafePoints(), GoStaticSafetySolver::Regions(), and GoSafetyUtil::WriteStatistics().

Referenced by GoSafetyCommands::GetSafe().

void GoStaticSafetySolver::FindTestSets ( SgVectorOf< SgVectorOf< GoBlock > > *  sets,
SgBlackWhite  color 
) const [protected, virtual, inherited]

Main step of Benson's algorithm.

Reimplemented in GoSafetySolver.

Definition at line 185 of file GoStaticSafetySolver.cpp.

References GoStaticSafetySolver::FindClosure(), GoStaticSafetySolver::Regions(), and SG_ASSERT.

Referenced by GoStaticSafetySolver::FindSafePoints().

void GoStaticSafetySolver::GenBlocksRegions (  )  [protected, virtual, inherited]

Compute all GoBlock's and GoRegion's on board.

Reimplemented in GoSafetySolver.

Definition at line 48 of file GoStaticSafetySolver.cpp.

References GoRegionBoard::GenBlocksRegions(), GoStaticSafetySolver::Regions(), GoRegionBoard::ReInitializeBlocksRegions(), and GoStaticSafetySolver::UpToDate().

Referenced by GoStaticSafetySolver::FindSafePoints(), and GoSafetySolver::GenBlocksRegions().

bool GoStaticSafetySolver::RegionHealthyForBlock ( const GoRegion r,
const GoBlock b 
) const [protected, virtual, inherited]

Is r healthy for b? Implements Benson, override for better tests Benson's classic healthyness test: all empty points of region must be liberties of the block.

Reimplemented in GoSafetySolver.

Definition at line 37 of file GoStaticSafetySolver.cpp.

References GoBlock::AllEmptyAreLiberties(), and GoRegion::Points().

Referenced by GoStaticSafetySolver::FindHealthy(), and GoSafetySolver::RegionHealthyForBlock().

GoRegionBoard * GoStaticSafetySolver::Regions (  )  [protected, inherited]

our regions

Definition at line 119 of file GoStaticSafetySolver.h.

References GoStaticSafetySolver::m_regions, and SG_ASSERT.

const GoRegionBoard * GoStaticSafetySolver::Regions (  )  const [inherited]

our regions

Definition at line 125 of file GoStaticSafetySolver.h.

References GoStaticSafetySolver::m_regions, and SG_ASSERT.

Referenced by GoSafetySolver::Find2VitalAreas(), GoStaticSafetySolver::FindHealthy(), GoSafetySolver::FindHealthy(), GoSafetySolver::FindSafePair(), GoStaticSafetySolver::FindSafePoints(), GoSafetySolver::FindSafePoints(), FindSafePoints(), GoSafetySolver::FindSurroundedRegionPair(), GoSafetySolver::FindSurroundedSafeAreas(), GoSafetySolver::FindSurroundedSingleRegion(), GoStaticSafetySolver::FindTestSets(), GoSafetySolver::FindTestSets(), GoStaticSafetySolver::GenBlocksRegions(), GoSafetySolver::GenBlocksRegions(), GoSafetySolver::Merge(), GoStaticSafetySolver::TestAlive(), and GoStaticSafetySolver::UpToDate().

void GoStaticSafetySolver::TestAdjacent ( SgVectorOf< GoRegion > *  regions,
const SgVectorOf< GoBlock > &  blocks 
) const [protected, inherited]

Reduce regions: keep only if completely surrounded by blocks.

Definition at line 82 of file GoStaticSafetySolver.cpp.

References SgVectorOf< T >::PushBack().

Referenced by GoStaticSafetySolver::TestAlive().

void GoStaticSafetySolver::TestAlive ( SgVectorOf< GoBlock > *  blocks,
SgBWSet safe,
SgBlackWhite  color 
) [protected, inherited]

Test if list of Benson blocks forms a living group.

Each block must have a sure liberty count of at least 2. A region provides one sure liberty if it is healthy and its boundary consists only of blocks in the list.

Definition at line 92 of file GoStaticSafetySolver.cpp.

References GoSafetyUtil::AddToSafe(), SgVectorOf< T >::Clear(), GoStaticSafetySolver::m_board, SgVectorOf< T >::NonEmpty(), SgVectorOf< T >::PushBack(), GoStaticSafetySolver::Regions(), SG_ASSERT, SG_DEBUG_ONLY, and GoStaticSafetySolver::TestAdjacent().

Referenced by GoStaticSafetySolver::FindSafePoints().

bool GoStaticSafetySolver::UpToDate (  )  const [virtual, inherited]

See GoRegionBoard::UpToDate.

Reimplemented in GoSafetySolver.

Definition at line 43 of file GoStaticSafetySolver.cpp.

References GoStaticSafetySolver::Regions(), and GoRegionBoard::UpToDate().

Referenced by GoStaticSafetySolver::GenBlocksRegions(), and GoSafetySolver::UpToDate().


The documentation for this class was generated from the following files:


17 Jun 2010 Doxygen 1.4.7