Standardprädikate zur Mengenbearbeitung
Aus Informatik
Version vom 4. März 2008, 12:33 Uhr von Ingo Höpping (Diskussion | Beiträge)
Eine Liste repräsentiert dann eine Menge (engl.: Set) im mathematischen Sinn, wenn sie keine doppelten Elemente enthält. Die Elemente in einer Menge müssen nicht sortiert sein.
Standardprädikate sind geschützte Bezeichner innerhalb von Prolog und dürfen deshalb nicht redefiniert werden.
- is_set(Set)
- ... ist erfüllt, wenn Set keine Duplikate enthält.
?- is_set([1,2,3,5,3,8]). No ?- is_set([1,2,3,5,6,8]). Yes ?- is_set([1,2,[2],5]). Yes
- list_to_set(List,Set)
- ... eliminiert alle Duplikate in List und liefert die Menge (!) Set.
?- list_to_set([5,2,5,3,5,4,3], Set). Set = [5, 2, 3, 4] ;
- intersection(Set1,Set2,Set3)
- ... ist erfüllt, wenn Set3 die Schnittmenge aus Set1 und Set2 ist.
?- intersection([1,5,4,3,9,2],[7,6,5,4,3,2,8], Set3). Set3 = [5, 4, 3, 2] ;
- subtract(Set,Delete,Result)
- ... entfernt alle Elemente der Menge Delete aus der Menge Set und liefert Result.
?- subtract([4,1,2,6,8],[6,1],Result). Result = [4, 2, 8] ;
?- subtract([9,5,4,3,2,1],[8,7,6,5,4,3,2], Result). Result = [9, 1] ;
- union(Set1,Set2,Set3)
- ... ist erfüllt, wenn Set3 die Vereinigungsmenge aus den Mengen Set1 und Set2 ist.
?- union([a,c,e,f],[c,m,a,d,e],Set3). Set3 = [f, c, m, a, d, e] ;
- subset(Subset,Set)
- ... ist erfüllt, wenn Subset Teilmenge der Menge Set ist.
?- subset([1,2,3,4,5,6],[2,3]). No ?- subset([2,3],[1,2,3,4,5,6]). Yes ?- subset([3,1,2],[2,1,3]). Yes