セットはデータ構造の基本構造であり、数学のセットと完全に一致しています。それでは、数学のセットとは何かを見てみましょう。
1.コレクションとは
コレクションとは、特定の性質を持つ具体的または抽象的なオブジェクトの集合を指します。その中で、セットを構成するこれらのオブジェクトは、セットの要素と呼ばれます。
いくつか例を挙げると、人間をセットとすると、中国人がセットの要素になります。場合は0-100
、コレクションとしての自然数は、0
セット内の要素、表記があり0∈100
、101
コレクションの要素ではない、それがで示されています0∉100
。詳しくは高樹郷(1)の第1章を開いて詳しく見てください。
第二に、コレクションの特徴
このコレクションには、次の3つの特徴があります。
-
確実性:セットが与えられると、任意の要素が与えられ、要素はセットに属しているか属していないか、2つは2つのうちの1つでなければならず、あいまいさは許されません。
-
相互性:セットでは、任意の2つの要素が異なると見なされます。つまり、各要素は1回しか表示できません。同じ要素が複数回出現する状況を特徴づける必要がある場合があり、複数のセットを使用して、要素を複数回出現させることができます。
-
無秩序:セットでは、各要素のステータスは同じであり、要素は無秩序です。セットで順序関係を定義できます。順序関係を定義した後、要素を順序関係に従って並べ替えることができます。しかし、セット自体の特性に関する限り、要素間に必然的な順序はありません。
三、コレクションの種類
1.空のセット
セットに要素が含まれていない場合、それは空のセットと呼ばれ、として記録され∅
ます。
コードは空の配列として表すことができます(理解を容易にするために、以下のPython
例をすべて示して説明します)。
In [1]: data = set()
In [2]: data
Out[2]: set()
2. 子集
一連の場合はA
セットに属するすべての要素B
、そしてA
セットですB
セットのサブセット。
In [3]: data = set({1, 2, 3, 4, 5})
In [4]: data
Out[4]: {1, 2, 3, 4, 5}
In [5]: 1 in data
Out[5]: True
In [6]: 0 in data
Out[6]: False
3.交差点
すべてA
がセットに属し、セットB
は交差の構成と呼ばれる要素のコレクションに属し、で示されA∩B
ます。
In [7]: data = set({1, 2, 3, 4, 5})
In [8]: s = set({2, 4, 6})
In [9]: data & s
Out[9]: {2, 4}
4.ユニオン
で示される、calledとsetで構成される要素のセットのセットのすべてA
または一部のセットに属します。B
A∪B
In [10]: data | s
Out[10]: {1, 2, 3, 4, 5, 6}
5.減算
すべては、で示される差分セットのセットに関して既知のセットで構成される要素A
のセットB
セットに属さないセットに属します。A
B
A-B
In [11]: data - s
Out[11]: {1, 3, 5}
In [12]: s - data
Out[12]: {6}
6.補完
一般あれば、絶対的な補完を補完する意味しA
ているB
サブセット(見上げの概念のサブセット↑
)、B
すべてに属していないA
と呼ばれるコレクションで構成要素の補数。補集合は差分集合の特殊なケースと言えます。A
B
A
それはあるB
のサブセットスーパーセット。B
A
In [13]: s1 = set({2, 4})
In [14]: data - s1
Out[14]: {1, 3, 5}
7.対称差
セットのA
セットB
はA∩B
、コレクションのすべての要素が対称差と呼ばれるわけではありません。A△B
つまり、次のように表されますA△B=(A∪B)-(A∩B)
。
In [13]: data ^ s
Out[13]: {1, 3, 5, 6}
第四に、コレクションのアルゴリズムの実装
上記のコードはPython
、データ収集で使用され、良好な構造が実現されています。この一連のデータ構造が実装されたアルゴリズムについて、私たちの言語に精通しています。
これは本当に簡単なので、ここでは書きません(将来忙しくないときに書くかもしれません)。注意すべき点がいくつかあります。基本的なデータ構造として配列のみを使用します。コレクションの特性とタイプをすべて満たす必要があります。パフォーマンスと効率は当面考慮されません。文字列マッチングアルゴリズムと並べ替えを学習した後アルゴリズムなどが戻ってきて最適化します。