Теорема : Универсального множества не существует.
Доказательство .Пусть X
будет набором таким, что X = {\empty, x}
, где x
- каждый возможный элемент в домене.Возникает вопрос: X \in X
?Большинство наборов не определены таким образом, поэтому давайте определим новый набор Y. Y = {A \in X; A \notin A}
, т.е. Y
- это набор всех наборов, не принадлежащих им.
Теперь Y \in Y
?Итак, мы определили Y как все множества, не принадлежащие им, поэтому Y не может существовать в Y, что противоречит нашему предположению.
Так что теперь предположим, что Y не находится в Y. Теперь A определенно содержит Y, так как Yне само по себе, но определение Y таково, что если мы определим Y как Y, мы будем противоречить нашему собственному определению.
Таким образом, не существует множества всех множеств.Это известно как парадокс Рассела .
Итак, почему программно пытаются создать объект, который нарушает результат, доказанный и проверенный теоретиками множества, гораздо более умным, чем я?Если бы это было мое интервью, это был бы мой ответ, и если бы они настаивали на том, что это возможно, я бы предложил объяснить, в чем заключается проблема, поскольку концептуально Рассел фундаментально доказал, что это невозможно.
Если вы хотитеУдобная для пользователя проблема, обычно возникающая для людей, изучающих вводную теорию множеств, попробуйте Парадокс Парикмахера .
Редактировать : Python позволяет вам реализовать объект, который содержит себя.Смотрите это:
class Universal(object):
def __init__(self):
self.contents = []
def add(self, x):
self.contents.append(x)
def remove(self, x):
self.contents.remove(x)
def __contains__(self, x):
return ( x in self.contents )
Однако, это не строгий теоретический объект множества, так как содержимое фактически содержит ссылку на родительский объект.Если вы требуете, чтобы объекты отличались в соответствии с приведенным выше доказательством, это не может произойти.