Multihulk on hulgateooria mõiste, mis üldistab hulga mõistet. Multihulga erinevus tavalisest hulgast seisneb selles, et selle elemendid võivad esineda mitu korda. Multihulga elementide arvu, arvestades ka korduvaid elemente, nimetatakse selle suuruseks või võimsuseks. Seetõttu defineeritakse ka hulgatehted (ühend, ühisosa, vahe jne) multihulkade puhul eraldi.
Informaatikas kasutatakse multihulki andmestruktuurina; seal nimetatakse neid ka ingliskeelsete terminitega multiset ja bag. Näiteks käsitleb andmebaasikeel SQL päringu tulemusi multihulkadena, st korduvaid ridu ei eemaldata, kui just ei kasutata märksõna DISTINCT.[viide?]
Definitsioon
Ühe käsituse järgi on multihulk üle hulga (põhihulga ehk universumi) järjestatud paar, kus on kujutus, mis seab igale hulga elemendile vastavusse naturaalarvu, mida nimetatakse selle elemendi kordsuseks. Arv iga korral näitab, mitu korda element multihulgas esineb. Selles käsitluses on elementide varu: elemendi kordsus võib olla ka null, mis tähendab, et see element multihulgas ei esine. Kõigi hulga multihulkade hulka võib tähistada . Edaspidi kasutatakse selle asemel lühemat tähistust .
Multihulga üle hulga kandja on nende elementide hulk, mille kordsus on positiivne:
.
Teise käsituse järgi on multihulk defineeritud nii, et põhihulk langeb kandjaga kokku, nii et sellesse ei kuulu elemente kordsusega 0. Sel juhul on iga elemendi kordsus positiivne täisarv ja multihulk on defineeritud järjestatud paarina, kus .
Multihulga mõistet võib üldistada, lubades elemendi kordsuseks ka lõpmatu kardinaalarvu. Sel juhul võib kordsus olla mistahes nullist erinev kardinaalarv; kui multihulga kandjaks võetakse täpselt selle elementide hulk, on .
Üks lihtsamaid näiteid on positiivse täisarvu algtegurite multihulk. Näiteks on arvu 120 kanooniline lahutus algteguriteks, nii et selle algtegurite multihulk on . Arvu 1 algtegurite multihulk on tühi.
Teine näide on algebralise võrrandilahendite multihulk, kus iga lahendit arvestatakse koos kordsusega. Näiteks on võrrandi lahendite multihulk .
Viited
↑Donald Knuth. The Art of Computer Programming, kd 2: Seminumerical Algorithms, 3. trükk, 2007.
↑Джеймс Питерсон. Обзор теории комплектов. – Теория сетей Петри и моделирование систем, М.: Мир 1984, lk 231—235.
Kirjandus
James L. Peterson. Petri Net Theory and the Modeling of Systems, Prentice-Hall 1981.
Wayne D. Blizard. Multiset theory. – Notre Dame Journal of Formal Logic, 1989, 30(1), lk 36–66.
Wayne D. Blizard. The development of multiset theory. – Modern Logic, 1991, 1(4), lk 319–352.
Knuth, Donald E. The Art of Computer Programming, kd 2: Seminumerical Algorithms. 3. trükk, Addison-Wesley 1997, lLõik 4.6.3, harjutus 19.
Calude, C. S., Păun, Gh., Rozenberg, G., Salomaa, A. (toim). Multiset Processing: Mathematical, Computer Science, and Molecular Computing Points of View, Springer 2001.
Алексей Борисович Петровский. Основные понятия теории мультимножеств, Москва: Эдиториал УРСС, 2002, ISBN 5-354-00166-8.
А. Б. Петровский. Пространства множеств и мультимножеств, М.: Эдиториал УРСС 2003, ISBN 5-7262-0633-9.
Kenneth P. Bogart. Combinatorics Through Guided Discovery, 2. trükk, 2004.
Donald E. Knuth. The Art of Computer Programming, Volume 4, Fascicle 2: Generating All Tuples and Permutations, Upper Saddle River, N.J.: Addison-Wesley 2005, ISBN 0-201-85393-0.
Singh, D., Ibrahim, A. M., Yohanna, T., Singh, J. N. An overview of the applications of multisets. – Novi Sad Journal of Mathematics, 2007, 37(2), lk 73–92.
Donald E. Knuth. The Art of Computer Programming, vol. 4A: Combinatorial Algorithms, Part 1. Addison-Wesley 2011, lõigud 7.2.1.2 ja 7.2.1.3.