I've encountered this problem, and I'd like to know how is possible to solve it in Mathematica:
There's a bar that has a room with a very irregular shape. From every point inside the room it must be possible to see a no smoking sign, so people inside the bar can be always aware of it. Find the minimum number of signs that are needed and place them in room walls in order to satisfy the condition.
For example, I've this room/polygon:
corners =
{{0, 0}, {200, 0}, {200, 30}, {160, 50}, {200, 70}, {200, 200}, {100, 200},
{100, 150}, {150, 170}, {140, 80}, {90, 80}, {90, 130}, {40, 130}, {40, 20}};
Graphics[{FaceForm[White], EdgeForm[Black], Polygon[corners]}]
I need to select a list of points of the perimeter of the polygon such that at least one of them is visible from every interior polygon point. How can I achieve this using Mathematica?


