Ваша задача - запрограммировать математическую функцию s, которая принимает непустой конечный набор Aточек в 2D-плоскости и выводит показатель округлости, s(A)который удовлетворяет следующим свойствам:
- Положительная определенность : если есть круг или прямая, которая содержит все точки
A, тоs(A) = 0. В противном случаеs(A) > 0 Сюръективность: она сюръективна с неотрицательными действительными числами, что означает, что для каждого неотрицательного действительного числа
rсуществует конечное подмножествоAплоскости, такое чтоs(A) = r.Инвариантность перевода:
sинвариантнаs(A) = s(A + v)к переводу, если для каждого вектораvи для всехA.Масштабная инвариантность:
sмасштабно инвариантна, еслиs(A) = s(A * t)для всехt≠0и для всехA.Непрерывность.
sназывается непрерывной, если функцияf(p) := s(A ∪ {p})(отображающая точкуpв действительное число) является непрерывной, используя стандартное абсолютное значение для действительных чисел и стандартную евклидову норму в точках плоскости.
Интуитивно говоря, этот показатель некруглости можно представить как нечто похожее на коэффициент корреляции в линейной регрессии.
Детали
Ваша функция в теории должна работать в реальных значениях, но для этой задачи вы можете использовать числа с плавающей запятой в качестве замены. Пожалуйста, предоставьте объяснение вашего представления и аргумент, почему эти пять свойств имеют место. Вы можете взять два списка координат или список кортежей или аналогичных форматов в качестве входных данных. Вы можете предположить, что ни одна точка на входе не повторяется, т.е. все точки уникальны.
sкак не является уникальным. Единственное, к чему вы могли бы привести примеры, - s(A) = 0это тривиально, используя первое свойство.