Algorithms For Optimal Coverage In Wireless Sensor Networks