The next approach, Littman, et al (1994), attacked the problem
slightly differently. This algorithm, called *witness*, uses
the same basic structure as Sondik and Cheng; i.e., it defines regions
for a vector and looks for a point where that vector is not
dominant.

Unlike Sondik's algorithm is doesn't worry about all the actions all
the time. It concentrate on finding the best value function for each
of the actions separately. Once it find these it will combine them
into the final `V'` value function.

Another way it simplifies the problem, aside from doing each action in
isolation, is that it also only worries about one observation at a
time. Remember that a vector at a belief point is constructed by
selecting a transformed vector from `V` for each observation.
The witness algorithm, like Cheng's algorithm, starts with an
arbitrary belief point and generates its vector. It adds this vector
to a set and assumes that this set is `V'` it then goes about
trying to prove or disprove whether or not this set truly is
`V'`.

In constructing a vector we make a choice for each observation; the
choice being the selection of one of the `V` vectors
representing a particular future strategy. The algorithm then looks
at the individual choices made, observation by observation to see
where a different choice would yield a better value. Like the other
algorithms, it defines the region where it is assured that the
particular choice is best. If it can find a belief point where a
different strategy would be better, then this serves as a witness to
the fact that our current set of vectors is not yet the real
`V'` we are after.

The regions defined by this algorithm are also best describe by the intersection of two simpler regions. We have actually seen these two regions before. One is exactly the same as the regions that Cheng's algorithm defines; namely the region over which the current vector dominates all the other vectors we have generated up to this point. This region is shown in the top of the next figure. Note that at this point in this figure, we are at a point in the algorithm where we have generated three vectors.

Stated another way: this region simply reduces the search for a point to the region over the current approximation we have (i.e., all the vectors we have generated to this point). This prevents us from looking for better points in a region where we already know there are better points.

We repeat this for every observation to get a set of vectors for a
particular action and then we do this for all actions. We can then
combine and eliminate dominated vectors to get the real set we were
after, `V'`.