Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
кажется очевидным, что минимальная оболочка просто обязана быть выпуклой

кажется очевидным, что минимальная оболочка просто обязана быть выпуклой
def cmp_to_key(mycmp):
'Convert a cmp= function into a key= function'
class K(object):
def __init__(self, obj, *args):
self.obj = obj
def __lt__(self, other):
return mycmp(self.obj, other.obj) < 0
def __gt__(self, other):
return mycmp(self.obj, other.obj) > 0
def __eq__(self, other):
return mycmp(self.obj, other.obj) == 0
def __le__(self, other):
return mycmp(self.obj, other.obj) <= 0
def __ge__(self, other):
return mycmp(self.obj, other.obj) >= 0
def __ne__(self, other):
return mycmp(self.obj, other.obj) != 0
return K
base = P[0]
del P[0]
P.sort(key = cmp_to_key(lambda x, y: rotate(A[base], A[x], A[y])))
P.insert(0, base)
P.sort(key = cmp_to_key(lambda x, y: rotate(A[base], A[x], A[y])), reverse=True)
P.sort(key = cmp_to_key(lambda x, y: rotate(A[base], A[y], A[x])))
Тут используется побочная/альтернативная терминология, введенная в начале статьи. В теории обобщенной выпуклости и аналогичных областях термин "облочка" ("hull") - однозначно определен, как минималное содержащее множдество, обладающее интересующими нас свойствами (напр. выпуклостью). То есть оболочки всегда минимальны по определению, а "минимальная выпуклая оболочка" - это уже бросающися в глаза пример "масла масляного". Соответственно в литературе обычно всегда ведется речь о просто выпуклой оболочке. Никто не называет ее минимальной.
Построение минимальных выпуклых оболочек