Even better, one can take the minimum Steiner tree of the vertices of the polygon. For internal barriers, the only way to improve this bound is to make a disconnected barrier. Various proofs of the lower bound can be found in . To see that this is tight in general, one can consider the case of a stretching out a very long and thin rectangle. Any opaque forest for this shape must be at least as long as the rectangle, or else there is a hole through which vertical lines can pass through. As the rectangle becomes longer and thinner, this value approaches "p"/2. Therefore, this bound is tight in general. However, for any shape that actually has a positive area, some extra length will need to be allocated to span the shape in other directions. Hence this is not a particularly good lower bound for most inputs. For the unit square, these bounds evaluate to 2 and 4 respectively. However, slightly improved lower bounds of 2 + 10−12 for barriers that satisfy a locality constraint, and 2 + 10−5 for internal barriers, have been shown. Due to the difficulty faced in finding an optimal barrier for even simple examples, it has become very desirable to find a barrier that approximates the optimal within some constant factor. Most barrier constructions are such that the fact that it covers the desired region is guaranteed. However, given an arbitrary barrier "T", it would be desirable to confirm that it covers the desired area "C". As a simple first pass, one can compare the convex hulls of "C" and "T". "T" covers at most its convex hull, so if the convex hull of "T" does not strictly contain "C", then it cannot possibly cover "T". This provides a simple O("n" log "n") first-pass algorithm for verifying a barrier. If "T" consists of a single connected component, then it covers exactly its convex hull, and this algorithm is sufficient. However, If "T" contains more than one connected component, it may cover less. So this test is not sufficient in general. The problem of determining exactly what regions any given forest "T" consisting of "m" connected components and "n" line segments actually covers, can be solved in Θ("m"2"n"2) time. The basic procedure for doing this is simple: first, simplify each connected component by replacing it with its own convex hull. Then, for vertex "p" of each convex hull, perform a circular plane-sweep with a line centered at "p", tracking when the line is or isn't piercing a convex hull (not including the point "p" itself).