Finite Differencing for Set Operations

Finite differencing can be especially useful in optimizing set operations. Consider the following expression that is used in solving the ``k queens'' problem: i &isin range(part_sol) &and i &isin { 1 .. k } This can be transformed to: i &isin setdiff( { 1 .. k } , part_sol )

A variable unoccupied_rows can be introduced for this expression. Its initial value is the set { 1 .. k } .

An update to part_sol (by recursive call), part_sol = append( part_sol , i) leads to a corresponding change to unoccupied_rows unoccupied_rows = unoccupied_rows - {i} This incremental update may be much cheaper than doing the original range computation or set difference every time.

Contents    Page-10    Prev    Next    Page+10    Index