  The problem of vertex guarding a simple polygon was first studied by Subir K.
Ghosh (1987), who presented a polynomial-time $O(\log n)$-approximation
algorithm for placing as few guards as possible at vertices of a simple $n$-gon
$P$, such that every point in $P$ is visible to at least one of the guards.
Ghosh also conjectured that this problem admits a polynomial-time algorithm
with constant approximation ratio. Due to the centrality of guarding problems
in the field of computational geometry, much effort has been invested
throughout the years in trying to resolve this conjecture. Despite some
progress (surveyed below), the conjecture remains unresolved to date. In this
paper, we confirm the conjecture for the important case of weakly visible
polygons, by presenting a $(2+\varepsilon)$-approximation algorithm for
guarding such a polygon using vertex guards. A simple polygon $P$ is weakly
visible if it has an edge $e$, such that every point in $P$ is visible from
some point on $e$. We also present a $(2+\varepsilon)$-approximation algorithm
for guarding a weakly visible polygon $P$, where guards may be placed anywhere
on $P$'s boundary (except in the interior of the edge $e$). Finally, we present
a $3c$-approximation algorithm for vertex guarding a polygon $P$ that is weakly
visible from a chord, given a subset $G$ of $P$'s vertices that guards $P$'s
boundary whose size is bounded by $c$ times the size of a minimum such subset.
  Our algorithms are based on an in-depth analysis of the geometric properties
of the regions that remain unguarded after placing guards at the vertices to
guard the polygon's boundary. It is plausible that our results will enable
Bhattacharya et al. to complete their grand attempt to prove the original
conjecture, as their approach is based on partitioning the underlying simple
polygon into a hierarchy of weakly visible polygons.
