Что происходит, когда вы определяете набор как фильтр?

С математической точки зрения множество — это набор отдельных объектов, которые можно определить несколькими способами. Один из распространенных способов определения множества — перечисление всех его элементов в фигурных скобках. Например, множество {1, 2, 3} содержит элементы 1, 2 и 3. Другой способ определения множества — указание свойства или условия, которому должны удовлетворять его элементы, — это известно как определение множества с помощью включения или как фильтра.

Определение множеств с помощью включения

Чтобы определить множество с помощью включения, вы предоставляете описание или условие фильтрации, которое выбирает именно те объекты, которые вы хотите сделать членами множества. Например, множество четных чисел можно определить как:

{x | x — целое число, а x делится на 2}

Это читается как: множество всех x, таких что x — целое число, а x делится на 2. Вертикальная черта «|» можно прочитать как «такой, что» или «для которого». Это определение выбирает именно те элементы, которые нам нужны в наборе — все целые числа, которые являются четными. Вот еще несколько примеров определения множеств с помощью понимания:

  • {x | x — простое число, меньшее 10} = {2, 3, 5, 7}
  • {y | y — столица Европы} = {Лондон, Париж, Рим, …}
  • {z | z — полный квадрат, меньший 100} = {1, 4, 9, 16, 25, 36, 49, 64, 81}

Итак, подведем итог: определение множества с помощью включения обеспечивает краткий способ указания членов множества путем указания условия, которому они должны удовлетворять.

Фильтрация существующих множеств

С определением множеств с помощью включения тесно связана идея фильтрации или ограничения существующих множеств. Если вы начинаете с набора S и хотите сформировать новый набор, содержащий только те элементы из S, которые удовлетворяют некоторому свойству, вы можете добиться этого, рассматривая свойство как фильтр для S.

Например:

  • Пусть S = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  • Отфильтруйте S так, чтобы он содержал только четные элементы: {x | x входит в S, и x является четным}
  • Этот отфильтрованный набор имеет вид {2, 4, 6, 8, 10}

Некоторые другие примеры:

  • Пусть T = {красный, оранжевый, желтый, зеленый, синий, индиго, фиолетовый}
  • Отфильтруйте T так, чтобы он содержал только основные цвета: {x | x находится в T, а x — основной цвет}
  • Это дает {красный, желтый, синий}
  • Пусть U = {Германия, Франция, Великобритания, Испания, Италия, Польша, Греция}
  • Отфильтруем U, чтобы включить только страны, использующие евро: {y | y находится в U, а y использует валюту евро}
  • Это дает {Германия, Франция, Испания, Италия}

Итак, подведем итог: мы можем отфильтровать или ограничить любой набор S, взяв только те элементы, которые удовлетворяют определенному свойству. Фильтрованный набор можно определить с помощью понимания множеств, что обеспечивает краткий способ описания желаемого набора.

Операции над множествами на фильтрованных наборах

Важным преимуществом обработки фильтров как определений множеств является то, что полученные фильтрованные наборы затем можно использовать во всех стандартных операциях над множествами, таких как объединения, пересечения, разности и т. д. Например:

  • Пусть A = {x | x — простое число, меньшее 20}
  • Пусть B = {x | x — нечетное число, меньшее 20}
  • Пусть C = {x | x — кратное 3, меньшее 20}

Тогда мы можем найти:

  • Объединение B: {x | x — простое число или нечетное число, меньшее 20}
  • Пересечение C: {x | x — простое число, кратное 3, меньшее 20} = {3}
  • B – C: {x | x — нечетное число, не кратное 3, меньшее 20} = {1, 5, 7, 9, 15, 17, 19}

И так далее. Определение множеств как фильтров дает нам большую гибкость при построении новых множеств с помощью операций с множествами.

Когда фильтры не могут определить множества

В некоторых случаях попытка определить множество с помощью условия фильтрации не работает так, как предполагалось:

  • Условие фильтра невыполнимо — нет объектов, которые ему удовлетворяют. Например: {x | x — целое число, а x > 5 и x
  • Условие фильтра неоднозначно — оно не идентифицирует элементы множества уникальным образом. Например: {y | y — простое число}. Это не определяет конкретный набор, поскольку мы не ограничили y.
  • Фильтр опирается на неопределенные термины. Например: {z | z — цветочек}. Это пытается определить набор с помощью неопределенного свойства.

Поэтому в этих случаях условия фильтрации не могут правильно определить наборы. Наборы оказываются пустыми, неоднозначными или основанными на неопределенных концепциях.

Примеры определения наборов как фильтров

Вот несколько примеров, демонстрирующих определение наборов с помощью фильтров и нотации понимания наборов:

Простые числа меньше 20

{2, 3, 5, 7, 11, 13, 17, 19}

Можно определить как:

{x | x — простое число И x

Кратные 5 до 50

{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));
“`

Это демонстрирует, как синтаксис понимания множеств может использоваться для фильтрации и преобразования множеств в краткой, декларативной форме в коде.

Заключение

Определение множеств через понимание или фильтры обеспечивает мощный, гибкий способ указания членства в множестве. Оно позволяет давать краткие определения множеств на основе соответствия определенным критериям. Полученные отфильтрованные множества могут эффективно использоваться в операциях с множествами, таких как объединения, пересечения, разности и т. д. Понимание множеств также хорошо переводится в синтаксис во многих языках программирования. Однако следует проявлять осторожность, чтобы избегать фильтров, которые являются неоднозначными, невыполнимыми или полагаются на неопределенные термины.

В целом, возможность определять множества как фильтры является важным математическим и вычислительным инструментом для краткого указания множеств и преобразования существующих множеств полезными способами.