Channel allocation algorithms for multi-carrier systems