A distributed auction algorithm for the assignment problem