テンプログラミングアルゴリズム

アルゴリズム:クイックソートアルゴリズムは


すぐにソートアントニー・ホーアのによって開発されたソートアルゴリズムであるために。平均的な条件下で、Οn個のアイテムをソートする時間の比較(N Nログ)。最悪の状況では、Οに(N2)の比較が必要ですが、この状況は珍しいことではありません。実際には、クイックソートは、通常、他Ο(N Nをログ)アルゴリズムよりも大幅に高くなっているその内部ループ(内側のループ)が建築の最も上のうち、非常に効率的に実装することができますので、より高速です。


シリアル(リスト)を入れて分割統治(分割統治)の戦略を使用してクイックソートは、次の2つのサブシリアル(サブリスト)に分かれています。


アルゴリズムのステップは

、「基準」(ピボット)と呼ばれる、要素の列の数を選ぶ



と同じ(列を並べ替え、基準値よりも小さい参照の前に置かれたすべての要素は、基準値は、基準の背面に配置された要素の全てよりも大きいです数は)どちらの側もできます。パーティション終了後、中間位置の列の数に基づいて。これは、パーティション(パーティション)動作と呼ばれます。


再帰的に(これを再帰的)基準値よりも小の数が列の数とサブエレメントは、エレメント列の基準値よりも大きいです。



再帰のボトムケースは、サイズが列の数は、つまり、常にうまくソートされた0または1です。それは再帰でしたが、このアルゴリズムは常にあるため、各反復では、終了しますが、それは、その最終的な位置に配置された少なくとも一つの要素が行くでしょう。






アルゴリズムII:ヒープソートアルゴリズム


ヒープソート(ヒープソート)が使用ヒープのために設計されたソートアルゴリズムようなデータ構造を指します。バルク特性を満たしながら蓄積は、近似の完全二分木構造である:すなわち、キーまたはインデックスのサブノードは、常にその親ノード(より以上)未満です。


ヒープソートの平均時間計算量はΟ(nlogn)です。


説明されたアルゴリズムのステップは、

ヒープH [0..N-1]の作成



第一のスタック(最大)テールとスタック交換を


スタックが1に小型化し、(0)shift_downを呼び出し、対応する位置にトップデータに新しいアレイを調整することを目的これは


1のヒープサイズまで、ステップ2を繰り返し







アルゴリズムIII:マージソート


マージソート(並べ替えマージ、台湾の翻訳しました:マージソート)ソートアルゴリズム効率的なマージ操作に基づいています。このアルゴリズムは、非常に一般的なアプリケーションは、分割統治(分割統治)Aを使用しています。


説明されたアルゴリズムのステップ

2つのソート配列の和の大きさ、マージを格納するために使用される配列空間がそのよう、スペースアプリケーションを



、それぞれ、2つのソートシーケンスの開始位置の最初の位置二つのポインタを設定する


二つのポインタの比較をポインティング要素、マージ次の位置とにポインタを移動させる比較的小さなスペースに選択された要素


ポインタの配列の終わりに達するまでステップ3を繰り返し


配列組み合わせの末尾に直接別の配列の全ての残りの要素のコピー







アルゴリズムIVを:バイナリサーチアルゴリズム


バイナリサーチアルゴリズムは、順序付けられた配列内の特定の要素を見つけるための検索アルゴリズムです。中間要素は、要素がちょうど探している場合、アレイ内のプロセス要素の中央から検索要素、検索処理は、要素を終了する。特定の要素は、アレイ内の中間要素を見つける中間要素の半分より大きいか小さいより大きいまたは小さい場合そして中央の要素で同じスタートと比較し始めます。


配列は、いくつかの段階で空の場合、それが見つかりません表しています。各比較検索が半分に減少するように、この検索アルゴリズム。各探索領域のバイナリ検索が半分に低減され、時間複雑度はΟ(LOGN)です。


アルゴリズム5:BFPRT(線形検索アルゴリズム)


問題を解決するためBFPRTアルゴリズムは非常に古典的であり、それは巧妙な分析により、n個の要素の配列からk番目の最大要素(小さなk番目の)選択され、BFPRTは、複雑さが最悪の場合には線形時間をままであることを保証することができます。同様の考えやクイックソートアルゴリズムのアイデア、当然のことながら、その最悪の場合には、アルゴリズムは、まだO(n)の時間計算量に到達することができ、5本の著者は、高度なアルゴリズム処理を行いました。


アルゴリズムは、ステップ

各群5のn個の要素を、N / 5(上限)のグループに分割されています。



除去し、各グループは、そのような挿入ソートなどの任意のソート方法、の中央値。


