Сведем к более наглядной задаче. Сначала центрируем строки,вычитая из каждой строки среднее арифметическое всех 50 строк,ответ задачи от этого не изменится.Получаем 50 векторов
![$v_i$ $v_i$](https://dxdy-02.korotkov.co.uk/f/9/f/7/9f7365802167fff585175c1750674d4282.png)
10000мерных но естественно лежащих в каком-то подпространстве размерности до 50(кстати косинусы углов между ними-это коэффициенты корреляции этой пары строк).Сумма их =0.Посчитаем D - сумму квадратов длин всех векторов.Для каждого разбиения 50 векторов на 4 группы М1,М2,М3,М4
![$DM=\min_{i}{\sum_{Mi}{|v_j|^2}-(\dfrac{1}{|Mi|} |\sum_{Mi}{v_j}|)^2}$ $DM=\min_{i}{\sum_{Mi}{|v_j|^2}-(\dfrac{1}{|Mi|} |\sum_{Mi}{v_j}|)^2}$](https://dxdy-04.korotkov.co.uk/f/3/c/3/3c39012fe6c4fbe7796534779e6f429982.png)
откуда ясна задача-первое слагаемое максимально приблизить к D/4, а у суммы векторов каждого подмножества сохранить свойство всего множества -сумма=0,или мала.То есть просто набирать минимизируя сумму,пока сумма квадратов длин набранных не дойдет до D/4,потом 2ю группу,итд.Получится уже неплохое DM~0,2D, и при организации полного перебора разбиения,у которых сумма квадратов длин хотя бы одной группы меньше DM,смотреть не нужно.То есть разово задача решаема,но если она в цикле...