Представляем точки в виде (x_1,y_1), ..., (x_n,y_n). Нам нужно проверить, есть ли набор (x_1,y_1,...,x_n,y_n), удовлетворяющий системе неравенств типа

или

.
Замена R на 1 мало что меняет.
Это задача алгебраического программирования - обобщение задачи линейного программирования. Плохо, что есть строгие неравенства - придётся повозиться с окрестностями точек. Но это потом.
Сначала заменяем некоторое количество неравенств на равенства, чтобы количество решений было конечным, но при этом любая подвыборка равенств ещё не давала конечности - надо будет перебрать все такие выборки. Для каждой выборки проверяем, согласуется ли хотя-бы одно её решение с оставшимися неравенствами. Если да - проверяем, можно ли "пошевелить" решение, чтобы строгие неравенства, заменённые на равенства, снова стали строгими.
Системы алгебраических уравнений можно анализировать с помощью алгоритма Евклида (подробнее - в некоторых учебниках по алгебраической геометрии). Чтобы проверить, можно ли сделать неравенство строгим, нужно использовать производные в точках решений.
В общем, принципиальная алгоритмичность есть, но для реальных вычислений - легче повесицца.
А для прямой решать не пробовала?