Az egyes adatelemek függetlenek, nincs közöttük kapcsolat. Az elemek között nincs sorrend, mindegy, hogy hol helyezkednek el egymáshoz képest. Az egyes elemekről meg tudom mondani, hogy az adatszerkezetnek elemei-e, még ha megkeverem őket, akkor is.
HALMAZ (SET)
Matematikai halmazfogalom megjelenése adatszerkezet szinten.
MULTIHALMAZ (MULTISET, BAG)
Olyan speciális halmaz, amely a halmaztól eltérően ismétlődést is megenged, tehát lehetnek
benne azonos elemek.
Mindkét adatszerkezet dinamikus és homogén. Beszélhetünk üreshalmazról is, viszont
végtelen halmaz, mint adatszerkezet nem létezik.
Speciális adatszerkezeti műveleteik vannak: (., ., ., \ | IN, +, *, -)
., IN: Segítségükkel meg lehet állapítani, hogy egy adott elem benne van-e a halmazban,
vagy sem. Eredménye mindig logikai érték.
., +: A multihalmazban az unió az összes elem unióját jelenti. Ha A . B = C , akkor |A| + |B|
= |C|.
., *: Ugyanez igaz a metszetképzésre is.
Műveletek
Létrehozás:
A halmazok között értelmezhető az összehasonlítási művelet. Két halmaz egyenlő, ha
ugyanazokat az elemeket tartalmazza, egyébként nem. Ha az egyik halmaz részhalmaza a
másiknak, akkor az a kisebb: H . K › H < K.
A halmazok reprezentációja a karakterisztikus függvényen alapul, általában folytonos tárolást
alkalmaznak. A reprezentációs szinten sorrend van, amikor a halmaz elemeit egy
sorrendiséggel rendezett tárhelyre képezzük le. Annyi bitet foglalunk le, amennyi halmazelem
lehetséges. Mivel a tár véges, a tárhely kicsi, ezért tudom, hogy maximálisan hány eleme van
a halmaznak, és sorrendbe rakom őket. A biteket 1-re állítom, ha az adott elem benne van a
halmazban, 0-ra, ha nincs benne. Az üreshalmaznak minden bitje 0, ha pedig minden elem
benne van a halmazban, akkor minden bit 1-es. Ez a karakterisztikus függvény.
Az, hogy a halmaz elemei hol vannak, az implementáció dolga, a felhasználónak nem szabad,
nem illik tudni. A karakterisztikus függvény előnye az, hogy az összes halmazművelet
visszavezethető logikai műveletre.
