Heuristic and Exact Algorithms for the Design of Urban Optical Networks