@pimms.value<EOL><INDENT>def estimated_distances(addresses, surface):<DEDENT>
if is_topo(surface):<EOL><INDENT>return pimms.lazy_map(<EOL>{k:curry(lambda a,k: Path.estimate_distances(a, surface.surfaces[k]), addresses, k)<EOL>for k in six.iterkeys(surface.surfaces)})<EOL><DEDENT>else: return Path.estimate_distances(addresses, surface)<EOL>
path.estimated_distances is a vector of estimated distance values from the given path. The
distance estimates are upper bounds on the actual distance but are not exact.