一般的なソフトウェアで使用されるデータ構造に関する情報はどこにありますか?


6

私がデータ構造について教えているコースの一部として、学生に一般的なソフトウェア/サービスでのデータ構造の使用を調査して提示してもらいたいです。ただし、基本的なグーグル検索では、この情報がすぐに利用できないことがわかります。

誰かが私に学生と共有する可能性のある適切なリソースを彼らの研究の出発点として私に示すことができますか?

編集

受け取った回答から判断すると、元の質問は十分に明確ではないため、詳細を追加します。

たとえば、service-xdata-structure-aを使用して、property-bのために機能性yを実行するというタイプのリソースを探しています。これは理想的なケースです。同様の情報を提供する他のリソースも歓迎します。


1
非常に多くのソフトウェアがオープンソースになり、GitHubでホストされているため、GitHubで一般的に使用されているデータ構造を検索してみることができます。そこには信じられないほどのヒット数があります。
Andrew Au

このような検索では、データ構造の直接的な実装しか得られません(例:here)。データ構造がより大きなソフトウェアの一部であるケースを探しています。たぶん、あなたはより役立つ検索方法を提案することができます。
wsaleem 2016

お気に入りのデータ構造とアルゴリズムの本を選んでください。説明されているすべての構造は、かなり頻繁に使用されます。また、外交員のパフォーマンスが不十分である場合に使用される、よりエキゾチックな構造(文学は豊かです)も同様です。
フォンブランド、2016

1
オープンソースライブラリを選択してください-たくさんあります。学生はソースコードやドキュメントを掘り下げることで多くを学ぶことができると思います。
ラファエル

2
@SamMおそらく「人気のあるソフトウェア」ではありませんが、フィボナッチヒープは、第2世代シーケンスのゲノムおよびトランスクリプトームアセンブリで非常によく使用されます。VelvetやSOAPdenovoなどのde novoアセンブラは、ダイクストラのすべての最短パスアルゴリズムを使用して、潜在的な読み取りエラーを検出します。
仮名

回答:


10

私の頭の上から:

最新のオペレーティングシステムはすべて、バランスのとれたバイナリ検索ツリーを使用して、プロセスの仮想メモリマップを実装します。Windowsはスプレーツリーを使用し、LinuxとOS Xは赤黒ツリーを使用し、SolarisはAVLツリーを使用します。これは、オペレーティングシステムが仮想メモリマップを(仮想アドレスで)順番に格納し、高速な挿入と削除を可能にし、スペースを割り当てることができる未使用の領域を探す必要があるためです。

最近の多くの3Dゲーム(たとえば、Unreal Engineの最新バージョンを使用するもの)は、octreeを使用して、どのオブジェクトがカメラに表示されるかを決定します。これは、どのノードがカメラの視錐台とオーバーラップするかを計算することが非常に効率的であるためです。

多くの(ほとんどではない)ルーターは、基数ツリーを使用してルーティングテーブルを実装します。重要なのはキー全体ではなくネットワークアドレスのプレフィックス(つまり最上位ビット)であることが多いためです。さらに、検索には時間がかかりますが、これはルーティングテーブルエントリの数ではなく、アドレスのサイズにのみ依存するため、タイミングの予測が容易になります。

もちろん、ハッシュテーブルはどこでも使用されます。ウイルス対策ソフトウェアはこれを使用して既知のマルウェアのデータベースを検索し、ワードプロセッサはこれを使用してスペルチェックなどを実行します。

グラフのデータ構造は、評価を実装するためにスプレッドシートで使用されます。占有されている各セルをノードと見なし、一方の値が他方の値に直接依存する場合は、セルとセルの間に弧を描きます。セル内のエントリが変更されると、グラフがトラバースされ、その変更に基づいて更新が必要なセルが決定されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.