-
漸近表記-O()、o()、Ω()、ω()、およびθ()
漸近表記 漸近表記は、漸近分析のアルゴリズムの複雑さを表すために使用されます。これらの表記は、複雑さを表す数学的ツールです。一般的に使用される表記法は3つあります。 ビッグオー表記 Big-Oh(O)表記は、関数f(n)の上限を定数係数内に与えます。 リトルo表記 Big-Oh、Big-Omega、Big-Thetaの表記を除いて、他にもいくつかの表記があります。小さな表記はその1つです。 厳密にできない上限を表すために、小さな表記が使用されます。言い換えれば、f(n)の上限が緩い。 ビッグオメガ表記 ビッグオメガ(Ω)表記は、関数f(n)の下限を一定の係数内に与えます。 リトルω表
-
ランダウの記号(O)
漸近表記 漸近表記は、漸近分析のアルゴリズムの複雑さを表すために使用されます。これらの表記は、複雑さを表す数学的ツールです。一般的に使用される表記法は3つあります。 ビッグオー表記 Big-Oh(O)表記は、関数f(n)の上限を定数係数内に与えます。 f(n)=O(g(n))と書くと、正の定数n0とcがあり、n0の右側で、f(n)は常にc * g(n)以下になります。 O(g(n))={f(n):すべてのn≤n0に対して、0≤f(n)≤cg(n)となる正の定数cおよびn0が存在します}
-
ビッグオメガ(Ω)およびビッグシーラ(θ)表記
漸近表記 漸近表記は、漸近分析のアルゴリズムの複雑さを表すために使用されます。これらの表記は、複雑さを表す数学的ツールです。一般的に使用される表記法は3つあります。 ビッグオメガ表記 ビッグオメガ(Ω)表記は、関数f(n)の下限を一定の係数内に与えます。 f(n)=Ω(g(n))と書く。正の定数n0とcがあり、n 0の右側にある場合 f(n)は常にc * g(n)以上にあります。 Ω(g(n))={f(n):すべてのn≤n 0 に対して、0≤cg(n)≤f(n)となる正の定数cおよびn0が存在します。 } ビッグシータ表記 Big-Theta(Θ)表記は、関数f(n)の限界
-
リトルオー表記(o)
リトルo表記 Big-Oh、Big-Omega、Big-Thetaの表記を除いて、他にもいくつかの表記があります。小さな表記はその1つです。 厳密にできない上限を表すために、小さな表記が使用されます。言い換えれば、f(n)の上限が緩い。 0となる整数定数n0≤1が存在する場合、関数f(n)はo(g(n))であると言えます。 リトル表記の数学的関係 数学的関係を使用すると、f(n)=o(g(n))は、を意味すると言えます。 漸近表記の例 f(n)=n 2の場合 およびg(n)=n 3 次に、f(n)=o(g(n))かどうかを確認します。 結果は0であり、上記の式を満
-
償却された複雑さ
償却分析 この分析は、時折の操作が非常に遅い場合に使用されますが、非常に頻繁に実行される操作のほとんどは高速です。データ構造では、ハッシュテーブル、互いに素なセットなどの償却分析が必要です。 ハッシュテーブルでは、ほとんどの場合、検索時間の複雑さはO(1)ですが、O(n)操作を実行することもあります。ほとんどの場合、ハッシュテーブルで要素を検索または挿入する場合、タスクは一定時間かかりますが、衝突が発生すると、衝突を解決するためにO(n)回の操作が必要になります。 集計方法 総コストを見つけるために集計方法が使用されます。大量のデータを追加する場合は、この式で償却原価を見つける必要があり
-
グラフとその表現
グラフは非線形のデータ構造です。これは、ノードを使用したデータと、エッジを使用したそれらの関係を表します。グラフGには2つのセクションがあります。頂点とエッジ。頂点はセットVを使用して表され、エッジはセットEとして表されます。したがって、グラフ表記はG(V、E)です。アイデアを得るための1つの例を見てみましょう。 このグラフには、5つの頂点と5つのエッジがあります。エッジが方向付けられます。例として、頂点BとDを接続するエッジを選択した場合、ソース頂点はBで、デスティネーションはDです。したがって、BをDに移動することはできますが、DからBに移動することはできません。 グラフは非線形
-
グラフの深さ優先探索またはDFS
深さ優先探索(DFS)は、グラフ走査アルゴリズムです。このアルゴリズムでは、開始頂点が1つ与えられ、隣接する頂点が見つかると、最初にその隣接する頂点に移動し、同じ方法でトラバースを試みます。 可能な限り深さ全体を移動し、その後、バックトラックして前の頂点に到達し、新しいパスを見つけます。 DFSを反復的に実装するには、スタックデータ構造を使用する必要があります。再帰的に実行する場合は、外部スタックは必要ありません。再帰呼び出しの内部スタックで実行できます。 入力 :グラフの隣接行列。 A B C D E FA 0 1 1 1 0 0B 1 0 0 1 1 0C 1 0 0 1 0
-
グラフの幅優先探索またはBFS
幅優先探索(BFS)トラバーサルはアルゴリズムであり、特定のグラフのすべてのノードにアクセスするために使用されます。このトラバーサルアルゴリズムでは、1つのノードが選択され、隣接するすべてのノードが1つずつ訪問されます。隣接するすべての頂点を完了すると、さらに移動して別の頂点をチェックし、隣接する頂点を再度チェックします。 このアルゴリズムを実装するには、キューデータ構造を使用する必要があります。隣接するすべての頂点がキューに追加されます。隣接するすべての頂点が完了すると、1つのアイテムがキューから削除され、その頂点を再び通過し始めます。 グラフでは、サイクルが発生することがあるため
-
分割統治アルゴリズムの概要
分割統治法は、異なるアルゴリズムパラダイムの1つです。主に3つの異なるステップがあります- 分割 −このフェーズでは、問題は同じタイプのいくつかの小さなサブ問題に分割されます。 征服 −サブ問題を再帰的に解決します。 組み合わせる −サブ問題の回答を組み合わせて、最終的な回答を取得します。 このセクションでは、これから説明します 最も近いペアポイントの問題 2D配列からピーク要素を選択 配列内の反転をカウントする 2つのソートされた配列の中央値
-
バックトラッキングアルゴリズムの概要
バックトラッキングは、問題を段階的に解決するためのアルゴリズム手法です。問題を解決するために再帰的アプローチを使用します。バックトラッキングは、最適化問題を解決するために考えられるすべての組み合わせを見つけるために使用されていると言えます。 このセクションでは、これから説明します ハミルトンサイクル M-カラーリングの問題 Nクイーンの問題 迷路問題のラット 覆面算パズル 部分和問題 数独解法アルゴリズム ナイトツアーの問題 綱引きの問題 ワードブレイクアルゴリズム スワッピング問題による最大数
-
その他の問題の概要
さまざまなセクションでさまざまな問題が発生しています。分類されていない他のいくつかの問題があります。このセクションでは、ランダムな問題のいくつかを見ていきます。 このセクションでは、これから説明します。 基数nの数を追加する 平方根を見つけるためのバビロニア法 多数の階乗 特定のポイントがポリゴンの内側にあるかどうかを確認します パーフェクトスクエアをチェックするかどうか 与えられた4つのポイントが正方形を形成しているかどうかを確認します 指定された2つのセットが互いに素であるかどうかを確認しますか? 2つの線分が交差しているかどうかを確認します 特定の点が三角形の内側にあるかどうかを確認
-
パターン検索アルゴリズムの概要
パターン検索アルゴリズムは、別の大きな文字列からパターンまたはサブ文字列を見つけるために使用されます。さまざまなアルゴリズムがあります。時間の複雑さを軽減するためにこれらのタイプのアルゴリズムを設計する主な目標。従来のアプローチでは、より長いテキストのパターン検索タスクを完了するのに多くの時間がかかる場合があります。 ここでは、パターンマッチングのパフォーマンスを向上させるためのさまざまなアルゴリズムを紹介します。 このセクションでは、これから説明します。 エイホ-コラシックアルゴリズム アナグラムパターン検索 不正な文字のヒューリスティック ボイヤームーアアルゴリズム 有限オートマトンの
-
検索アルゴリズムの概要
検索アルゴリズムは、データセットから1つまたは複数の要素を検索または検索するために使用されます。これらのタイプのアルゴリズムは、特定のデータ構造から要素を見つけるために使用されます。 検索はシーケンシャルである場合とそうでない場合があります。データセット内のデータがランダムである場合は、順次検索を使用する必要があります。それ以外の場合は、他のさまざまな手法を使用して複雑さを軽減できます。 このセクションでは、-について説明します。 二分探索 指数検索 補間検索 ジャンプ検索 線形検索 3次検索
-
ソート手法の概要
並べ替えとは、特定の形式でデータを並べ替えることを指します。並べ替えアルゴリズムは、データを特定の順序で並べ替える方法を指定します。最も一般的な順序は、番号順または辞書式順序です。 並べ替えの重要性は、データが並べ替えられた方法で保存されている場合、データ検索を非常に高いレベルに最適化できるという事実にあります。並べ替えは、データをより読みやすい形式で表すためにも使用されます。 このセクションでは、-について説明します。 バブルソート バケットソート コムソート ソートのカウント サイクルソート ヒープソート 挿入ソート マージソート 鳩の巣ソート クイックソート 基数ソート 選択ソート
-
欲張りアルゴリズムの概要
欲張りアルゴリズムは、特定の問題に対して最適なソリューションを実現するように設計されています。欲張りアルゴリズムのアプローチでは、決定は特定のソリューションドメインから行われます。貪欲であるため、最適なソリューションを提供すると思われる最も近いソリューションが選択されます。 欲張りアルゴリズムは、ローカライズされた最適なソリューションを見つけようとします。これにより、最終的にはグローバルに最適化されたソリューションにつながる可能性があります。ただし、一般的に欲張りアルゴリズムはグローバルに最適化されたソリューションを提供しません。 このセクションでは、-について説明します。 アクティビティ
-
動的計画法入門
動的計画法は、異なるアルゴリズムパラダイムの1つです。このアプローチでは、問題をいくつかのサブ問題に分割し、以前のサブ問題の出力を保存して、将来それらを使用することができます。タスクの計算時間を短縮するのに役立ちます。 動的計画法には2つのタイプがあります- 重複するサブ問題 最適な下部構造 このセクションでは、-について説明します。 ボックススタッキングの問題 2つのトラバーサルを使用してグリッド内の最大ポイントを収集します 1からnまでのすべての数値の桁の合計を計算します 連続する1なしでバイナリ文字列をカウントする ゲームで特定のスコアに到達する方法の数を数えます 建物を建設す
-
グラフアルゴリズムの概要
グラフは非線形のデータ構造であり、有限数のノードと、ノードのペアを接続するために使用されるエッジのセットで構成されています。 グラフは、ネットワークなどを表すためにいくつかのリアルタイムの問題を解決するために使用されます。さまざまなソーシャルネットワークでは、グラフが使用されます。 このセクションでは、-について説明します。 2連結グラフのチェック グラフの幅優先探索(BFS) グラフのブリッジ 特定のグラフがツリーであるかどうかを確認します 有向グラフの接続性 グラフの深さ優先探索(DFS) 無向グラフでサイクルを検出する 有向グラフでサイクルを検出する 有向グラフのオイラー回路 オイ
-
アルゴリズム分析入門
アルゴリズムの理論的分析では、漸近的な意味でそれらの複雑さを推定すること、つまり、任意に大きな入力の複雑さ関数を推定することが一般的です。用語「アルゴリズムの分析」 ドナルド・クヌースによって造られました。 アルゴリズム分析は、特定の計算問題を解決するためにアルゴリズムに必要なリソースの理論的推定を提供する計算複雑性理論の重要な部分です。ほとんどのアルゴリズムは、任意の長さの入力で機能するように設計されています。アルゴリズムの分析は、アルゴリズムを実行するために必要な時間とスペースのリソースの量を決定することです。 通常、アルゴリズムの効率または実行時間は、入力の長さをステップ数に関連付け
-
魔方陣
魔方陣は正方行列であり、その順序は奇数であり、各行、各列、または各対角線の要素の合計は同じです。 各行、各列、または各対角線の合計は、この式を使用して求めることができます。 n(n2 + 1)/ 2 魔方陣を作るためのルールは次のとおりです- マトリックスの最初の行の中央の列から開始し、常に左上隅に移動して次の番号を配置します 行がを超える場合、または行がマトリックスにない場合は、列を左の列に変更し、マトリックスの最後の行に番号を配置して、もう一度左上隅に移動します。 列がを超える場合、または列がマトリックスにない場合は、行を一番上の行に変更し、そのマトリックスの最後の列に番号
-
配列の内容をシャッフルする
このアルゴリズムは配列を取得し、配列の内容をシャッフルします。配列要素のランダム順列を生成します。 この問題を解決するために、最後のインデックスから始まる要素を交換して、配列内にランダムに生成されたインデックスを作成します。 入力と出力 Input: An array of integers: {1, 2, 3, 4, 5, 6, 7, 8} Output: Shuffle of array contents: 3 4 7 2 6 1 5 8 (Output may differ for next run) アルゴリズム randomArr(array, n) 入力: 配列、要素の数。