Knowledge (XXG)

Set (abstract data type)

Source 📝

36: 1867:
and are stored as distinct items. For example, given a list of people (by name) and ages (in years), one could construct a multiset of ages, which simply counts the number of people of a given age. Alternatively, one can construct a multiset of people, where two people are considered equivalent if
1875:
but still distinct under another relation. Some types of multiset implementations will store distinct equal objects as separate items in the data structure; while others will collapse it down to one version (the first one encountered) and keep a positive integer count of the multiplicity of the
2041:
Where a multiset data structure is not available, a workaround is to use a regular set, but override the equality predicate of its items to always return "not equal" on distinct objects (however, such will still not be able to store multiple occurrences of the same object) or use an
1178:: given a set consisting of sets and atomic elements (elements that are not sets), returns a set whose elements are the atomic elements of the original top-level set or elements of the sets it contains. In other words, remove a level of nesting – like 1496:
template class, which is implemented using a hash table. In sets, the elements themselves are the keys, in contrast to sequenced containers, where elements are accessed using their (relative or absolute) position. Set elements must have a strict weak
437: 1882:
The set of all bags over type T is given by the expression bag T. If by multiset one considers equal items identical and simply counts them, then a multiset can be interpreted as a function from the input domain to the non-negative integers
171:
that do not change after they are constructed. Static sets allow only query operations on their elements — such as checking whether a given value is in the set, or enumerating the values in some arbitrary order. Other variants, called
850:
Some set structures may allow only some of these operations. The cost of each operation will depend on the implementation, and possibly also on the particular values stored in the set, and the order in which they are inserted.
2607:
Recent Trends in Data Type Specification: 10th Workshop on Specification of Abstract Data Types Joint with the 5th COMPASS Workshop, S. Margherita, Italy, May 30 - June 3, 1994. Selected Papers, Volume
1868:
their ages are the same (but may be different people and have different names), in which case each pair (name, age) must be stored, and selecting on a given age gives all the people of a given age.
1944: 2544:
Management and Processing of Complex Data Structures: Third Workshop on Information Systems and Artificial Intelligence, Hamburg, Germany, February 28 - March 2, 1994. Proceedings,
1887:), generalizing the identification of a set with its indicator function. In some cases a multiset in this counting sense may be generalized to allow negative values, as in Python. 1247:, which provide different time and space trade-offs for various operations. Some implementations are designed to improve the efficiency of very specialized operations, such as 283: 1310:
for unsorted sets (which has O(1) average-case, but O(n) worst-case, for most operations). A sorted linear hash table may be used to provide deterministically ordered sets.
343: 1271:, ignoring the order of the elements and taking care to avoid repeated values. This is simple but inefficient, as operations like set membership or element deletion are 250: 1593: 335: 315: 223: 3594: 1587: 1859:, which is similar to a set but allows repeated ("equal") values (duplicates). This is used in two distinct senses: either equal values are considered 3270: 2836: 1279:), as they require scanning the entire list. Sets are often instead implemented using more efficient data structures, particularly various flavors of 53: 1914: 1396:), but specialized algorithms may yield lower asymptotic time bounds. If sets are implemented as sorted lists, for example, the naive algorithm for 3207: 2841: 2831: 2826: 3564: 2284:, a table can be a (mathematical) set or a multiset, depending on the presence of unicity constraints on some columns (which turns it into a 2281: 2814: 2715: 2589:
Inductive Synthesis of Functional Programs: Universal Planning, Folding of Finite Programs, and Schema Abstraction by Analogical Reasoning,
1835:, sets can be emulated using associative arrays, by using the elements as keys, and using a dummy value as the values, which are ignored. 1294:
As sets can be interpreted as a kind of map (by the indicator function), sets are commonly implemented in the same way as (partial) maps (
100: 3503: 1906: 1303: 119: 1879:
As with sets, multisets can naturally be implemented using hash table or trees, which yield different performance characteristics.
1581: 1575: 72: 1381:
implements a set probabilistically, using a very compact representation but risking a small chance of false positives on queries.
2636: 1182:
but allow atoms. This can be done a single time, or recursively flattening to obtain a set of only atomic elements. For example,
1968: 3293: 2965: 749: 157: 79: 3298: 3082: 2887: 2819: 2781: 1902: 1743: 1479: 955: 937: 57: 1569: 442:
In theory, many other abstract data structures can be viewed as set structures with additional operations and/or additional
3633: 3263: 2403: 2294:
allows the selection of rows from a relational table: this operation will in general yield a multiset, unless the keyword
2018: 1788: 1616: 2046:
mapping the values to their integer multiplicities (this will not be able to distinguish between equal elements at all).
3638: 2982: 2912: 2760: 1766: 1681:, using equality and identity for inclusion test respectively. Many dialects provide variations for compressed storage ( 1539: 1528: 965: 86: 1980: 1974: 1781: 3377: 3360: 3237: 1933: 1708: 1606: 1545: 1533: 1519: 1501: 1449: 1313:
Further, in languages that support maps but not sets, sets can be implemented in terms of maps. For example, a common
912: 3576: 3343: 3338: 2992: 2860: 1812: 68: 1524: 160:
types, rather than retrieving a specific element from a set, one typically tests a value for membership in a set.
46: 3333: 3170: 3122: 3034: 3012: 3007: 2935: 2801: 2623: 1892: 1465: 1268: 517: 3326: 3256: 2708: 1739: 1610: 1602: 1630:
since 2.4, and since Python 3.0 and 2.7, supports non-empty set literals using a curly-bracket syntax, e.g.:
3607: 3584: 3197: 3112: 2611: 2007: 904:
returns the set consisting of all elements except for the arbitrary element. Can be interpreted in terms of
543: 2385: 2298:
is used to force the rows to be all different, or the selection includes the primary (or a candidate) key.
3589: 3389: 2940: 2796: 2755: 2750: 2595: 2342: 3515: 3470: 3432: 2930: 2905: 2547: 1620: 1492: 1280: 432:{\displaystyle F(x)={\begin{cases}1,&{\mbox{if }}x\in S\\0,&{\mbox{if }}x\not \in S\end{cases}}} 2023: 255: 3455: 2732: 2001: 1872: 1437: 1362: 1209: 2037:
class, which can be instantiated to use either identity or equality as predicate for inclusion test.
1991: 1748: 367: 93: 3628: 3202: 3180: 3107: 2960: 2952: 2872: 2701: 859:
There are many other operations that can (in principle) be defined in terms of the above, such as:
447: 3498: 2673: 1475: 3483: 3348: 3308: 3185: 3165: 3117: 3092: 2877: 2846: 1831:
As noted in the previous section, in languages which do not directly support sets but do support
1512: 491: 202: 141: 2389:
that can be used in another query, or in assignment to a column of appropriate collection type.
1506: 3417: 3316: 3072: 3002: 2977: 2791: 2786: 2408: 2043: 1832: 1321:
that converts an array to a hash whose values are the sentinel value 1, for use as a set, is:
1314: 1295: 1897: 1871:
Formally, it is possible for objects in computer science to be considered "equal" under some
1823: 1817: 1725:
classes that implement sets using hash tables, the latter allowing iteration in sorted order.
3440: 3217: 3102: 2900: 1453: 1070:: checks whether the two given sets are equal (i.e. contain all and only the same elements). 133: 228: 3460: 3402: 3222: 3087: 3039: 2972: 2532: 1425: 472: 286: 2663:, Journal of Functional Programming 3(4):553-562, October 1993. Retrieved on 2015-03-11. 1762:
package provides a set module which implements a set data structure based upon TCL lists.
1713: 1663: 1657: 1651: 1142:
for some definition of "sum". For example, over integers or reals, it may be defined as
3552: 3530: 3355: 3279: 3175: 2997: 2987: 2895: 2171: 2012: 1939: 1884: 1698: 1646: 1598: 1556: 1244: 320: 300: 208: 2642: 1384:
The Boolean set operations can be implemented in terms of more elementary operations (
3622: 3525: 3422: 3407: 3097: 2285: 1440:) that are optimized for one or more of these operations, at the expense of others. 3054: 3029: 2398: 1963: 1735:
module, which implements a functional set data structure using binary search trees.
290: 189:
is a special kind of set in which an element can appear multiple times in the set.
17: 1470: 3520: 3445: 3232: 3227: 3077: 3024: 2851: 2503:(1) time by simply inserting at an end, but if one avoids duplicates this takes 1996: 1564: 1560: 1474:
template class, which is typically implemented using a binary search tree (e.g.
1288: 642: 198: 149: 35: 1255:. Implementations described as "general use" typically strive to optimize the 3508: 3412: 3137: 3132: 3049: 3017: 2922: 2865: 2591: 1918: 1776: 1552: 1307: 1081: 153: 2563: 3450: 3397: 3212: 3190: 3147: 3142: 2809: 2765: 2724: 2030: 1670: 1378: 1374: 1299: 782:: creates a new set structure, initially empty but capable of holding up to 3547: 2309:
keyword can be used to transform a subquery into a collection expression:
2225:: returns a bag containing just those values that occur in either the bag 1127:
Other operations can be defined for sets with elements of a special type:
3493: 3321: 3127: 2576: 1851: 1844: 1377:, which also support very efficient union and intersection operations. A 753: 659: 185: 145: 2656: 1922: 1487: 3542: 3488: 1806: 1800: 748:: creates a new set structure containing all the elements of the given 1793: 1452:; many languages now include it, whether in the core language or in a 925:: returns the set of distinct values resulting from applying function 3537: 3478: 1759: 573: 294: 2562:: Retrieve an arbitrary element from a set without removing it; see 1803:
has literal syntax for hashed sets, and also implements sorted sets.
1436:. Moreover, there are specialized set data structures (such as the 2559: 1461: 1298:) – in this case in which the value of each key-value pair has the 3248: 1752:
module, which implements immutable sets using binary search trees.
1728: 589:
Typical operations that may be provided by a static set structure
443: 180:, allow also the insertion and deletion of elements from the set. 3559: 2745: 1785:
as a standard built-in object with the ECMAScript 2015 standard.
1318: 1284: 1036:
must be associative and commutative for this to be well-defined.
205:(characteristic function): accordingly, a set of values of type 3252: 2697: 2674:"ECMAScript 2015 Language Specification – ECMA-262 6th Edition" 1895:
implements both sorted and unsorted multisets. It provides the
1306:
for sorted sets (which has O(log n) for most operations), or a
2740: 2302: 2291: 1756: 29: 2693: 446:
imposed on the standard operations. For example, an abstract
2177:, returns a bag which contains the same elements as the bag 261: 1486:
template class, which implements a set using a hash table.
425: 1936:, third-party libraries provide multiset functionality: 2610:
ed. Egidio Astesiano, Gianna Reggio, Andrzej Tarlecki,
1863:
and are simply counted, or equal values are considered
2431:
can be implemented on a derived class of the built-in
1160:: given a set of sets, return the union. For example, 458:
operation that returns the element of smallest value.
407: 379: 1849:
A generalization of the notion of a set is that of a
346: 323: 303: 258: 231: 211: 144:
that can store unique values, without any particular
1929:
class, which was copied and eventually standardized.
668:: returns a function that returns one more value of 3575: 3469: 3431: 3388: 3307: 3286: 3156: 3065: 2951: 2921: 2886: 2774: 2731: 1537:class implementing it using a hash table), and the 60:. Unsourced material may be challenged and removed. 1549:class implementing it using a binary search tree). 1448:One of the earliest languages to support sets was 431: 329: 309: 277: 244: 217: 2197:times in the resulting bag; sometimes denoted as 1267:operations. A simple implementation is to use a 950:: returns the subset containing all elements of 772:: creates a new, initially empty set structure. 2140:: returns the number of times that the element 1809:has native support for sets, from version 2019. 1543:sub-interface to support sorted sets (with the 1913:class for the unsorted multiset, as a kind of 3264: 2709: 8: 1901:class for the sorted multiset, as a kind of 1365:. In particular a subset of the integers 1.. 896:can be interpreted as the pair of selectors 842:: returns the maximum number of values that 682:: returns a list containing the elements of 27:Abstract data type for storing unique values 1952:interfaces, with implementing classes like 201:, sets are generally identified with their 3271: 3257: 3249: 2716: 2702: 2694: 2239:, except that the number of times a value 1972:interface, with implementing classes like 1921:. The unsorted multiset is standard as of 1408:will take time proportional to the length 752:or all the elements returned by the given 285:. (Subtypes and subsets may be modeled by 163:Some set data structures are designed for 2243:occurs in the resulting bag is equal to ( 2091:: checks whether each element in the bag 1917:, which implements this multiset using a 1905:, which implements this multiset using a 1302:or a sentinel value (like 1) – namely, a 1230:: returns the minimum/maximum element of 568:: a predicate that tests whether the set 406: 378: 362: 345: 322: 302: 260: 259: 257: 236: 230: 210: 148:. It is a computer implementation of the 120:Learn how and when to remove this message 2340:is a general select that can be used as 2181:, except that every element that occurs 2105:no more often than it occurs in the bag 1428:will do the job in time proportional to 450:can be viewed as a set structure with a 2524: 2420: 2068:is present (at least once) in the bag 1504:standard library provides the generic 1243:Sets can be implemented using various 765:Dynamic set structures typically add: 715:: creates a set structure with values 672:at each call, in some arbitrary order. 2346:of another more general query, while 1369:can be implemented efficiently as an 1138:: returns the sum of all elements of 471:One may define the operations of the 7: 1925:; previously SGI's STL provides the 1162:collapse({{1}, {2, 3}}) == {1, 2, 3} 651:: returns the number of elements in 58:adding citations to reliable sources 1661:classes that implement the generic 1634:; empty sets must be created using 2546:ed. Kai v. Luck, Heinz Marburger, 1642:to represent the empty dictionary. 888:: returns an arbitrary element of 870:: returns an arbitrary element of 25: 2499:Element insertion can be done in 2027:, which is similar to a multiset. 1907:self-balancing binary search tree 1304:self-balancing binary search tree 1184:flatten({1, {2, 3}}) == {1, 2, 3} 278:{\displaystyle {\mathcal {P}}(A)} 34: 2659:Efficient sets: a balancing act 2383:transforms the subquery into a 1915:unordered associative container 1731:'s standard library contains a 1711:'s standard library includes a 810:, if it is not present already. 467:Core set-theoretical operations 297:.) The characteristic function 45:needs additional citations for 1361:Other popular methods include 1164:. May be considered a kind of 356: 350: 272: 266: 1: 3372: 2782:Arbitrary-precision or bignum 2064:: checks whether the element 69:"Set" abstract data type 2049:Typical operations on bags: 1769:standard library contains a 1204:that is closest in value to 892:. Functionally, the mutator 3595:Directed acyclic word graph 3361:Double-ended priority queue 2257:# x); sometimes denoted as 1824:Ada.Containers.Ordered_Sets 1424:; whereas a variant of the 608:: checks whether the value 3655: 2678:www.ecma-international.org 2594:, Springer, Aug 21, 2003, 2579:: Add Set#pick and Set#pop 2021:standard library includes 1842: 1818:Ada.Containers.Hashed_Sets 1791:'s standard library has a 1673:'s class library includes 1531:to support sets (with the 1029:for some binary operation 3603: 3123:Strongly typed identifier 1942:Collections provides the 1893:Standard Template Library 1482:'s STL also provides the 1466:Standard Template Library 1438:union-find data structure 1200:: returns the element of 1046:: delete all elements of 626:: checks whether the set 3327:Retrieval Data Structure 2638:Sorted Linear Hash Table 2436: 2348: 2311: 1323: 686:in some arbitrary order. 3608:List of data structures 3585:Binary decision diagram 3198:Parametric polymorphism 2566:regarding standard name 2427:For example, in Python 2148:; sometimes denoted as 2112:; sometimes denoted as 3590:Directed acyclic graph 1773:type, since Swift 1.2. 1717:module which contains 1638:, because Python uses 1426:list merging algorithm 824:: removes the element 433: 331: 311: 279: 246: 219: 2635:Wang, Thomas (1997), 2386:collection expression 1903:associative container 1649:provides the generic 954:that satisfy a given 855:Additional operations 776:create_with_capacity( 434: 332: 312: 280: 247: 245:{\displaystyle 2^{A}} 220: 3634:Composite data types 3456:Unrolled linked list 2282:relational databases 1873:equivalence relation 1557:Foundation framework 1490:has support for the 985:: returns the value 344: 321: 301: 256: 229: 209: 156:. Unlike most other 54:improve this article 3639:Abstract data types 3504:Self-balancing tree 3203:Primitive data type 3108:Recursive data type 2961:Algebraic data type 2837:Quadruple precision 2343:subquery expression 2024:collections.Counter 1989:Apple provides the 1594:NSMutableOrderedSet 1468:(STL) provides the 1084:for the static set 929:to each element of 874:, deleting it from 832:, if it is present. 802:: adds the element 293:may be replaced by 3484:Binary search tree 3349:Double-ended queue 3166:Abstract data type 2847:Extended precision 2806:Reduced precision 2144:occurs in the bag 1911:unordered_multiset 1909:. It provides the 1833:associative arrays 1742:implementation of 1296:associative arrays 429: 424: 411: 383: 327: 307: 275: 242: 225:may be denoted by 215: 203:indicator function 142:abstract data type 18:Set data structure 3616: 3615: 3418:Hashed array tree 3317:Associative array 3246: 3245: 2978:Associative array 2842:Octuple precision 2409:Set (mathematics) 2044:associative array 2011:types as part of 1995:class as part of 1689:), for ordering ( 1609:types for use in 1601:APIs provide the 1416:times the length 1315:programming idiom 1021:for each element 410: 382: 330:{\displaystyle S} 310:{\displaystyle F} 218:{\displaystyle A} 130: 129: 122: 104: 16:(Redirected from 3646: 3441:Association list 3273: 3266: 3259: 3250: 3218:Type constructor 3103:Opaque data type 3035:Record or Struct 2832:Double precision 2827:Single precision 2718: 2711: 2704: 2695: 2688: 2687: 2685: 2684: 2670: 2664: 2653: 2647: 2646: 2641:, archived from 2632: 2626: 2620: 2614: 2604: 2598: 2586: 2580: 2573: 2567: 2556: 2550: 2541: 2535: 2529: 2512: 2497: 2491: 2488: 2485: 2482: 2479: 2476: 2473: 2470: 2467: 2464: 2461: 2458: 2455: 2452: 2449: 2446: 2443: 2440: 2434: 2430: 2425: 2379: 2376: 2373: 2370: 2367: 2364: 2361: 2358: 2355: 2352: 2336: 2333: 2330: 2327: 2324: 2321: 2318: 2315: 2308: 2297: 2276:Multisets in SQL 2224: 2169: 2139: 2090: 2063: 2036: 2026: 2010: 2004: 1994: 1983: 1977: 1971: 1959: 1955: 1951: 1947: 1928: 1912: 1900: 1826: 1820: 1796: 1784: 1772: 1751: 1734: 1724: 1720: 1716: 1704: 1696: 1692: 1688: 1684: 1680: 1676: 1666: 1660: 1654: 1641: 1637: 1633: 1627: 1623: 1596: 1590: 1584: 1578: 1572: 1548: 1542: 1536: 1527: 1515: 1509: 1495: 1485: 1473: 1454:standard library 1444:Language support 1407: 1395: 1391: 1387: 1357: 1354: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1266: 1262: 1258: 1254: 1250: 1229: 1221: 1199: 1185: 1181: 1177: 1167: 1163: 1159: 1149: 1137: 1123: 1105: 1079: 1069: 1045: 1020: 984: 949: 924: 907: 903: 899: 895: 887: 869: 841: 823: 801: 781: 771: 747: 714: 681: 667: 650: 639: 625: 607: 567: 541: 515: 489: 457: 438: 436: 435: 430: 428: 427: 412: 408: 384: 380: 336: 334: 333: 328: 316: 314: 313: 308: 287:refinement types 284: 282: 281: 276: 265: 264: 251: 249: 248: 243: 241: 240: 224: 222: 221: 216: 134:computer science 125: 118: 114: 111: 105: 103: 62: 38: 30: 21: 3654: 3653: 3649: 3648: 3647: 3645: 3644: 3643: 3619: 3618: 3617: 3612: 3599: 3571: 3465: 3461:XOR linked list 3427: 3403:Circular buffer 3384: 3303: 3282: 3280:Data structures 3277: 3247: 3242: 3223:Type conversion 3158: 3152: 3088:Enumerated type 3061: 2947: 2941:null-terminated 2917: 2882: 2770: 2727: 2722: 2692: 2691: 2682: 2680: 2672: 2671: 2667: 2655:Stephen Adams, 2654: 2650: 2634: 2633: 2629: 2621: 2617: 2605: 2601: 2587: 2583: 2574: 2570: 2557: 2553: 2542: 2538: 2530: 2526: 2521: 2516: 2515: 2498: 2494: 2490: 2489: 2486: 2483: 2480: 2477: 2474: 2471: 2468: 2465: 2462: 2459: 2456: 2453: 2450: 2447: 2444: 2441: 2438: 2432: 2428: 2426: 2422: 2417: 2395: 2381: 2380: 2377: 2374: 2371: 2368: 2365: 2362: 2359: 2356: 2353: 2350: 2338: 2337: 2334: 2331: 2328: 2325: 2322: 2319: 2316: 2313: 2306: 2295: 2278: 2270: 2263: 2256: 2249: 2238: 2231: 2222: 2215: 2208: 2159: 2129: 2125: 2118: 2111: 2104: 2097: 2088: 2081: 2074: 2053: 2034: 2022: 2006: 2000: 1990: 1979: 1973: 1967: 1957: 1953: 1949: 1943: 1926: 1910: 1896: 1885:natural numbers 1847: 1841: 1822: 1816: 1792: 1780: 1770: 1747: 1732: 1722: 1718: 1712: 1703:WeakIdentitySet 1702: 1699:weak references 1697:, etc.) or for 1694: 1690: 1686: 1682: 1678: 1674: 1662: 1656: 1650: 1639: 1635: 1631: 1625: 1621: 1592: 1586: 1580: 1574: 1568: 1563:) provides the 1544: 1538: 1532: 1523: 1511: 1505: 1491: 1483: 1469: 1446: 1397: 1393: 1389: 1385: 1359: 1358: 1355: 1352: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1264: 1260: 1256: 1252: 1248: 1245:data structures 1241: 1239:Implementations 1223: 1215: 1189: 1183: 1179: 1171: 1165: 1161: 1153: 1143: 1131: 1120: 1113: 1107: 1103: 1096: 1089: 1073: 1067: 1060: 1053: 1039: 1013: 1003: 997: 996:after applying 995: 974: 964: 936: 911: 905: 901: 897: 893: 881: 863: 857: 835: 813: 791: 775: 769: 763: 741: 737: 728: 721: 712: 703: 696: 689: 675: 658: 641: 633: 619: 597: 587: 557: 531: 505: 479: 473:algebra of sets 469: 464: 451: 423: 422: 404: 395: 394: 376: 363: 342: 341: 337:is defined as: 319: 318: 299: 298: 254: 253: 232: 227: 226: 207: 206: 195: 126: 115: 109: 106: 63: 61: 51: 39: 28: 23: 22: 15: 12: 11: 5: 3652: 3650: 3642: 3641: 3636: 3631: 3621: 3620: 3614: 3613: 3611: 3610: 3604: 3601: 3600: 3598: 3597: 3592: 3587: 3581: 3579: 3573: 3572: 3570: 3569: 3568: 3567: 3557: 3556: 3555: 3553:Hilbert R-tree 3550: 3545: 3535: 3534: 3533: 3531:Fibonacci heap 3528: 3523: 3513: 3512: 3511: 3506: 3501: 3499:Red–black tree 3496: 3491: 3481: 3475: 3473: 3467: 3466: 3464: 3463: 3458: 3453: 3448: 3443: 3437: 3435: 3429: 3428: 3426: 3425: 3420: 3415: 3410: 3405: 3400: 3394: 3392: 3386: 3385: 3383: 3382: 3381: 3380: 3375: 3365: 3364: 3363: 3356:Priority queue 3353: 3352: 3351: 3341: 3336: 3331: 3330: 3329: 3324: 3313: 3311: 3305: 3304: 3302: 3301: 3296: 3290: 3288: 3284: 3283: 3278: 3276: 3275: 3268: 3261: 3253: 3244: 3243: 3241: 3240: 3235: 3230: 3225: 3220: 3215: 3210: 3205: 3200: 3195: 3194: 3193: 3183: 3178: 3176:Data structure 3173: 3168: 3162: 3160: 3154: 3153: 3151: 3150: 3145: 3140: 3135: 3130: 3125: 3120: 3115: 3110: 3105: 3100: 3095: 3090: 3085: 3080: 3075: 3069: 3067: 3063: 3062: 3060: 3059: 3058: 3057: 3047: 3042: 3037: 3032: 3027: 3022: 3021: 3020: 3010: 3005: 3000: 2995: 2990: 2985: 2980: 2975: 2970: 2969: 2968: 2957: 2955: 2949: 2948: 2946: 2945: 2944: 2943: 2933: 2927: 2925: 2919: 2918: 2916: 2915: 2910: 2909: 2908: 2903: 2892: 2890: 2884: 2883: 2881: 2880: 2875: 2870: 2869: 2868: 2858: 2857: 2856: 2855: 2854: 2844: 2839: 2834: 2829: 2824: 2823: 2822: 2817: 2815:Half precision 2812: 2802:Floating point 2799: 2794: 2789: 2784: 2778: 2776: 2772: 2771: 2769: 2768: 2763: 2758: 2753: 2748: 2743: 2737: 2735: 2729: 2728: 2723: 2721: 2720: 2713: 2706: 2698: 2690: 2689: 2665: 2648: 2627: 2615: 2599: 2581: 2568: 2551: 2536: 2523: 2522: 2520: 2517: 2514: 2513: 2492: 2437: 2419: 2418: 2416: 2413: 2412: 2411: 2406: 2401: 2394: 2391: 2349: 2312: 2277: 2274: 2273: 2272: 2268: 2261: 2254: 2247: 2236: 2229: 2220: 2213: 2206: 2172:natural number 2157: 2127: 2123: 2116: 2109: 2102: 2095: 2086: 2079: 2072: 2039: 2038: 2028: 2016: 2013:CoreFoundation 1987: 1986: 1985: 1961: 1940:Apache Commons 1930: 1843:Main article: 1840: 1837: 1829: 1828: 1810: 1804: 1798: 1786: 1774: 1763: 1753: 1736: 1726: 1706: 1668: 1647:.NET Framework 1643: 1614: 1599:CoreFoundation 1550: 1517: 1498: 1476:red–black tree 1445: 1442: 1324: 1240: 1237: 1236: 1235: 1213: 1187: 1169: 1151: 1125: 1124: 1118: 1111: 1101: 1094: 1071: 1065: 1058: 1051: 1037: 1011: 1001: 989: 972: 962: 934: 909: 879: 856: 853: 848: 847: 833: 811: 789: 788: 787: 762: 759: 758: 757: 739: 733: 726: 719: 708: 701: 694: 687: 673: 656: 631: 617: 612:is in the set 598:is_element_of( 586: 583: 582: 581: 555: 542:: returns the 529: 516:: returns the 503: 490:: returns the 468: 465: 463: 460: 440: 439: 426: 421: 418: 415: 405: 403: 400: 397: 396: 393: 390: 387: 377: 375: 372: 369: 368: 366: 361: 358: 355: 352: 349: 326: 306: 274: 271: 268: 263: 239: 235: 214: 194: 191: 128: 127: 42: 40: 33: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 3651: 3640: 3637: 3635: 3632: 3630: 3627: 3626: 3624: 3609: 3606: 3605: 3602: 3596: 3593: 3591: 3588: 3586: 3583: 3582: 3580: 3578: 3574: 3566: 3563: 3562: 3561: 3558: 3554: 3551: 3549: 3546: 3544: 3541: 3540: 3539: 3536: 3532: 3529: 3527: 3526:Binomial heap 3524: 3522: 3519: 3518: 3517: 3514: 3510: 3507: 3505: 3502: 3500: 3497: 3495: 3492: 3490: 3487: 3486: 3485: 3482: 3480: 3477: 3476: 3474: 3472: 3468: 3462: 3459: 3457: 3454: 3452: 3449: 3447: 3444: 3442: 3439: 3438: 3436: 3434: 3430: 3424: 3423:Sparse matrix 3421: 3419: 3416: 3414: 3411: 3409: 3408:Dynamic array 3406: 3404: 3401: 3399: 3396: 3395: 3393: 3391: 3387: 3379: 3376: 3374: 3371: 3370: 3369: 3366: 3362: 3359: 3358: 3357: 3354: 3350: 3347: 3346: 3345: 3342: 3340: 3337: 3335: 3332: 3328: 3325: 3323: 3320: 3319: 3318: 3315: 3314: 3312: 3310: 3306: 3300: 3297: 3295: 3292: 3291: 3289: 3285: 3281: 3274: 3269: 3267: 3262: 3260: 3255: 3254: 3251: 3239: 3236: 3234: 3231: 3229: 3226: 3224: 3221: 3219: 3216: 3214: 3211: 3209: 3206: 3204: 3201: 3199: 3196: 3192: 3189: 3188: 3187: 3184: 3182: 3179: 3177: 3174: 3172: 3169: 3167: 3164: 3163: 3161: 3155: 3149: 3146: 3144: 3141: 3139: 3136: 3134: 3131: 3129: 3126: 3124: 3121: 3119: 3116: 3114: 3111: 3109: 3106: 3104: 3101: 3099: 3098:Function type 3096: 3094: 3091: 3089: 3086: 3084: 3081: 3079: 3076: 3074: 3071: 3070: 3068: 3064: 3056: 3053: 3052: 3051: 3048: 3046: 3043: 3041: 3038: 3036: 3033: 3031: 3028: 3026: 3023: 3019: 3016: 3015: 3014: 3011: 3009: 3006: 3004: 3001: 2999: 2996: 2994: 2991: 2989: 2986: 2984: 2981: 2979: 2976: 2974: 2971: 2967: 2964: 2963: 2962: 2959: 2958: 2956: 2954: 2950: 2942: 2939: 2938: 2937: 2934: 2932: 2929: 2928: 2926: 2924: 2920: 2914: 2911: 2907: 2904: 2902: 2899: 2898: 2897: 2894: 2893: 2891: 2889: 2885: 2879: 2876: 2874: 2871: 2867: 2864: 2863: 2862: 2859: 2853: 2850: 2849: 2848: 2845: 2843: 2840: 2838: 2835: 2833: 2830: 2828: 2825: 2821: 2818: 2816: 2813: 2811: 2808: 2807: 2805: 2804: 2803: 2800: 2798: 2795: 2793: 2790: 2788: 2785: 2783: 2780: 2779: 2777: 2773: 2767: 2764: 2762: 2759: 2757: 2754: 2752: 2749: 2747: 2744: 2742: 2739: 2738: 2736: 2734: 2733:Uninterpreted 2730: 2726: 2719: 2714: 2712: 2707: 2705: 2700: 2699: 2696: 2679: 2675: 2669: 2666: 2662: 2660: 2652: 2649: 2645:on 2006-01-12 2644: 2640: 2639: 2631: 2628: 2625: 2619: 2616: 2613: 2609: 2603: 2600: 2597: 2593: 2590: 2585: 2582: 2578: 2577:Feature #4553 2572: 2569: 2565: 2561: 2555: 2552: 2549: 2545: 2540: 2537: 2534: 2528: 2525: 2518: 2510: 2506: 2502: 2496: 2493: 2424: 2421: 2414: 2410: 2407: 2405: 2402: 2400: 2397: 2396: 2392: 2390: 2388: 2387: 2347: 2345: 2344: 2310: 2304: 2299: 2293: 2289: 2287: 2286:candidate key 2283: 2275: 2267: 2260: 2253: 2246: 2242: 2235: 2228: 2219: 2212: 2207: 2204: 2200: 2196: 2192: 2188: 2184: 2180: 2176: 2173: 2167: 2163: 2158: 2155: 2151: 2147: 2143: 2137: 2133: 2128: 2122: 2115: 2108: 2101: 2094: 2085: 2078: 2073: 2071: 2067: 2061: 2057: 2052: 2051: 2050: 2047: 2045: 2033:includes the 2032: 2029: 2025: 2020: 2017: 2014: 2009: 2003: 1998: 1993: 1988: 1982: 1976: 1970: 1966:provides the 1965: 1962: 1946: 1941: 1938: 1937: 1935: 1931: 1927:hash_multiset 1924: 1920: 1916: 1908: 1904: 1899: 1894: 1890: 1889: 1888: 1886: 1880: 1877: 1874: 1869: 1866: 1862: 1858: 1854: 1853: 1846: 1838: 1836: 1834: 1825: 1819: 1815:provides the 1814: 1811: 1808: 1805: 1802: 1799: 1795: 1790: 1787: 1783: 1778: 1775: 1768: 1764: 1761: 1758: 1754: 1750: 1745: 1741: 1737: 1730: 1727: 1715: 1710: 1707: 1700: 1672: 1669: 1665: 1659: 1653: 1648: 1644: 1629: 1619:has built-in 1618: 1615: 1612: 1608: 1604: 1600: 1595: 1589: 1583: 1577: 1571: 1566: 1562: 1558: 1554: 1551: 1547: 1541: 1535: 1530: 1526: 1521: 1518: 1514: 1508: 1503: 1499: 1494: 1493:unordered_set 1489: 1481: 1477: 1472: 1467: 1463: 1459: 1458: 1457: 1455: 1451: 1443: 1441: 1439: 1435: 1431: 1427: 1423: 1419: 1415: 1411: 1405: 1401: 1382: 1380: 1376: 1372: 1368: 1364: 1322: 1320: 1316: 1311: 1309: 1305: 1301: 1297: 1292: 1290: 1286: 1282: 1278: 1274: 1270: 1246: 1238: 1233: 1227: 1219: 1214: 1211: 1207: 1203: 1197: 1193: 1188: 1175: 1170: 1157: 1152: 1147: 1144:fold(0, add, 1141: 1135: 1130: 1129: 1128: 1121: 1114: 1100: 1093: 1088:such that if 1087: 1083: 1077: 1072: 1064: 1057: 1052: 1049: 1043: 1038: 1035: 1032: 1028: 1024: 1018: 1014: 1007: 1000: 993: 988: 982: 978: 971: 967: 963: 960: 957: 953: 947: 943: 939: 935: 932: 928: 922: 918: 914: 910: 898:(pick, rest), 891: 885: 880: 877: 873: 867: 862: 861: 860: 854: 852: 845: 839: 834: 831: 827: 821: 817: 812: 809: 805: 799: 795: 790: 785: 779: 774: 773: 768: 767: 766: 760: 755: 751: 745: 740: 736: 732: 725: 718: 711: 707: 700: 693: 688: 685: 679: 674: 671: 665: 661: 657: 654: 648: 644: 637: 632: 629: 623: 618: 615: 611: 605: 601: 596: 595: 594: 592: 584: 579: 575: 571: 565: 561: 556: 553: 549: 545: 539: 535: 530: 527: 523: 519: 513: 509: 506:intersection( 504: 501: 497: 493: 487: 483: 478: 477: 476: 474: 466: 461: 459: 455: 449: 445: 419: 416: 413: 401: 398: 391: 388: 385: 373: 370: 364: 359: 353: 347: 340: 339: 338: 324: 304: 296: 292: 291:quotient sets 288: 269: 237: 233: 212: 204: 200: 192: 190: 188: 187: 181: 179: 175: 170: 166: 161: 159: 155: 152:concept of a 151: 147: 143: 139: 135: 124: 121: 113: 102: 99: 95: 92: 88: 85: 81: 78: 74: 71: –  70: 66: 65:Find sources: 59: 55: 49: 48: 43:This article 41: 37: 32: 31: 19: 3378:Disjoint-set 3367: 3044: 3003:Intersection 2681:. Retrieved 2677: 2668: 2658: 2651: 2643:the original 2637: 2630: 2618: 2606: 2602: 2588: 2584: 2571: 2554: 2543: 2539: 2527: 2508: 2504: 2500: 2495: 2435:as follows: 2423: 2404:Disjoint set 2399:Bloom filter 2384: 2382: 2341: 2339: 2300: 2290: 2279: 2265: 2258: 2251: 2244: 2240: 2233: 2226: 2217: 2210: 2202: 2198: 2194: 2190: 2186: 2182: 2178: 2174: 2165: 2161: 2153: 2149: 2145: 2141: 2135: 2131: 2120: 2113: 2106: 2099: 2092: 2083: 2076: 2069: 2065: 2059: 2055: 2048: 2040: 2008:CFMutableBag 1992:NSCountedSet 1981:TreeMultiset 1975:HashMultiset 1964:Google Guava 1881: 1878: 1870: 1864: 1860: 1856: 1850: 1848: 1830: 1687:CharacterSet 1607:CFMutableSet 1588:NSOrderedSet 1582:NSCountedSet 1576:NSMutableSet 1447: 1433: 1429: 1421: 1417: 1413: 1409: 1403: 1399: 1383: 1370: 1366: 1360: 1312: 1293: 1276: 1272: 1242: 1231: 1225: 1217: 1205: 1201: 1195: 1191: 1173: 1155: 1145: 1139: 1133: 1126: 1116: 1109: 1098: 1091: 1085: 1080:: returns a 1075: 1062: 1055: 1047: 1041: 1033: 1030: 1026: 1022: 1016: 1009: 1005: 998: 991: 986: 980: 976: 969: 958: 951: 945: 941: 930: 926: 920: 916: 889: 883: 875: 871: 865: 858: 849: 843: 837: 829: 825: 819: 815: 807: 803: 797: 793: 783: 777: 764: 761:Dynamic sets 743: 742:create_from( 734: 730: 723: 716: 709: 705: 698: 691: 683: 677: 669: 663: 652: 646: 635: 627: 621: 613: 609: 603: 599: 590: 588: 577: 569: 563: 559: 551: 547: 537: 533: 525: 521: 518:intersection 511: 507: 499: 495: 485: 481: 470: 453: 441: 196: 184: 182: 178:mutable sets 177: 173: 168: 164: 162: 150:mathematical 137: 131: 116: 110:October 2011 107: 97: 90: 83: 76: 64: 52:Please help 47:verification 44: 3521:Binary heap 3446:Linked list 3233:Type theory 3228:Type system 3078:Bottom type 3025:Option type 2966:generalized 2852:Long double 2797:Fixed point 2366:expression2 2360:expression1 2323:expression2 2317:expression1 2232:or the bag 2075:is_sub_bag( 1865:equivalent, 1779:introduced 1746:provides a 1679:IdentitySet 1565:Objective-C 1522:offers the 1289:hash tables 643:cardinality 585:Static sets 532:difference( 199:type theory 193:Type theory 169:frozen sets 3629:Data types 3623:Categories 3509:Splay tree 3413:Hash table 3294:Collection 3138:Empty type 3133:Type class 3083:Collection 3040:Refinement 3018:metaobject 2866:signedness 2725:Data types 2683:2017-07-11 2592:Ute Schmid 2519:References 2375:table_name 2332:table_name 2170:: given a 2160:scaled_by( 2098:occurs in 1999:, and the 1919:hash table 1861:identical, 1777:JavaScript 1691:OrderedSet 1667:interface. 1308:hash table 1257:element_of 1082:hash value 750:collection 744:collection 676:enumerate( 544:difference 462:Operations 158:collection 154:finite set 80:newspapers 3565:Hash tree 3451:Skip list 3398:Bit array 3299:Container 3213:Subtyping 3208:Interface 3191:metaclass 3143:Unit type 3113:Semaphore 3093:Exception 2998:Inductive 2988:Dependent 2953:Composite 2931:Character 2913:Reference 2810:Minifloat 2766:Bit array 2624:flatten() 2564:msg106593 2560:Issue7212 2185:times in 2054:contains( 2031:Smalltalk 1950:SortedBag 1876:element. 1827:packages. 1723:SortedSet 1695:SortedSet 1683:NumberSet 1671:Smalltalk 1658:SortedSet 1632:{x, y, z} 1626:frozenset 1559:(part of 1540:SortedSet 1529:interface 1497:ordering. 1379:Bloom map 1375:bit array 1353:@elements 1329:%elements 1300:unit type 1208:(by some 1180:collapse, 1154:collapse( 1115:) = hash( 1004: := 956:predicate 846:can hold. 836:capacity( 786:elements. 630:is empty. 620:is_empty( 520:of sets 389:∈ 317:of a set 3494:AVL tree 3373:Multiset 3322:Multimap 3309:Abstract 3238:Variable 3128:Top type 2993:Equality 2901:physical 2878:Rational 2873:Interval 2820:bfloat16 2531:Python: 2393:See also 2351:MULTISET 2307:MULTISET 2303:ANSI SQL 2296:DISTINCT 2250:# x) + ( 2019:Python's 1969:Multiset 1898:multiset 1852:multiset 1845:Multiset 1839:Multiset 1749:Data.Set 1567:classes 1513:BTreeSet 1484:hash_set 1190:nearest( 1172:flatten( 770:create() 754:iterator 546:of sets 494:of sets 417:∉ 409:if  381:if  186:multiset 3548:R+ tree 3543:R* tree 3489:AA tree 3181:Generic 3157:Related 3073:Boolean 3030:Product 2906:virtual 2896:Address 2888:Pointer 2861:Integer 2792:Decimal 2787:Complex 2775:Numeric 2558:Python 2511:) time. 2189:occurs 1958:TreeBag 1954:HashBag 1807:LabVIEW 1801:Clojure 1797:module. 1744:Haskell 1652:HashSet 1546:TreeSet 1534:HashSet 1507:HashSet 1249:nearest 906:iterate 814:remove( 660:iterate 576:of set 558:subset( 295:setoids 174:dynamic 94:scholar 3577:Graphs 3538:R-tree 3479:B-tree 3433:Linked 3390:Arrays 3171:Boxing 3159:topics 3118:Stream 3055:tagged 3013:Object 2936:String 2622:Ruby: 2596:p. 240 2469:return 2357:SELECT 2314:SELECT 2209:union( 2130:count( 1891:C++'s 1789:Erlang 1760:Tcllib 1617:Python 1597:. The 1591:, and 1516:types. 1464:, the 1450:Pascal 1398:union( 1392:, and 1363:arrays 1265:delete 1263:, and 1210:metric 1090:equal( 1054:equal( 1040:clear( 938:filter 900:where 690:build( 574:subset 480:union( 444:axioms 289:, and 165:static 140:is an 96:  89:  82:  75:  67:  3471:Trees 3344:Queue 3339:Stack 3287:Types 3066:Other 3050:Union 2983:Class 2973:Array 2756:Tryte 2612:p. 38 2575:Ruby 2548:p. 76 2533:pop() 2439:class 2415:Notes 2002:CFBag 1997:Cocoa 1923:C++11 1767:Swift 1729:OCaml 1636:set() 1628:types 1603:CFSet 1570:NSSet 1561:Cocoa 1553:Apple 1488:C++11 1390:clear 1373:-bit 1344:=> 1287:, or 1285:tries 1281:trees 1253:union 1108:hash( 1106:then 1074:hash( 882:pick( 828:from 729:,..., 634:size( 593:are: 572:is a 492:union 146:order 101:JSTOR 87:books 3560:Trie 3516:Heap 3334:List 3186:Kind 3148:Void 3008:List 2923:Text 2761:Word 2751:Trit 2746:Byte 2484:self 2478:iter 2472:next 2463:self 2457:pick 2429:pick 2378:...) 2372:FROM 2329:FROM 2305:the 2005:and 1978:and 1956:and 1948:and 1934:Java 1932:For 1821:and 1794:sets 1765:The 1755:The 1738:The 1721:and 1709:Ruby 1677:and 1664:ISet 1655:and 1645:The 1624:and 1605:and 1520:Java 1510:and 1502:Rust 1500:The 1319:Perl 1269:list 1224:max( 1216:min( 1132:sum( 966:fold 902:rest 864:pop( 792:add( 550:and 524:and 498:and 452:min( 448:heap 136:, a 73:news 3368:Set 3045:Set 2741:Bit 2608:10, 2454:def 2448:set 2442:Set 2433:set 2369:... 2335:... 2326:... 2301:In 2292:SQL 2288:). 2280:In 2035:Bag 1945:Bag 1857:bag 1855:or 1813:Ada 1782:Set 1771:Set 1757:Tcl 1740:GHC 1733:Set 1719:Set 1714:set 1675:Set 1622:set 1555:'s 1525:Set 1480:SGI 1478:); 1471:set 1462:C++ 1460:In 1420:of 1412:of 1394:add 1386:pop 1341:$ _ 1335:map 1317:in 1261:add 1251:or 1166:sum 1061:', 1025:of 1002:i+1 913:map 894:pop 806:to 704:,…, 640:or 252:or 197:In 176:or 167:or 138:set 132:In 56:by 3625:: 2676:. 2487:)) 2466:): 2451:): 2264:⊎ 2216:, 2201:⊗ 2193:* 2164:, 2152:# 2134:, 2119:⊑ 2082:, 2058:, 1705:). 1693:, 1685:, 1640:{} 1585:, 1579:, 1573:, 1456:. 1388:, 1326:my 1291:. 1283:, 1259:, 1222:, 1212:). 1097:, 1068:') 1031:F. 1027:S, 1015:, 818:, 713:,) 475:: 183:A 3272:e 3265:t 3258:v 2717:e 2710:t 2703:v 2686:. 2661:" 2657:" 2509:n 2507:( 2505:O 2501:O 2481:( 2475:( 2460:( 2445:( 2363:, 2354:( 2320:, 2271:. 2269:2 2266:B 2262:1 2259:B 2255:2 2252:B 2248:1 2245:B 2241:x 2237:2 2234:B 2230:1 2227:B 2223:) 2221:2 2218:B 2214:1 2211:B 2205:. 2203:B 2199:n 2195:m 2191:n 2187:B 2183:m 2179:B 2175:n 2168:) 2166:n 2162:B 2156:. 2154:x 2150:B 2146:B 2142:x 2138:) 2136:x 2132:B 2126:. 2124:2 2121:B 2117:1 2114:B 2110:2 2107:B 2103:1 2100:B 2096:1 2093:B 2089:) 2087:2 2084:B 2080:1 2077:B 2070:B 2066:x 2062:) 2060:x 2056:B 2015:. 1984:. 1960:. 1883:( 1701:( 1613:. 1611:C 1434:n 1432:+ 1430:m 1422:T 1418:n 1414:S 1410:m 1406:) 1404:T 1402:, 1400:S 1371:n 1367:n 1356:; 1350:} 1347:1 1338:{ 1332:= 1277:n 1275:( 1273:O 1234:. 1232:S 1228:) 1226:S 1220:) 1218:S 1206:x 1202:S 1198:) 1196:x 1194:, 1192:S 1186:. 1176:) 1174:S 1168:. 1158:) 1156:S 1150:. 1148:) 1146:S 1140:S 1136:) 1134:S 1122:) 1119:2 1117:S 1112:1 1110:S 1104:) 1102:2 1099:S 1095:1 1092:S 1086:S 1078:) 1076:S 1066:2 1063:S 1059:1 1056:S 1050:. 1048:S 1044:) 1042:S 1034:F 1023:e 1019:) 1017:e 1012:i 1010:A 1008:( 1006:F 999:A 994:| 992:S 990:| 987:A 983:) 981:S 979:, 977:F 975:, 973:0 970:A 968:( 961:. 959:P 952:S 948:) 946:S 944:, 942:P 940:( 933:. 931:S 927:F 923:) 921:S 919:, 917:F 915:( 908:. 890:S 886:) 884:S 878:. 876:S 872:S 868:) 866:S 844:S 840:) 838:S 830:S 826:x 822:) 820:x 816:S 808:S 804:x 800:) 798:x 796:, 794:S 784:n 780:) 778:n 756:. 746:) 738:. 735:n 731:x 727:2 724:x 722:, 720:1 717:x 710:n 706:x 702:2 699:x 697:, 695:1 692:x 684:S 680:) 678:S 670:S 666:) 664:S 662:( 655:. 653:S 649:) 647:S 645:( 638:) 636:S 628:S 624:) 622:S 616:. 614:S 610:x 606:) 604:S 602:, 600:x 591:S 580:. 578:T 570:S 566:) 564:T 562:, 560:S 554:. 552:T 548:S 540:) 538:T 536:, 534:S 528:. 526:T 522:S 514:) 512:T 510:, 508:S 502:. 500:T 496:S 488:) 486:T 484:, 482:S 456:) 454:S 420:S 414:x 402:, 399:0 392:S 386:x 374:, 371:1 365:{ 360:= 357:) 354:x 351:( 348:F 325:S 305:F 273:) 270:A 267:( 262:P 238:A 234:2 213:A 123:) 117:( 112:) 108:( 98:· 91:· 84:· 77:· 50:. 20:)

Index

Set data structure

verification
improve this article
adding citations to reliable sources
"Set" abstract data type
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computer science
abstract data type
order
mathematical
finite set
collection
multiset
type theory
indicator function
refinement types
quotient sets
setoids
axioms
heap
algebra of sets
union
intersection
difference

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.