Okay, if you want to split a set of N features (F) into two complementary subsets (S1, S2), and you have a complementarity score C(f_i, f_j) between any two features f_i and f_j:
Goal is to Maximize the total complementarity between S1 and S2.
say, Total_Complementarity(S1, S2) = sum(C(f_i, f_j) for f_i in S1 for f_j in S2)
Greedy Algorithm:
Initialize S1 and S2 (e.g., S1 with one arbitrary feature, S2 with the rest).
Iteratively move a feature from one subset to the other if that move increases Total_Complementarity(S1, S2).
Or, start with S1 empty, S2 = F. Iteratively move the feature from S2 to S1 that results in the largest increase in Total_Complementarity. Stop when S1 has N/2 features, or when no move improves the score.