Представляем точки в виде (x_1,y_1), ..., (x_n,y_n). Нам нужно проверить, есть ли набор (x_1,y_1,...,x_n,y_n), удовлетворяющий системе неравенств типа
![$(x_i-x_j)^2+(y_i-y_j)^2>1$ $(x_i-x_j)^2+(y_i-y_j)^2>1$](https://dxdy-04.korotkov.co.uk/f/3/e/f/3efb4bf24d55111ae8cfb8e0ab34343982.png)
или
![$(x_i-x_j)^2+(y_i-y_j)^2 \le 1$ $(x_i-x_j)^2+(y_i-y_j)^2 \le 1$](https://dxdy-02.korotkov.co.uk/f/5/9/4/59416701929bc4e3ca07a48e641ab01782.png)
.
Замена R на 1 мало что меняет.
Это задача алгебраического программирования - обобщение задачи линейного программирования. Плохо, что есть строгие неравенства - придётся повозиться с окрестностями точек. Но это потом.
Сначала заменяем некоторое количество неравенств на равенства, чтобы количество решений было конечным, но при этом любая подвыборка равенств ещё не давала конечности - надо будет перебрать все такие выборки. Для каждой выборки проверяем, согласуется ли хотя-бы одно её решение с оставшимися неравенствами. Если да - проверяем, можно ли "пошевелить" решение, чтобы строгие неравенства, заменённые на равенства, снова стали строгими.
Системы алгебраических уравнений можно анализировать с помощью алгоритма Евклида (подробнее - в некоторых учебниках по алгебраической геометрии). Чтобы проверить, можно ли сделать неравенство строгим, нужно использовать производные в точках решений.
В общем, принципиальная алгоритмичность есть, но для реальных вычислений - легче повесицца.
А для прямой решать не пробовала?