-
Big-O表記とLittle-O表記の違い
e∈O(g)は、本質的に- 少なくとも1つの場合 0の選択、∋不等式e(x)aを保持するような定数a。 e∈o(g)は、本質的に- すべての場合 0の選択、∋不等式e(x)aを保持するような定数a。 e∈O(g)はeの漸近的成長がgより速くないことを意味し、e∈o(g)はeの漸近的成長がgより厳密に遅いことを意味します。 ≤対<のようなものです。 E.g. x2∈O(x2) x2∉o(x2) x2∈o(x3)
-
最悪の場合の許容度分析
許容度分析の定義と重要性 公差分析は、製造された部品の欠陥に起因する(つまり発生する)製品に対する全体的な変動と変動の影響を計算するために使用される多くのプロセスに与えられる用語です。 公差分析は、製品設計エンジニアが製造用のコンポーネントを準備するときに実行されます。これは、エンドユーザーの要求に応じて保証するとともに、製造されたすべてのコンポーネントがアセンブリ内に一緒に取り付けられるようにするために行われます。 許容範囲分析の定義 公差分析は、機械部品およびアセンブリで収集される可能性のある変動の主題に関連する活動の総称として定義されます。その方法は、機械的および電気的システムなど
-
公差スタックアップ
アセンブリ公差スタックアップ分析とは何ですか? 要するに、アセンブリ公差スタックアップ分析は、アセンブリ全体の公差値、またはすべてのコンポーネントの公差値を認識している場合のアセンブリの特定のギャップとして定義されます。 アセンブリトレランスチェーンスタックアップ分析は、さまざまな方法で実行できます。最も単純な手順は最悪の場合の方法と呼ばれ、ここで説明します。 組み立て公差スタックアップの最悪の場合の方法についての議論 以下のような4枚の厚いシートのアセンブリがあるとします- 上の図は、4枚のシートの厚さと公差を示しています。寸法「X」を計算する必要があります とその許容値は以下
-
メルダブル優先キュー操作
ランダム化されたメルダブルヒープ(メルダブルプライオリティキューとも呼ばれます)は、多くの一般的な操作をサポートします。これらは、挿入、削除、および検索操作、findMinとして知られています。挿入および削除操作は、メルダブルヒープMeld(A1、A2)に固有の追加操作の観点から実装されます。 メルド meld(マージとも呼ばれる)操作の基本的なターゲットは、A1とA2の2つのヒープ(各ヒープのルートノードを取得することによる)を取得し、それらをマージして、結果として単一のヒープノードを返すことです。このヒープノードは、A1とA2をルートとする2つのサブツリーのすべての要素を含むヒープのルー
-
ツリーの左子右兄弟表現
左-子右-兄弟表現は、n-aryツリーの異なる表現であり、すべての子ノードへのポインターを維持する代わりに、ノードは2つのポインター、最初は最初の子へのポインター、もう1つはへのポインターを保持します。そのすぐ次の兄弟。この新しい変換により、ノードが持つ子の数を事前に知る必要がなくなるだけでなく、ポインターの数が最大2つに制限されるため、コーディングが非常に簡単になります。 各ノードで、同じ親の子を左から右にリンクまたは接続します。 親は最初の子とのみリンクする必要があります。 例 左子右兄弟ツリー表現 10 | 2 -> 3 -> 4 -> 5 | | 6 7 -&g
-
ポテンシャル法
計算の複雑さの理論によれば、ポテンシャル法は、データ構造の償却された時間と空間の複雑さを分析するために実装された方法として定義されます。これは、まれですが高価な操作のコストを排除する一連の操作に対するパフォーマンスの尺度です。 ポテンシャル法では、データ構造の状態を非負の数に変換する関数Φが選択されます。 Sがデータ構造の状態として扱われる場合、Φ(S)は、償却分析で考慮されたがまだ実行されていない作業を示します。したがって、Φ(S)は、その状態で蓄積された位置エネルギーの量を計算するものとして想像することができます。データ構造を初期化する前に、潜在的な値はゼロとして定義されます。あるいは、
-
m-aryツリー
コンピュータサイエンスのm-aryツリーは、通常、次のように階層的に表されるノードのコレクションとして定義されます。 ツリーはルートノードで開始されます。 ツリーの各ノードは、その子ノードへのポインタのリストを維持します。 子ノードの数がm以下です。 m-aryツリーの一般的な表現は、子を格納するためにm個の参照(またはポインター)の配列を実装します(mは子の数の上限であることに注意してください)。 m-way探索木 a。空または b。 b(1 <=b
-
接続性、距離、およびスパニングツリー
スパニングツリー 簡単な定義の1つは、ツリーはサイクルに関連付けられていない連結グラフであり、サイクルでは、エッジを繰り返さずにノードからそれ自体に移動できます。 連結グラフGの全域木は、Gのすべての頂点を含む木として定義されます。 スパニングツリーは、インターネットルーティングアルゴリズム用に実装されることがよくあります。インターネットでは、コンピューター(ノード)は多くの場合、多くの冗長な物理接続で接続されています。 グラフ内のスパニングツリーの総数。グラフがnなしの完全グラフである場合。頂点の数の場合、スパニングツリーの総数はn(n-2)です。 ここで、nはグラフ内のノードの数
-
MeldablePriorityQueuesとSkewHeaps
メルダブル優先キュー 定義 ランダム化されたメルダブルヒープ(メルダブルヒープまたはランダム化されたメルダブル優先度キュー)は、基になる構造もヒープ順に並べられたバイナリツリーである優先度キューベースのデータ構造として定義されます。ただし、基礎となる二分木の形に厳格な規則はありません。 利点 このアプローチには多くの機能があります。つまり、同様のデータ構造に勝る利点があります。 他のデータ構造よりもシンプルなアプローチを提供します。 ランダム化されたメルダブルヒープのすべての操作は簡単に適用でき、複雑さの範囲内の定数係数は小さくなります。 バランス状態を維持する必要もありません。また、ノー
-
ペアリングヒープ
ペアリングヒープは、実装が比較的簡単で、実用的な償却パフォーマンスが優れているヒープデータ構造の一種として定義されています。 ペアリングヒープは、ヒープ順に並べられたマルチウェイツリー構造であり、簡略化されたフィボナッチヒープとして表すことができます。 これらは、プリムのMSTアルゴリズムなどのアルゴリズムを実装するための「堅牢な選択」と見なされ、次の操作をサポートします(最小ヒープを想定)- find-min −この関数は、ヒープの最上位要素を返す役割を果たします。 溶ける -この関数は、2つのルート要素を比較する役割を果たします。結果のルートが小さいほど、大きい要素とそのサブツ
-
ペアリングヒープのバリエーション
ペアリングヒープは、空のヒープ、またはルート要素とペアリングツリーの空のリストを含むペアリングツリーのいずれかです。 ヒープ順序プロパティでは、ノードの親がノード自体より大きくないことが必要です。 次の説明では、キーの減少操作をサポートしない純粋関数型ヒープについて検討します。 タイプPairingTree[Element]=Heap(element:Element、subheaps:List [PairingTree [Element]]) タイプPairingHeap[Element]=Empty | PairingTree [Element] ペアリングヒープには、最小ペアリ
-
メルドオペレーションの償却原価
溶融操作の償却原価を計算することは困難な作業です。主な難しさは、ランダムな一連の操作のさまざまなポイントで実行される操作のコストの幅広い変動を累積することです。私たちの設計目標は一連の操作のコストに影響されますが、一連の操作のコストの観点から操作の償却コストの概念を定義することは何も導きません。実際のコストの変動を設定するための潜在的な関数を実装することは、状況を処理するための完璧な方法です。次のトピックでは、償却コストの概念について説明します。 Bを基本演算P={P 1 の抽象データ型(ADT)とします。 、P 2 、……、P k }そしてDSをBを実装するデータ構造とします。F
-
ペアリングヒープの適応特性
ペアリングヒープは、優先キューを完全に使用するために実装されています。優先キューはオブジェクトのセットの最小値を追跡するため、キューから何かを削除するたびに、それは常に最小値になります。優先キューは主に、ダイクストラのアルゴリズムを使用してグラフ内の最短経路を計算するときに実装されます。 ペアリングヒープは、実際のアプリケーションで使いやすく、操作しやすいため、完璧です。具体的には、それらは償却時間で優れた動作をします。つまり、個々の操作はより長い時間を消費しますが、キューのライフサイクル全体にわたるすべての操作の合計は高速です。ペアリングヒープはコーディングが簡単で、多くの場合、フィボナッ
-
ソフトヒープ
ソフトヒープは、5種類の操作の一定の償却時間で構成される単純なヒープデータ構造のバリエーションとして定義されます。これは、ヒープ内の特定の数の最大値のキーを注意深く「破損」(増加)させることによって取得されます。定数時間演算は-です。 作成 −新しいソフトヒープを作成します 挿入(s、y) −要素yをソフトヒープsに挿入します meld(s、s) 2つのソフトヒープsとsを1つにまとめて、両方を破壊します delete(s、y) −ソフトヒープsから要素yを削除します findmin(s) −ソフトヒープでキーが最も少ない要素を取得します フィボナッチヒープなどの他のヒープは、
-
ダブルエンド優先キュー(DEPQ)
ダブルエンド優先キュー(DEPQ)またはダブルエンドヒープは、優先キューまたはヒープのようなデータ構造として定義されますが、に格納されているキーまたはアイテムの順序に従って、最大値と最小値の両方を効率的に削除できます。構造。優先度または値に関連付けられたDEPQのすべての要素。 DEPQでは、昇順と降順の両方で要素を削除または削除することができます。 操作 両端優先キューは、次の操作で構成されます isEmpty() この関数は、DEPQが空かどうかをチェックし、空の場合はtrueを返します。 size() この関数は、DEPQに存在する要素の総数を返す役割を果たします。
-
対称最小-最大ヒープ
対称最小-最大ヒープ(SMMH)は、ルートを除く各ノードが正確に1つの要素を持つ完全なバイナリツリーとして定義されます。 SMMHのルートは空であり、SMMH内のノードの総数はm + 1です。ここで、mは要素の数です。 yをSMMHの任意のノードとします。 elements(y)を、yをルートとするサブツリー内の要素としますが、y内の要素(存在する場合)は除外します。 elements(y)j=∅と仮定します。 yは次の特性を満たします: yの左の子には、elements(y)の最小要素があります。 yの右の子(存在する場合)は、elements(y)に最大の要素を持ちます。 図1
-
インターバルヒープへの要素の挿入
インターバルヒープに存在する要素の数に応じて、次の場合が考えられます- 奇数の要素:間隔ヒープ内の要素の数が奇数の場合、新しい要素が最初に最後のノードに挿入されます。次に、前のノード要素と連続して比較され、インターバルヒープに不可欠な基準を満たすかどうかがテストされます。要素がいずれの基準も満たさない場合、すべての条件が満たされるまで、要素は最後のノードからルートに転送されます。 偶数の要素:要素の数が偶数の場合、新しい要素を挿入するために追加のノードが作成されます。要素が親間隔の左側にあるか属している場合は、最小ヒープ内にあるものとして扱われ、要素が親間隔の右側にある場合または属している場
-
間隔ヒープからの最小要素の削除
インターバルヒープでは、最小の要素はルートノードの左側にある要素です。この要素は削除されて返されます。 ルートノードの左側に作成された空席を埋めるために、最後のノードの要素が削除され、ルートノードに再度挿入されます。 次に、この要素は降順ノードのすべての左側の要素と連続して比較され、インターバルヒープのすべての条件が満たされるとプロセスが終了します。 ノードの左側の要素がいずれかの段階で右側の要素よりも高くなった場合、2つの要素が交換され、さらに比較が実行されます。 最後に、ルートノードの左側に最小の要素が再び含まれます。 この手順は、次の方法でも説明できます- 最小要素の削除は、いくつ
-
インターバルヒープの初期化
インターバルヒープは、各ノードに2つの要素が含まれる埋め込み最小-最大ヒープと同じです。これは、完全な二分木として定義されています 左側の要素が右側の要素以下です。 両方の要素が閉じられる間隔を定義します。 ルート以外のノードで表される間隔は、親ノードのサブ間隔です。 左側の要素は最小ヒープを表します。 右側の要素は最大ヒープを表します。 要素の数に応じて、2つのケースが許可されます- 偶数の要素:この場合、各ノードには、a≤bの2つの要素aとbが含まれます。すべてのノードは、間隔[a、b]で表されます。 奇数の要素:この場合、最後以外の各ノードには、間隔[a、b]で表される2つの要素
-
インターバルヒープ操作の複雑さ
ダブルエンド優先キュー(DEPQ)またはインターバルヒープには、次の操作が含まれます- isEmpty() この関数は、DEPQが空かどうかを確認するために実行され、空の場合はtrueを返します。 size() この関数は、DEPQに存在する要素の総数を返すために実行されます。 getMin() この関数は、優先度が最も低い要素を返すために実行されます。 getMax() この関数は、優先度が最大の要素を返すために実行されます。 put(z) この関数は、要素zをDEPQに挿入するために実行されます。 removeMin() この関数は、優先度が