С математической точки зрения множество — это набор отдельных объектов, которые можно определить несколькими способами. Один из распространенных способов определения множества — перечисление всех его элементов в фигурных скобках. Например, множество {1, 2, 3} содержит элементы 1, 2 и 3. Другой способ определения множества — указание свойства или условия, которому должны удовлетворять его элементы, — это известно как определение множества с помощью включения или как фильтра.
Чтобы определить множество с помощью включения, вы предоставляете описание или условие фильтрации, которое выбирает именно те объекты, которые вы хотите сделать членами множества. Например, множество четных чисел можно определить как:
{x | x — целое число, а x делится на 2}
Это читается как: множество всех x, таких что x — целое число, а x делится на 2. Вертикальная черта «|» можно прочитать как «такой, что» или «для которого». Это определение выбирает именно те элементы, которые нам нужны в наборе — все целые числа, которые являются четными. Вот еще несколько примеров определения множеств с помощью понимания:
Итак, подведем итог: определение множества с помощью включения обеспечивает краткий способ указания членов множества путем указания условия, которому они должны удовлетворять.
С определением множеств с помощью включения тесно связана идея фильтрации или ограничения существующих множеств. Если вы начинаете с набора S и хотите сформировать новый набор, содержащий только те элементы из S, которые удовлетворяют некоторому свойству, вы можете добиться этого, рассматривая свойство как фильтр для S.
Например:
Некоторые другие примеры:
Итак, подведем итог: мы можем отфильтровать или ограничить любой набор S, взяв только те элементы, которые удовлетворяют определенному свойству. Фильтрованный набор можно определить с помощью понимания множеств, что обеспечивает краткий способ описания желаемого набора.
Важным преимуществом обработки фильтров как определений множеств является то, что полученные фильтрованные наборы затем можно использовать во всех стандартных операциях над множествами, таких как объединения, пересечения, разности и т. д. Например:
Тогда мы можем найти:
И так далее. Определение множеств как фильтров дает нам большую гибкость при построении новых множеств с помощью операций с множествами.
В некоторых случаях попытка определить множество с помощью условия фильтрации не работает так, как предполагалось:
Поэтому в этих случаях условия фильтрации не могут правильно определить наборы. Наборы оказываются пустыми, неоднозначными или основанными на неопределенных концепциях.
Вот несколько примеров, демонстрирующих определение наборов с помощью фильтров и нотации понимания наборов:
{2, 3, 5, 7, 11, 13, 17, 19}
Можно определить как:
{x | x — простое число И x
{5, 10, 15, 20, 25, 30, 35, 40, 45, 50}
Можно определить как:
{y | y — кратное 5 И y
{a, e, i, o, u}
Можно определить как:
{z | z — гласная в английском алфавите}
{4, 36, 64, 100}
Можно определить как:
{x | x — четный полный квадрат}
{Германия, Италия, Испания, Швейцария, Бельгия, Люксембург}
Можно определить как:
{y | y — страна, граничащая с Францией}
Итак, в этих примерах мы видим, как включение множеств обеспечивает краткий способ определения различных множеств путем указания ключевого свойства или фильтра, который выбирает нужные элементы множества.
Понятие определения множеств через синтаксис включения также присутствует во многих языках программирования. В таких языках, как Python, JavaScript, Haskell и других, включение множеств обеспечивает удобный способ инициализации множеств путем фильтрации элементов из других множеств или диапазонов.
Например, в Python:
“`python
primes = {x for x in range(2, 20) if is_prime(x)}
multiples_of_3 = {x for x in range(50) if x % 3 == 0}
“`
А в JavaScript:
“`js
const vowels = new Set(['a', 'e', 'i', 'o', 'u'].filter(x => isVowel(x)));
const squares = new Set([…Array(10)].map(x => x**2));
“`
Это демонстрирует, как синтаксис понимания множеств может использоваться для фильтрации и преобразования множеств в краткой, декларативной форме в коде.
Определение множеств через понимание или фильтры обеспечивает мощный, гибкий способ указания членства в множестве. Оно позволяет давать краткие определения множеств на основе соответствия определенным критериям. Полученные отфильтрованные множества могут эффективно использоваться в операциях с множествами, таких как объединения, пересечения, разности и т. д. Понимание множеств также хорошо переводится в синтаксис во многих языках программирования. Однако следует проявлять осторожность, чтобы избегать фильтров, которые являются неоднозначными, невыполнимыми или полагаются на неопределенные термины.
В целом, возможность определять множества как фильтры является важным математическим и вычислительным инструментом для краткого указания множеств и преобразования существующих множеств полезными способами.