データ構造とアルゴリズム(第3章):セット

セットはデータ構造の基本構造であり、数学のセットと完全に一致しています。それでは、数学のセットとは何かを見てみましょう。

1.コレクションとは

コレクションとは、特定の性質を持つ具体的または抽象的なオブジェクトの集合を指します。その中で、セットを構成するこれらのオブジェクトは、セットの要素と呼ばれます。

いくつか例を挙げると、人間をセットとすると、中国人がセットの要素になります。場合は0-100、コレクションとしての自然数は、0セット内の要素、表記があり0∈100101コレクションの要素ではない、それがで示されています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または一部のセットに属します。BA∪B

ここに画像の説明を挿入します

In [10]: data | s                                                                                                   
Out[10]: {1, 2, 3, 4, 5, 6}

5.減算

すべては、で示される差分セットのセットに関して既知のセットで構成される要素AのセットBセットに属さないセットに属します。ABA-B

ここに画像の説明を挿入します

In [11]: data - s                                                                                                   
Out[11]: {1, 3, 5}

In [12]: s - data                                                                                                   
Out[12]: {6}

6.補完

一般あれば、絶対的な補完を補完する意味しAているBサブセット(見上げの概念のサブセット)、Bすべてに属していないAと呼ばれるコレクションで構成要素の補数。補集合は差分集合の特殊なケースと言えます。AB

ここに画像の説明を挿入します

AそれはあるBのサブセットスーパーセット。BA

In [13]: s1 = set({2, 4})                                                                                           

In [14]: data - s1                                                                                                  
Out[14]: {1, 3, 5}

7.対称差

セットのAセットBA∩B、コレクションのすべての要素が対称差と呼ばれるわけではありませんA△Bつまり、次のように表されますA△B=(A∪B)-(A∩B)

ここに画像の説明を挿入します

In [13]: data ^ s                                                                                                   
Out[13]: {1, 3, 5, 6}

第四に、コレクションのアルゴリズムの実装

上記のコードはPython、データ収集で使用され、良好な構造が実現されています。この一連のデータ構造が実装されたアルゴリズムについて、私たちの言語に精通しています。

これは本当に簡単なので、ここでは書きません(将来忙しくないときに書くかもしれません)。注意すべき点がいくつかあります。基本的なデータ構造として配列のみを使用します。コレクションの特性とタイプをすべて満たす必要があります。パフォーマンスと効率は当面考慮されません。文字列マッチングアルゴリズムと並べ替えを学習した後アルゴリズムなどが戻ってきて最適化します。

おすすめ

転載: blog.csdn.net/yilovexing/article/details/107335751