Xが設定されているすべての前のステップの中央値の中央値を見つける再帰呼び出し選択アルゴリズムは、症例のより低い中央値は、より小さな中央を選択するように設定されています。


Xへのアレイの数で割った、xがK未満に等しく設定され、数は、x NKよりも大きくなっています。


I == K、Xを返す場合、iが<要素のxのkは、i番目の再帰ルックアップ小さな要素よりも小さく、I場合>場合はK、より小さな要素の再帰的なルックアップの要素xのIKよりも大きいです。


終了条件:N = 1、リターン要素、すなわちI小さいです。



シックス・アルゴリズム:DFS(深さ優先探索)


深さ優先探索アルゴリズム(深さ優先-検索)、検索アルゴリズムです。探索木でできるだけ深くその木の枝に沿ってツリーノードの深さを横断します。すべての側面を探求するノードvとなっているされている場合、検索は、ノードvのエッジピースの発信ノードに戻っています。すべてのノードがこれまでに到達可能なソースノードから発見されるまで、このプロセスは継続します。


すべてのノードがこれまでに訪問されるまで検出されないノードがある場合は、1がソースノードとして選択され、プロセスが繰り返され、全体のプロセスが繰り返されます。DFSは、盲目の検索を属します。


深さ優先探索は深さ優先探索アルゴリズムを使用して、古典的なグラフ理論アルゴリズムはテーブルをソートする適切なターゲット・トポロジ・マップを生成することが可能であり、トポロジカルソートテーブルの使用が容易にそのような最大パスの問題、等のような理論をグラフに関連する多くの問題を、解決することができ 通常、ヒープデータ構造は、DFSアルゴリズムを達成するのを支援するために使用します。


アルゴリズムのステップ

Vの頂点の訪問、



通信経路及びvは頂点を訪問されるまで、隣接ノードから順次アクセスV、及び図;図の深さ優先トラバーサルない;


頂点が図の場合に存在する場合、アクセスできない出発の頂点がアクセスされていないから、再深さ優先探索は、フィギュアまで、すべての頂点がこれまでに訪れています。



上記の説明は、例えば、より抽象的であってもよい:


DFSをその隣接頂点W1のいずれかにアクセスするために、Vから出発して、図に開始頂点vにアクセスした後、隣接したアクセスが、訪れていない次いでW1からW 1頂点W2、次にW2から、同様の訪問。それはuの隣接頂点が訪問されているすべての頂点に到達するまでので、上に行きます。


頂点が隣接する他の頂点アクセスされていないがあるかどうかを確認するために、一度だけ訪問する前に続いて、一歩、退きました。もしそうなら、その後、前回同様のアクセスで、頂点から開始した後、この頂点にアクセスし、そうでない場合は、バックステップと検索します。図を通信するすべての頂点がこれまでに訪れたまでプロセスを繰り返します。


アルゴリズム7:BFS(BFS)


幅優先探索アルゴリズム(幅優先-Searchは)、グラフィカルな検索アルゴリズムです。簡単に言えば、BFSは、ツリー(グラフ)の幅に沿ってノードツリー(図)を横切る、ルートから開始されます。すべてのノードがアクセスされた場合、アルゴリズムは中止されます。BFSはまた、ブラインド検索に属します。通常、BFSアルゴリズムを達成するのを支援するために使用されるデータ構造をキューに入れます。



ステップアルゴリズムは、

最初のルートノードのキューに配置されています。



キューから最初のノードを取り、そしてそれがゴールであるかどうかをチェックします。ターゲットが見つかった場合、検索の終わりとは、結果を返します。それ以外の場合は、すべての直接の子ノードは、キューに参加するために検査されていなかったことだろう。



図は、検索対象を望んでいない、すなわち-キューが空の場合、全体図を示すことは確認しています。検索とリターンの終わり「ターゲットを見つけることができません。」


手順2を繰り返します。







八のアルゴリズム:ダイクストラアルゴリズム


ダイクストラのアルゴリズムは、オランダのコンピュータ科学者エドガー・ダイクストラによって開発されました。ダイクストラ法は、単一のソース、最短パスアルゴリズムは、ツリーで終わる非負の重み付き有向グラフ最短経路問題を解決するための幅優先探索を使用します。サブモジュール又は他のグラフアルゴリズムとしてルーティングアルゴリズムで使用されるアルゴリズム。


