Algorithm Design for Multi-Objective Problems