Множина — абстрактний тип даних і структура даних в інформатиці, є реалізацією математичного об'єкта скінченна множина.
Дані типу «множина» дозволяють зберігати обмежене число значень певного типу без певного порядку. Повторення значень, як правило, неприпустимо. За винятком того, що множина в програмуванні скінченне, воно загалом відповідає концепції математичної множини. Для цього типу в мовах програмування зазвичай передбачені стандартні операції над множинами.
Залежно від ідеології, різні мови програмування розглядають множину як простий чи складний тип даних.
Теорія типів
В теорії типів множини, в основному, ототожнюються з індикаторною функцією (характеристичною функцією): таким чином, множина значень типу може бути позначена або . (Підтипи або підмножини можуть бути змодельовані уточнювальними типами, а фактор-множини замінені [en].) Характеристична функція множини визначається так:
Теоретично, велика кількість інших абстрактних структур даних може розглядатись як множина з додатковими операціями і/або додатковими аксіомами, накладеними на стандартні операції. Наприклад, абстрактна структура даних купа розглядається як множина структур із min(S)
операцією, яка повертає найменший елемент.
Операції
Основні теоретико-множинні операції
Визначають такі операції алгебри множин:
union(S,T)
: повертає об’єднання множин S і T.intersection(S,T)
: повертає перетин множин S і T.difference(S,T)
: повертає різницю множин S і T.subset(S,T)
: предикат, що перевіряє чи є множина S підмножиною множини T.
Статичні множини
Типові операції, які задаються статичною структурою множини S:
is_element_of(x,S)
: перевіряє входження значення X у множину S.is_empty(S)
: перевіряє чи є множина S порожньою.size(S)
абоcardinality(S)
: повертає число елементів S множини.iterate(S)
: функція, що повертає один довільно вибраний елемент множини S при кожному виклику.enumerate(S)
: повертає у довільному порядку список елементів, які містяться у множини S.build()
: створює множину зі значеннями .- create_from(collection): створює нову множину, яка містить у собі всі елементи даної сукупності або всі елементи, повернуті ітератором.
Динамічні множини
Динамічні структури зазвичай додають:
create()
: створює нову, спочатку порожню множину.create_with_capacity(n)
: створює нову, спочатку порожню множину, але розмірністю n.add(x,S)
: додає елемент x до множини S, якщо такого ще не існуєremove(S,x)
: видаляє елемент x із множини S, якщо існує.capacity(S)
: повертає максимальне число елементів, яке може містити S.
Деякі множинні структури можуть дозволити собі використовувати лише деякі із цих операцій. Потреба кожної операції буде залежати від реалізації, а також конкретних значень, що входять до множини, і порядку, у якому вони розташовані у множині.
Додаткові операції
Існує багато інших операцій, що можуть бути визначені щодо термінів вище, такі як:
pop(S)
: повертає довільно вибраний елемент множини S, і видаляє його з S.pick(S)
: повертає довільно вибраний елемент множини S. З функціональної точки зору мутаторрор
може бути інтерпретований як пара селекторів(pick, rest)
деrest
повертає множину, що включає в себе усі елементи, окрім вибраного.map(F,S)
: повертає множину різних значень, отриманих від F до кожного елемента S.filter(P,S)
: повертає підмножину елементів, що містяться у S, та задовольняють даний предикат P.fold(A,F,S)
: повертає значення A, після застосування формулидля кожного елемента e у S, для деякої бінарної операції F. F повинна бути асоціативною і комунікативною, для того, щоб бути чітко визначеною.
clear(S)
: видаляє усі елементи S.equal(S, S)
: перевіряє чи є дві множини рівними (тобто мають усі однакові елементи).- hash(S): повертає хеш-значення для статичної множини S, таке, якщо
equal(S,S)
тодіhash(S) = hash(S)
.
Операції для множин, що містять елементи спеціального типу:
sum(S)
: повертає суму усіх елементів множини S, для деякого визначення суми. Наприклад, сума для цілих або дійсних чисел може бути визначена так:fold(0, add, S)
.collapse(S)
: дано множину множин, повертає об’єднання ряду множин. Наприклад,collapse({{1}, {2, 3}}) == {1, 2, 3}
може розглядатись як сума.flatten(S)
: дано множину, що складається із множин і атомних елементів (елементи, що не є множиною), повертає множину, елементи якої є початковою множиною верхнього рівня або елементи множини, які входять до цієї множини. Іншими словами, видаляє рівень вкладеності, такий як: collapse але дозволяє атоми. Це може бути зроблено один раз або декілька разів, для того, щоб отримати множину тільки атомних елементів. Наприклад,flatten({1, {2, 3}}) == {1, 2, 3}
.nearest(S,x)
: повертає елемент множини S, що є найближчим до значення x.min(S)
,max(S)
: повертає мінімальний/максимальний елементи множини S.
Реалізація
Множини можна реалізувати, використовуючи різні структури даних, які забезпечують різні часові затрати і просторові компроміси для різних операцій. Деякі реалізації створені для того, щоб покращити ефективність дуже спеціалізованих операцій, таких як: nearest
або union
. Реалізації описані для «загального використання», як правило, прагнуть оптимізувати element_of
, add
та delete
операції. Простою реалізацією є використання списку (абстрактний тип даних), ігноруючи порядок елементів та уникаючи їх повтору. Це просто, але неефективно, бо операції на перевірку належності у множині чи видалення елементу O(n) повинні сканувати увесь список. Замість цього, множини часто реалізуються з використанням більш ефективних структур даних, а саме, різних видів дерев, префіксних дерев або хеш-таблиць.
Так як множини можна інтерпретувати як щось на зразок карти (індикаторною функцією), вони зазвичай реалізуються у той самий спосіб, що і (часткові) карти (асоціативні масиви) – у цьому разі значення кожної пари ключа-значення має тип одиниці або контрольного елемента (наприклад, 1), а саме збалансоване дерево для відсортованого масиву (O(log n) для більшості операцій) або хеш-таблицю для невідсортованого масиву (O(1) в середньому випадку, але O(n) в найгіршому випадку, для більшості операцій). Відсортована лінійна хеш-таблиця може бути використана для забезпечення детерміновано впорядкованих множин.
Крім того, у мовах, які підтримують карти, а не множини, множини можуть бути реалізовані на основі карти. Наприклад, загальна ідіома у мові програмування Perl, що конвертує масив у хеш, чиї параметри приймають параметри контрольного елемента, для використання як масиву:
my %elements = map { $_ => 1 } @elements;
Множина в Паскалі
У мові Паскаль множина — складовий тип даних, який зберігає інформацію про присутність у множині об'єктів будь-якого рахункового типу. Потужність цього типу визначає розмір множини — 1 біт на елемент. У Turbo Pascal є обмеження на 256 елементів, у деяких інших реалізаціях це обмеження ослаблене. Приклад роботи з множинами:
type {визначаємо базові для множин зліченний тип і тип-діапазон} colors = (red,green,blue); smallnumbers = 0..10; {визначаємо множини з наших типів} colorset = set of colors; numberset = set of smallnumbers; {можна і не задавати тип окремо} anothernumberset = set of 0..20; {оголошуємо змінні типу множин} var nset1,nset2,nset3:numberset; cset:colorset; begin nset1 := [0,2,4,6,8,10]; {задаємо у вигляді конструктора множини} cset := [red,blue]; {простим перерахуванням елементів} nset2 := [1,3,9,7,5]; {порядок перерахування не важливий} nset3 := []; {пуста множина} include(nset3,7); {додавання елемента} exclude(nset3,7); {вилучення елемента} nset1 := [0..5]; {можливо задавати елементи діапазоном} nset3 := nset1 + nset2; {об'єднання} nset3 := nset1 * nset2; {перетин} nset3 := nset1 - nset2; {різниця} if (5 in nset2) or {перевірка на входження елемента} (green in cset) then {…} end.
Мультимножина
Узагальненням поняття множини є мультимножина чи сумка (англ. bag), яка подібна на множину, але дозволяє дублікати (повторення однакових значень).
Джерела
- Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. 10. Елементарні структури даних. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
Це незавершена стаття про структури даних. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Mnozhina abstraktnij tip danih i struktura danih v informatici ye realizaciyeyu matematichnogo ob yekta skinchenna mnozhina Dani tipu mnozhina dozvolyayut zberigati obmezhene chislo znachen pevnogo tipu bez pevnogo poryadku Povtorennya znachen yak pravilo nepripustimo Za vinyatkom togo sho mnozhina v programuvanni skinchenne vono zagalom vidpovidaye koncepciyi matematichnoyi mnozhini Dlya cogo tipu v movah programuvannya zazvichaj peredbacheni standartni operaciyi nad mnozhinami Zalezhno vid ideologiyi rizni movi programuvannya rozglyadayut mnozhinu yak prostij chi skladnij tip danih Teoriya tipivV teoriyi tipiv mnozhini v osnovnomu ototozhnyuyutsya z indikatornoyu funkciyeyu harakteristichnoyu funkciyeyu takim chinom mnozhina znachen tipu A displaystyle A mozhe buti poznachena 2A displaystyle 2 A abo P A displaystyle P A Pidtipi abo pidmnozhini mozhut buti zmodelovani utochnyuvalnimi tipami a faktor mnozhini zamineni en Harakteristichna funkciya F displaystyle F mnozhini S displaystyle S viznachayetsya tak F x 1 if x S0 if x S displaystyle F x begin cases 1 amp text if x in text S 0 amp text if x not in text S end cases Teoretichno velika kilkist inshih abstraktnih struktur danih mozhe rozglyadatis yak mnozhina z dodatkovimi operaciyami i abo dodatkovimi aksiomami nakladenimi na standartni operaciyi Napriklad abstraktna struktura danih kupa rozglyadayetsya yak mnozhina struktur iz min i S i operaciyeyu yaka povertaye najmenshij element OperaciyiOsnovni teoretiko mnozhinni operaciyi Viznachayut taki operaciyi algebri mnozhin union i S T i povertaye ob yednannya mnozhin S i T intersection i S T i povertaye peretin mnozhin S i T difference i S T i povertaye riznicyu mnozhin S i T subset i S T i predikat sho pereviryaye chi ye mnozhina S pidmnozhinoyu mnozhini T Statichni mnozhini Tipovi operaciyi yaki zadayutsya statichnoyu strukturoyu mnozhini S is element of i x S i pereviryaye vhodzhennya znachennya X u mnozhinu S is empty i S i pereviryaye chi ye mnozhina S porozhnoyu size i S i abo cardinality i S i povertaye chislo elementiv S mnozhini iterate i S i funkciya sho povertaye odin dovilno vibranij element mnozhini S pri kozhnomu vikliku enumerate i S i povertaye u dovilnomu poryadku spisok elementiv yaki mistyatsya u mnozhini S build span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle x 1 x 2 x n semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi x mi mrow class MJX TeXAtom ORD mn 1 mn mrow msub mo mo msub mi x mi mrow class MJX TeXAtom ORD mn 2 mn mrow msub mo mo mo mo mo mo mo mo mo mo msub mi x mi mrow class MJX TeXAtom ORD mi n mi mrow msub mstyle mrow annotation encoding application x tex displaystyle x 1 x 2 x n annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy82N2JhMmQ1ZWNhNzllYjRmNzA4OGJhM2JkMzJjMTgwMDc3OWQwMzhh svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 13 52ex height 2 009ex alt displaystyle x 1 x 2 x n noscript img alt image class img layz bg lazy style width 13 52ex height 2 009ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy82N2JhMmQ1ZWNhNzllYjRmNzA4OGJhM2JkMzJjMTgwMDc3OWQwMzhh svg data alt displaystyle x 1 x 2 x n data class mwe math fallback image inline mw invert skin invert span stvoryuye mnozhinu zi znachennyami x1 x2 xn displaystyle x 1 x 2 x n create from collection stvoryuye novu mnozhinu yaka mistit u sobi vsi elementi danoyi sukupnosti abo vsi elementi povernuti iteratorom Dinamichni mnozhini Dinamichni strukturi zazvichaj dodayut create stvoryuye novu spochatku porozhnyu mnozhinu create with capacity n stvoryuye novu spochatku porozhnyu mnozhinu ale rozmirnistyu n add x S dodaye element x do mnozhini S yaksho takogo she ne isnuye remove S x vidalyaye element x iz mnozhini S yaksho isnuye capacity S povertaye maksimalne chislo elementiv yake mozhe mistiti S Deyaki mnozhinni strukturi mozhut dozvoliti sobi vikoristovuvati lishe deyaki iz cih operacij Potreba kozhnoyi operaciyi bude zalezhati vid realizaciyi a takozh konkretnih znachen sho vhodyat do mnozhini i poryadku u yakomu voni roztashovani u mnozhini Dodatkovi operaciyi Isnuye bagato inshih operacij sho mozhut buti viznacheni shodo terminiv vishe taki yak pop S povertaye dovilno vibranij element mnozhini S i vidalyaye jogo z S pick S povertaye dovilno vibranij element mnozhini S Z funkcionalnoyi tochki zoru mutator ror mozhe buti interpretovanij yak para selektoriv pick rest de rest povertaye mnozhinu sho vklyuchaye v sebe usi elementi okrim vibranogo map F S povertaye mnozhinu riznih znachen otrimanih vid F do kozhnogo elementa S filter P S povertaye pidmnozhinu elementiv sho mistyatsya u S ta zadovolnyayut danij predikat P fold A span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 0 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 0 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 0 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9iZDA1OGRhYzYzMDJlY2UwZWM5YTNlMWNmYWQ4YTM2Y2E2NzQ5MDNh svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 0 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9iZDA1OGRhYzYzMDJlY2UwZWM5YTNlMWNmYWQ4YTM2Y2E2NzQ5MDNh svg data alt displaystyle 0 data class mwe math fallback image inline mw invert skin invert span F S povertaye znachennya A pislya zastosuvannya formuli span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle A i 1 F A i e semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi A mi mrow class MJX TeXAtom ORD mi i mi mo mo mn 1 mn mrow msub mo mo mi F mi mo stretchy false mo msub mi A mi mrow class MJX TeXAtom ORD mi i mi mrow msub mo mo mi e mi mo stretchy false mo mstyle mrow annotation encoding application x tex displaystyle A i 1 F A i e annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9kNjY5ZGIwOGIwZWM2YzBlN2MwMDM1NmNlZWY2ZTdhMmFiZDI5OTcy svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 838ex width 16 599ex height 2 843ex alt displaystyle A i 1 F A i e noscript img alt image class img layz bg lazy style width 16 599ex height 2 843ex vertical align 0 838ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9kNjY5ZGIwOGIwZWM2YzBlN2MwMDM1NmNlZWY2ZTdhMmFiZDI5OTcy svg data alt displaystyle A i 1 F A i e data class mwe math fallback image inline mw invert skin invert span dlya kozhnogo elementa e u S dlya deyakoyi binarnoyi operaciyi F F povinna buti asociativnoyu i komunikativnoyu dlya togo shob buti chitko viznachenoyu clear S vidalyaye usi elementi S equal S span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 1 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 1 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 1 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9mMmJhNDBmOGM2MzUyYzE1ZDEwYmQwN2E5YTEwMmQzN2U2MTQxOTQx svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 1 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9mMmJhNDBmOGM2MzUyYzE1ZDEwYmQwN2E5YTEwMmQzN2U2MTQxOTQx svg data alt displaystyle 1 data class mwe math fallback image inline mw invert skin invert span S span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 2 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 2 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 2 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy85OGY1MjMxY2U5MGUwNDcxYjk4ZWJjMjlhNzliMWNjNzY5ZTk5MmJk svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 2 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy85OGY1MjMxY2U5MGUwNDcxYjk4ZWJjMjlhNzliMWNjNzY5ZTk5MmJk svg data alt displaystyle 2 data class mwe math fallback image inline mw invert skin invert span pereviryaye chi ye dvi mnozhini rivnimi tobto mayut usi odnakovi elementi hash S povertaye hesh znachennya dlya statichnoyi mnozhini S take yaksho equal S span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 1 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 1 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 1 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9mMmJhNDBmOGM2MzUyYzE1ZDEwYmQwN2E5YTEwMmQzN2U2MTQxOTQx svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 1 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9mMmJhNDBmOGM2MzUyYzE1ZDEwYmQwN2E5YTEwMmQzN2U2MTQxOTQx svg data alt displaystyle 1 data class mwe math fallback image inline mw invert skin invert span S span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 2 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 2 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 2 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy85OGY1MjMxY2U5MGUwNDcxYjk4ZWJjMjlhNzliMWNjNzY5ZTk5MmJk svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 2 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy85OGY1MjMxY2U5MGUwNDcxYjk4ZWJjMjlhNzliMWNjNzY5ZTk5MmJk svg data alt displaystyle 2 data class mwe math fallback image inline mw invert skin invert span todi hash S span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 1 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 1 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 1 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9mMmJhNDBmOGM2MzUyYzE1ZDEwYmQwN2E5YTEwMmQzN2U2MTQxOTQx svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 1 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy9mMmJhNDBmOGM2MzUyYzE1ZDEwYmQwN2E5YTEwMmQzN2U2MTQxOTQx svg data alt displaystyle 1 data class mwe math fallback image inline mw invert skin invert span hash S span class mwe math element span class mwe math mathml inline mwe math mathml a11y style display none math xmlns http www w3 org 1998 Math MathML alttext displaystyle 2 semantics mrow class MJX TeXAtom ORD mstyle displaystyle true scriptlevel 0 msub mi mi mrow class MJX TeXAtom ORD mn 2 mn mrow msub mstyle mrow annotation encoding application x tex displaystyle 2 annotation semantics math span noscript img src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy85OGY1MjMxY2U5MGUwNDcxYjk4ZWJjMjlhNzliMWNjNzY5ZTk5MmJk svg class mwe math fallback image inline mw invert skin invert aria hidden true style vertical align 0 671ex width 1 054ex height 1 676ex alt displaystyle 2 noscript img alt image class img layz bg lazy style width 1 054ex height 1 676ex vertical align 0 671ex data src https www wikidata uk ua nina az image aHR0cHM6Ly93aWtpbWVkaWEub3JnL2FwaS9yZXN0X3YxL21lZGlhL21hdGgvcmVuZGVyL3N2Zy85OGY1MjMxY2U5MGUwNDcxYjk4ZWJjMjlhNzliMWNjNzY5ZTk5MmJk svg data alt displaystyle 2 data class mwe math fallback image inline mw invert skin invert span Operaciyi dlya mnozhin sho mistyat elementi specialnogo tipu sum S povertaye sumu usih elementiv mnozhini S dlya deyakogo viznachennya sumi Napriklad suma dlya cilih abo dijsnih chisel mozhe buti viznachena tak fold 0 add S collapse S dano mnozhinu mnozhin povertaye ob yednannya ryadu mnozhin Napriklad collapse 1 2 3 1 2 3 mozhe rozglyadatis yak suma flatten S dano mnozhinu sho skladayetsya iz mnozhin i atomnih elementiv elementi sho ne ye mnozhinoyu povertaye mnozhinu elementi yakoyi ye pochatkovoyu mnozhinoyu verhnogo rivnya abo elementi mnozhini yaki vhodyat do ciyeyi mnozhini Inshimi slovami vidalyaye riven vkladenosti takij yak collapse ale dozvolyaye atomi Ce mozhe buti zrobleno odin raz abo dekilka raziv dlya togo shob otrimati mnozhinu tilki atomnih elementiv Napriklad flatten 1 2 3 1 2 3 nearest S x povertaye element mnozhini S sho ye najblizhchim do znachennya x min S max S povertaye minimalnij maksimalnij elementi mnozhini S RealizaciyaMnozhini mozhna realizuvati vikoristovuyuchi rizni strukturi danih yaki zabezpechuyut rizni chasovi zatrati i prostorovi kompromisi dlya riznih operacij Deyaki realizaciyi stvoreni dlya togo shob pokrashiti efektivnist duzhe specializovanih operacij takih yak nearest abo union Realizaciyi opisani dlya zagalnogo vikoristannya yak pravilo pragnut optimizuvati element of add ta delete operaciyi Prostoyu realizaciyeyu ye vikoristannya spisku abstraktnij tip danih ignoruyuchi poryadok elementiv ta unikayuchi yih povtoru Ce prosto ale neefektivno bo operaciyi na perevirku nalezhnosti u mnozhini chi vidalennya elementu O n povinni skanuvati uves spisok Zamist cogo mnozhini chasto realizuyutsya z vikoristannyam bilsh efektivnih struktur danih a same riznih vidiv derev prefiksnih derev abo hesh tablic Tak yak mnozhini mozhna interpretuvati yak shos na zrazok karti indikatornoyu funkciyeyu voni zazvichaj realizuyutsya u toj samij sposib sho i chastkovi karti asociativni masivi u comu razi znachennya kozhnoyi pari klyucha znachennya maye tip odinici abo kontrolnogo elementa napriklad 1 a same zbalansovane derevo dlya vidsortovanogo masivu O log n dlya bilshosti operacij abo hesh tablicyu dlya nevidsortovanogo masivu O 1 v serednomu vipadku ale O n v najgirshomu vipadku dlya bilshosti operacij Vidsortovana linijna hesh tablicya mozhe buti vikoristana dlya zabezpechennya determinovano vporyadkovanih mnozhin Krim togo u movah yaki pidtrimuyut karti a ne mnozhini mnozhini mozhut buti realizovani na osnovi karti Napriklad zagalna idioma u movi programuvannya Perl sho konvertuye masiv u hesh chiyi parametri prijmayut parametri kontrolnogo elementa dlya vikoristannya yak masivu my elements map gt 1 elements Mnozhina v Paskali U movi Paskal mnozhina skladovij tip danih yakij zberigaye informaciyu pro prisutnist u mnozhini ob yektiv bud yakogo rahunkovogo tipu Potuzhnist cogo tipu viznachaye rozmir mnozhini 1 bit na element U Turbo Pascal ye obmezhennya na 256 elementiv u deyakih inshih realizaciyah ce obmezhennya oslablene Priklad roboti z mnozhinami type viznachayemo bazovi dlya mnozhin zlichennij tip i tip diapazon colors red green blue smallnumbers 0 10 viznachayemo mnozhini z nashih tipiv colorset set of colors numberset set of smallnumbers mozhna i ne zadavati tip okremo anothernumberset set of 0 20 ogoloshuyemo zminni tipu mnozhin var nset1 nset2 nset3 numberset cset colorset begin nset1 0 2 4 6 8 10 zadayemo u viglyadi konstruktora mnozhini cset red blue prostim pererahuvannyam elementiv nset2 1 3 9 7 5 poryadok pererahuvannya ne vazhlivij nset3 pusta mnozhina include nset3 7 dodavannya elementa exclude nset3 7 viluchennya elementa nset1 0 5 mozhlivo zadavati elementi diapazonom nset3 nset1 nset2 ob yednannya nset3 nset1 nset2 peretin nset3 nset1 nset2 riznicya if 5 in nset2 or perevirka na vhodzhennya elementa green in cset then end MultimnozhinaDokladnishe Multimnozhina Uzagalnennyam ponyattya mnozhini ye multimnozhina chi sumka angl bag yaka podibna na mnozhinu ale dozvolyaye dublikati povtorennya odnakovih znachen DzherelaT Kormen Ch Lejzerson R Rivest K Stajn 2009 1990 10 Elementarni strukturi danih Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Ce nezavershena stattya pro strukturi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi