Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Intersection([_|T],S2,S) :- intersection(T,S2,S)




Member(H,S2),!, intersection(T1,S2,T).

Intersection([],_,[]).

intersection([H|T1],S2,[H|T]):-

 

Якщо перетнути множину [1,2,3,4] з множиною [3,4,5], то результатом буде множина [3,4].

 

Різниця двох множин — це множина, утворена з тих елементів першої множини, що не належать другій. Різниця множин A і B позначається A-B чи A\B. Математичний смисл виглядає так: A\B={x | xÎA & хÏB}.

На малюнках різниця множин A і B (B і A) позначена штрихуванням.


Рис. 3. Різниця множин A і B


Рис. 4. Різниця множин В і А

У цій операції, на відміну від двох попередніх, важливий порядок множин. Якщо в об'єднанні чи перетині множин поміняти перший і другий аргументи місцями, результат не зміниться, тоді як

при A={1,2,3,4}, B={3,4,5}, A\B={1,2}, але B\A={5}. Тобто це відношення некоммутативне.

У предиката, що реалізує різницю, як і в об'єднання й перетину, буде три аргументи: перший — множина, з якої потрібно відняти, другий — множина, яку потрібно відняти, третій — результат вирахування з першого аргументу другого. Третій аргумент набуває ті елементи першої множини, які не належать другій множині.

Б азис рекурсії: очевидний факт, що при вирахуванні довільної множини з порожньої нічого не може бути, окрім порожньої множини.

Крок рекурсії залежить від того, чи належить перший елемент множини, з якої віднімають, множині, яку віднімають:

§ коли голова першої множини є елементом другої множини, різницею множин є різниця між хвостом першої множини та другою множиною;

§ коли голова першої множини не є елементом другої множини, різницею множин буде множина, утворена приписуванням голови першої множини до різниці між хвостом першої множини та другою множиною.

minus([],_,[]). minus([H|T],S2,S):- member(H,S2),!, minus(T,S2,S). minus([H|T],S2,[H|S]):- minus(T,S2,S).

 

Перетин через різницю. З математики відома тотожність AÇB = A\(A\B). Перевіримо її, записавши відповідний предикат, що реалізує перетин множин, через узяття різниці.

 

 

intersection2(A,B,S):- minus(A,B,A_B), /*A_B=A\B */ minus(A,A_B,S). /* S = A\A_B = A\(A\B) */

 

Емпірична перевірка свідчить, що цей предикат, так само, як і раніше визначений предикат intersection, повертає саме ті результати, які очікуються.

Відношення підмножини. Одна множина є підмножиною іншої, якщо кожен елемент першої множини належить другій множині. Факт, що множина A є підмножиною множини B, позначається через A⊆B та у теорії множин визначається так:

AB«"x(xÎA ®xÎB).

Предикат, що реалізує це відношення, має два аргументи, обоє вхідні. Перший аргумент – множина, що розуміється як підмножина, другий – як надмножина.

Б азис рекурсії: очевидний факт, що порожня множина є підмножиною будь-якої множини.

Крок рекурсії: щоб одна множина була підмножиною іншої, достатньо, щоб її перший елемент належав другій множині (цю перевірку виконує предикат member), а її хвіст був підмножиною другої множини.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 476; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.