Работа с массивами как с множествами
Здесь представлены несколько функций на JavaScript для работы с массивами как с множествами: пересечение, уникализация элементов, декартово произведение, соответствия Галуа.
Как известно, конечные множества в программах можно представлять в виде массивов. Принципиальное отличие конечного множества от массива состоит в том, что оно содержит только различающиеся (уникальные элементы).
Бинарное отношение можно представить как двумерный массив, состоящий из двухэлементных одномерных массивов. В каждом таком двухэлементном массиве содержится пара элементов, находящихся в рассматриваемом отношении.
Ниже перечислены функции, коды которых приведены на данной странице:
- across(массив1, массив2) — пересечение массивов (массив, содержащий элементы, входящие одновременно в оба массива)
- auniq(массив) — возвращает массив уникальных элементов из заданного массива. Очевидно, множества представляются массивами. Однако непустое множество должно содержать различающиеся элементы.
- DP(массив1, массив2) — декартово произведение двух массивов
- R1(элемент, отношение, направление) — возвращает массив всех элементов, находящихся в отношении с заданным элементом; если направление не указано, то предполагается прямое отношение, иначе — обратное; отношение задается двумерным массивом, элементы которого
задаются в виде двухэлементных массивов; данная функция используется в функции Rn() (см. ниже)
- Rn(массив, отношение, направление) — возвращает массив всех элементов,
находящихся в отношении со всеми элементами из заданного массива ; если направление не указано, то предполагается прямое отношение, иначе — обратное; отношение задается двумерным массивом, элементы которого
задаются в виде двухэлементных массивов; данная функция использует функцию R1() (см. выше)
Функции R1() и Rn() могут использоваться для определения соответствий Галуа между подмножествами множеств, элементы которых находятся в заданном бинарном отношении.
Например, пусть задано некоторое бинарное отношение R между множествами A и B (отношение задано в виде двумерного массива). Тогда замыкание Галуа подмножества X множества A есть множество (массив) CX, возвращаемое следующим выражением:
CX=Rn(Rn(X, R), R,1)
Ниже приводятся определения функций: