Interconnection Networks for Parallel and Distributed Processing