Reasoning about soft constraints and conditional preferences: complexity results and approximation techniques