大規模ウェブサイトのアルゴリズムとアーキテクチャについての簡単な説明(パート 2)

大規模ウェブサイトのアルゴリズムとアーキテクチャについての簡単な説明(パート 2)

順序

前回の記事「大規模 Web サイトのアルゴリズムとアーキテクチャに関する簡単な説明 (パート 1)」に続いて、このトピックを続けましょう。

上記で多くの人が話題に関係ないと言っています。これは情報の一部に過ぎないので、話題に関係ないと感じるかもしれません。主な理由は、話題が大きすぎて内容が多すぎるためです。部分的にしか書き出せません。ご容赦ください。

上司は上のことしか話しませんでしたが、真ん中や下もありますよ!

重点は基本的な部分、つまりアルゴリズムの部分にあります。これには、今日のアーキテクチャの製品で使用されるアルゴリズムが含まれており、製品の本質をある程度理解することができます。関連する建築製品について実際に話す前に、スプレーツリーに関する記事から始める必要があります。

彼はまだ始めてもいないのに!勉強するには少し時間がかかりそうです。まずはアルゴリズムを理解しましょう!

バイナリツリー

上記の 2 つの構造 (配列とリンク リスト) には、それぞれ欠点があります。

1》配列は更新時に多くのリソースを消費し、後続の要素を1つずつ移動する必要があります。

2》リンクリストを照会する場合は、先頭から1つずつ比較して、照会する内容を選択する必要があります。

要約すると、クエリと更新がより高速な構造が必要なので、バイナリ ツリーを使用します。

特徴:

各ノードには最大 2 つのサブツリーがあります。

80を見つける

実際のコードを見てみましょう:

[[94946]]実行して見てみましょう

挿入82

コードの練習を見てみましょう (注: 元のコードにメソッド insert_bit_tree が追加されています)。

[[94946]]実行して見てみましょう

#p#

バイナリツリーの問題点

非常に極端なケースで特定のデータを検索すると、上図に示すような状況が発生することは容易にわかります。データが数千万個あったら何が起こるかわかりますか?

上記の理由から、AVL ツリーとも呼ばれるバランスのとれたバイナリ ツリーを考えました。

バランス二分木: AVL 木 (1962)

実際のコードを見てみましょう。

主にこのコードを理解する

[[94946]]この関数をグラフに描きます。

オリジナルリンク: http://www.cnblogs.com/baochuan/archive/2012/10/08/2713700.html

<<:  シャッフルアルゴリズムの2つの実装の比較

>>:  大規模ウェブサイトのアルゴリズムとアーキテクチャに関する簡単な説明

ブログ    
ブログ    
ブログ    

推薦する

ロボティック プロセス オートメーションの 10 大メリット

ロボティック プロセス オートメーション (RPA) ソリューションは、人間が日常的に実行する多くの...

「ビッグデータによる既存顧客殺し」を厳しく罰し、アルゴリズムがユーザーにより良いサービスを提供できるようにする

7月2日、国家市場監督管理総局は「価格違反に対する行政処罰(意見募集稿)」を発表し、ダンピング、価格...

2018年のAI技術トレンドトップ10、AIの進歩が未来に与える大きな影響

将来に大きな影響を与える人工知能の進歩について学びましょう。人工知能が最前線に立っており、企業や政府...

何も知らない状態から、3分で「ナレッジグラフ」を素早く理解するまで

[51CTO.com からのオリジナル記事] ナレッジ グラフは、インテリジェント マシンの脳を解き...

...

アリババ・ダモ・アカデミーは、電力網の負荷を正確に予測するための新しい時系列予測モデルを提案している。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

アナーキストとの対話: ノーム・チョムスキーが語るディープラーニングの未来

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

IntelがBigDLディープラーニングフレームワークをリリース、CPUを使ってGPUを攻撃する予定

[51CTO.com クイック翻訳] 先週、Intel は分散型ディープラーニング用のオープンソース...

オープンソースツール | データサイエンスのための Python 入門

[[248716]]データ サイエンスの力を活用するために高価なツールは必要ありません。これらのオー...

...

ルーティングの基本アルゴリズム設計の目標とタイプ

基本的なルーティング アルゴリズムの設計目標とタイプは、基本的なルーティング アルゴリズムに関する知...

...

テスラの秘密チームが暴露:ネガティブなニュースを抑え、虚偽入札の段階を乗り切ることに特化

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

現時点で最も包括的なPythonの採用方針

Pythonは、コンパイル速度が超高速なオブジェクト指向プログラミング言語です。誕生から25年が経ち...