15

商用/フリー ソフトウェア プロジェクトで使用されているツリー構造の例を探しています。ウィキペディアで例を見ることができますが、より具体的な例とその使用方法を探しています。たとえば、データベースの主キーは(私が読んだことから)BST構造またはBSTのバリエーションに保存されています(これについてはお気軽に修正してください)

私の質問は二分探索木 (BST) に限らず、赤黒、AVL などのバリエーションを含めることができます。

4

17 に答える 17

35

例が少し一般的、つまりグラフに関連していて、必ずしもツリーに関連していなくても大丈夫ですか? もしそうなら、読み進めてください。

  • 言うまでもなく、ほとんどの XML/マークアップ パーサーはツリーを使用します。たとえば、Apache Xerces を参照してください。または、Xalan XSLT パーサー。mathewsdave26さん、思い出させてくれてありがとう!

  • PDF はツリーベースの形式です。rootノードが続き、ノードが続きcatalog(これらは多くの場合同じです)、pagesいくつかの子pageノードを持つノードが続きます。プロデューサ/コンシューマは、多くの場合、バランス ツリーの実装を使用してドキュメントをメモリに格納します。

  • コンピューター チェス ゲームは巨大なツリー (トレーニング) を構築し、ヒューリスティックを使用して実行時に剪定し、最適な動きに到達します。

  • Flareは AS で書かれた視覚化ライブラリです。データ オブジェクトがどのようにマップされているかを確認することをお勧めします。特に、flare.analyticsパッケージはグラフ構造、スパニング ツリーなどを多用しています。

  • ソーシャル ネットワーキングは、CS 研究における現在のバズワードです。接続/関係がグラフを使用して非常に自然にモデル化されていることは言うまでもありません。多くの場合、ツリーはより興味深い現象を表現/識別するために使用されます。「ハリーとサリーには共通の友達がいますか?」などの質問にどのように答えますか?

  • 非常に成功した物理エンジンやゲーム エンジンの中には、人間の動きを正確にシミュレートするためにツリーを構築するものがあります。この場合のツリーは通常、一連のアクションに対応します。コンテキストは、特定の応答をレンダリングするために取られるパスを決定します。

  • ディシジョン ツリー ベースの学習は、実際にはデータ マイニング研究の手ごわい領域を形成しています。ツリーで機能するバギング、ブースティング、およびそれらの修正など、数多くの有名な方法が存在します。このような作業は、予測モデルの生成によく使用されます。

  • バイオインフォマティクスにおける一般的な問題は、巨大なデータベースを検索して、特定のクエリ文字列に一致するものを見つけることです。そこでは試行錯誤が一般的です。

  • かなりの数の成功した (株式) トレーダーは、日々の取引で決定木を使用して、取引を選択し、取引を終了します。多くの場合、これらはコンピューター プログラムに体系化されていませんが、ノートの裏のどこかに書き留められています。

だまされます。これこれを参照してください。

于 2009-02-23T13:40:50.057 に答える
11

データベースインデックスB*ツリーのBは、BinaryではなくBalancedを表します。アクセス時間を均等にするために、ツリーは均一な深さに保たれます。

于 2009-02-23T13:44:51.467 に答える
6

データベース インデックスは通常、B* ツリーのバリアントとして格納されますが、その名前にもかかわらず、バイナリ ツリーではありません。

于 2009-02-23T13:40:35.487 に答える
5

Binary Trees は、昔の 3D ゲームで Space Partitioning と Hidden Surface の削除に使用されていました。ゲーム Doom で使用されたものだと思います。

于 2009-02-23T14:59:24.223 に答える
1

データウェアハウス製品のいずれかを見ると、ツリー型のディメンションを保存してドリルする巧妙な方法がわかります。場所(国、地域、州、郡、町など)と時間(年、月、日、時間)のツリー構造を取得します。これらの2つの次元は多くのドメインで共通ですが、他の多くの実世界のデータもツリーに役立ちます。

たとえば、食品小売業では、木の根元に食料品を置くことができます。食料品は、乳製品、果物、野菜などにドリルダウンできます。単一のスレッドをたどると、次のようになります。豆の缶、トップレベルでは大型トラックで話し、次にパレット、箱、缶のサイズになります。さまざまなSKU(在庫管理単位)はすべて、店舗または企業内の誰かにとって重要です。次に、さまざまな種類の豆、さまざまなサプライヤー、メーカー-同じ次元の木のすべての例。

さまざまな製品のすべてが巨大な木を形成し、スライスとダイシンの方法が異なります。

于 2009-02-23T13:53:13.757 に答える
1

C++ には多くのコレクション (set、multi_set、map、multi_map) が含まれており、これらは通常、一種のバランス ツリーである赤黒ツリーとして実装されます。

(C++ 標準はこの実装を明示的に要求していませんが、これは複雑さの要件を満たす最も単純な設計です。)

于 2009-02-23T14:01:45.203 に答える
1

私が以前働いていたルーター/スイッチの場所では、一連のツリー構造を使用し、ソフトウェア ルート テーブルには基数ツリーを使用していました (IP ルーティング テーブルではかなり一般的な選択です)。

OSPF の実装では赤黒ツリーを使用し、BGP の実装ではスキップリストを使用しました。

技術的には、スキップリストはツリー構造ではありませんが、実際には非常に似ており、非常に優れています。

私たちは確かにかなりの量のヒープを使用していました。

于 2009-02-26T13:13:21.503 に答える
1

DNSクエリ..マップを使用するものはすべてAVLを使用します

于 2009-03-02T21:49:22.853 に答える
0

JBossにはtreapが実装されています。出典:

treapは、AS3Commonsコレクションフレームワークの一部です。変更されたtreapは、含まれているSortedSetおよびSortedMapコレクションをバックアップするために使用されます。

于 2010-02-05T08:36:05.163 に答える
0

一般にオブジェクトの分類は、ツリーを使用して行われることが非常に多いです。また、多くの場合、グラフはツリーよりもはるかに適していますが、ツリーにはグラフよりも 2 つの大きな利点があります。

  • (ネストされた) リストとして表すことができます。たとえば、グラフよりも紙の上 (タイトル、サブタイトル、段落、およびネストされたリストを含む) またはコンピューター画面に大きな木を表示する方がはるかに簡単です。
  • 単純なパス文字列 (またはスタック) を使用してツリー内の項目を指すことができます。たとえば、"http/StackOverflow.com/Users/Dimitri C" のように、グラフで行うのははるかに困難です。
于 2010-02-05T08:43:20.220 に答える
0

調査/国勢調査データの編集および代入システムである私のプロジェクトでは、二分決定木を使用して、レコードのどの変数を代入するか、または代入しないかを決定します。バイナリ デシジョン ツリーを使用すると、ツリー上のパスを選択する必要があるかどうかを効率的に決定できます。

このアプローチは(二分木だけではないかもしれませんが)人工知能アプリケーションでも使用されていると思います

于 2009-02-23T14:30:49.970 に答える
0

ツリー構造を使用して部品分類システムをモデル化します。パーツは、親クラスなどを持つ「クラス」に分類されます。最上位クラスは、カタログ UI のタブのテキストを駆動します。クラスは、価格設定ルールの適用、部品が「コンフィギュレーター」に表示されている車両の「ホット スポット」の特定などにも使用されます。Joe Celko のネストされたセットを使用して SQL でツリーをモデル化し、オンデマンドでメモリにロードしてより適切に処理します。パフォーマンス。私たちが行う最も一般的なクエリは、「私の子孫は誰ですか」と「このクラスは私の祖先ですか?」です。

とても便利な

于 2009-03-03T18:19:30.477 に答える