Data Exchange Problems: Algorithms And Complexity