入力アルゴリズムは、重いは、図Gに右、及びS.へGソース頂点を有する含ま 私たちは、VにGのすべての頂点の集合を表し、図形の各辺は、2つの頂点のペアを形成要素を順序付けられます。(u、v)はvは経路に接続される頂点からUを表します。我々は、すべてのエッジEとGを設定し、重み関数Wによるエッジ量E→[0、∞ ] に定義されています。従って、W(u、v)はuがV非負の重みを頂点に頂点(重量)です。辺の重みは、2つの頂点間の距離と考えることができます。重量の任意の2点間の正しい経路、すなわち、経路の重み和のすべてのエッジの重みです。sで最小重量経路(例えば、最短経路)Tを見つけるために、頂点V s及びt、ダイクストラのアルゴリズムが知られています。このアルゴリズムはまた、任意の他の頂点までの最短経路を見つけるために、頂点sから、図面であってもよいです。負の重みは図に自由であるため、ダイクストラのアルゴリズムは、最速知られている単一始点最短経路アルゴリズムです。


アルゴリズムステップは、記載さ

=初期季節S {V0}、T = {残りの頂点}、T頂点対応する距離値を。もしそこ<V0、VI>、D( V0、VI)の円弧上の<V0、VI>重量。存在する場合<V0、VI>、D( V0、VI) ∞する



TがSでWとしないの最小値である頂点からの距離Aを選択し、Sを添加


頂点の値を残りの距離Tを変更しますプラス場合頂点V0は値Viとの距離を短くするような中間Wに、この距離の値が変更されます。


すなわち、W = Viはこれまでに、Sに含まれるすべての頂点まで、上記のステップ2と3を繰り返します。







アルゴリズム9:動的計画アルゴリズム


ダイナミックプログラミング(ダイナミックプログラミング)は、数学、コンピュータ科学と経済学、比較的簡単な方法で、サブ問題に元の問題によって複雑な問題を解決するための方法において使用するためのものです。ダイナミックプログラミングは、多くの場合、サブ問題と問題の最適な部分構造の性質をオーバーラップするのに適して、動的計画法は、多くの場合、簡単な解決策に費やした時間よりもはるかに少ないです。


動的計画法の基本的な考え方は非常に簡単です。一般に、与えられた問題に対する解決策は、我々は、その異なる部分(すなわち下位問題)、元の問題の解決策に到達するために下位問題に、次いで合わせた溶液を理解する必要があります。通常、非常にのみ、それによって計算量を減らし、それぞれの子のために一回の動的計画法で問題を解決しようとするため、多くのサブ問題で同様:ステータの問題に対する解決策が計算されると、それはメモリストレージである、あなたは同じサブ問題を必要とするので、次回ときダイレクトルックアップテーブルのソリューション。このアプローチでは、入力の大きさについて繰り返し質問の数は指数関数的な成長に特に有用でした。


動的プログラミングの問題は、間違いなく最も古典的なナップザック問題でした。


アルゴリズムステップは、記載さ

次善構造特性を。問題のサブ最適解の問題の解決策も最高に含まれている場合、我々は問題は構造的な次善の(すなわち、最適化の原則を満たしている)があることを言います。問題解決のための動的計画アルゴリズムのサブ最適な構造特性は重要な手がかりを提供します。



サブ問題の重複自然。サブ問題の重複な性質を指し、常にトップダウンの問題解決に関して、新たな問題の部分問題再帰アルゴリズムではない、いくつかのサブ問題は、計算を複数回繰り返されるたびに生成。動的なプログラミングアルゴリズムは、このサブ問題の重複性質上、一度だけ、各副問題の計算を使用することで、あなただけのテーブルでは、サブ問題が再計算された計算する必要があるときに、テーブルに結果を保存しますより高い効率が得られるように、単に、結果を見てください。



アルゴリズム10:ナイーブベイズ分類アルゴリズム


ベイズの定理に基づくナイーブベイズ分類アルゴリズムは、単純な確率的分類アルゴリズムです。ベイズ分類は、確率推論の基礎であり、それが唯一のタスクを完了する方法の事象の確率、推論や意思決定を知っている、様々な条件の存在下で不確実です。確率推論は不確実性に対応すると推論されます。単純ベイズ分類器は、独立の仮定に基づいている間、即ち、各特徴は、試料が他の機能に関係しないことが想定されます。


単純ベイズ分類器は、教師あり学習サンプル濃度に非常に良い分類結果を得ることができ、正確な自然の確率モデルに依存しています。多くの実用的なアプリケーションでは、最尤推定法を用いて、ナイーブベイズモデルのパラメータ推定では、他の言葉でナイーブベイズモデルが動作することができますし、任意またはベイズ確率ベイズモデルを使用していませんでした。

おすすめ

転載: blog.csdn.net/weixin_42831704/article/details/90764245