問題タブ [data-structures]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
29332 参照

python - Pythonで最も効率的なグラフデータ構造は何ですか?

Python で大きな (10^7 ノード) グラフを操作できるようにする必要があります。各ノード/エッジに対応するデータは最小限です。たとえば、少数の文字列です。メモリと速度の点で、これを行う最も効率的な方法は何ですか?

dict の dict はより柔軟で実装が簡単ですが、リストのリストの方が高速であると直感的に期待しています。リストオプションでは、データを構造とは別に保持する必要もありますが、辞書では次のようなものが許可されます。

何を提案しますか?


はい、効率の意味をもう少し明確にする必要がありました。この特定のケースでは、ランダムアクセス検索の観点からそれを意味します。

データをメモリにロードすることは大きな問題ではありません。それは一度だけ行われます。時間のかかる部分は、ノードにアクセスすることです。そのため、情報を抽出して、関心のあるメトリックを測定できます。

各ノードをクラスにすることは考えていませんでした (プロパティはすべてのノードで同じです)。私は、誰かが共有できる同様のケースで直接の経験を持っていることを望んでいました. 結局のところ、グラフは CS で最も一般的な抽象化の 1 つです。

0 投票する
4 に答える
7907 参照

c# - C# でストリーム データをデータ構造にマッピングする

ストリームまたは配列で収集されたデータをデータ構造に、またはその逆にマッピングする方法はありますか? C++ では、これは単純に、使用したいデータ型としてストリームへのポインタをキャストすること (または逆の場合はその逆) の問題です。例: C++ の場合

受信データを読み取るときにストリーム データの品質が確かでない限り、明らかに C++ の方法はかなり安全ではありませんが、送信データの場合は非常に迅速かつ簡単です。

0 投票する
1 に答える
1054 参照

language-agnostic - バイナリ ファイル レイアウトのリファレンス

バイナリ ファイルのレイアウト構造に関する優れた情報源はどこにありますか?

BTrieveインデックス ファイルを取得したり、ヘッダーを解析したりしたい場合MP3、信頼できる情報はどこで入手できますか?

0 投票する
4 に答える
1361 参照

data-structures - 多数のノードの迅速な挿入に最適なセルフバランス BST

いくつかの情報源からいくつかのセルフバランスBSTの詳細を見つけることができましたが、さまざまな状況で (またはそれが本当に問題ではない場合) にどれを使用するのが最適かを詳述した適切な説明は見つかりませんでした。

BST1,000 万ノードを超える格納に最適な が欲しい。ノードの挿入順序は基本的にランダムであり、ノードを削除する必要はないため、最適化する必要があるのは挿入時間のみです。

これを使用して、以前にアクセスしたゲームの状態をパズル ゲームに保存し、以前の構成が既に発生しているかどうかをすばやく確認できるようにします。

0 投票する
5 に答える
8216 参照

c - C用の優れたSTLのようなライブラリ

ベクトル、両端キュー、スタック、ハッシュマップ、ツリーマップ、セットなどのデータ構造を持つCに適したライブラリは何ですか?プレーンCをお願いします。プラットフォームに依存しません。

0 投票する
5 に答える
59958 参照

c# - バイト配列からのC#のC /C++データ構造の読み取り

データがC/C++構造体からのものであるbyte[]配列からC#構造体を埋める最良の方法は何でしょうか?C構造体は次のようになります(私のCは非常に錆びています):

そして、このようなものを埋めます:

byte []配列として渡された場合、にコピーOldStuffする最良の方法は何ですか?NewStuffOldStuff

私は現在次のようなことをしていますが、ちょっと不格好な感じがします。

これを達成するためのより良い方法はありますか?


このBinaryReaderクラスを使用すると、メモリを固定して使用するよりもパフォーマンスが向上しMarshal.PtrStructureますか?

0 投票する
10 に答える
5467 参照

algorithm - グラフとツリーを使用して、どのような問題を解決またはより簡単に取り組むことができますか?

これらのデータ構造の両方で解決できる最も一般的な問題は何ですか?

次のような本についての推奨事項もあるとよいでしょう。

  • 構造を実装する
  • それらを使用するアルゴリズムの推論を実装して説明する
0 投票する
11 に答える
52301 参照

c++ - C ++でスパース配列を作成するための最良の方法は何ですか?

私は、巨大な行列の操作、特にコピュラ計算のためのピラミッド型の合計を必要とするプロジェクトに取り組んでいます。

要するに、マトリックス(多次元配列)のゼロの海で比較的少数の値(通常は1の値、まれに1を超える値)を追跡する必要があります。

スパース配列を使用すると、ユーザーは少数の値を格納し、未定義のすべてのレコードをプリセット値と見なすことができます。すべての値をメモリに格納することは物理的に可能ではないため、ゼロ以外のいくつかの要素のみを格納する必要があります。これは数百万のエントリになる可能性があります。

速度は非常に優先されます。また、実行時にクラス内の変数の数を動的に選択したいと思います。

私は現在、二分探索木(b-tree)を使用してエントリを格納するシステムで作業しています。より良いシステムを知っている人はいますか?

0 投票する
5 に答える
1593 参照

python - シーズン/ショー/エピソード データを抽象化する最良の方法

基本的に、私は Python で www.thetvdb.com への API を書きました。現在のコードはここにあります。

要求に応じて API からデータを取得し、何らかの方法でデータを保存し、次のようにして利用できるようにする必要があります。

Tvdb()クラス内でこのデータを抽象化する「最良の」方法は何ですか?

Dict()私は元々、サブ辞書を自動的に作成する拡張機能を使用していました(そのため、何もしx[1][2][3][4] = "something"なくても実行できますif x[1].has_key(2): x[1][2] = [])。

次に、次のようにしてデータを保存しましたself.data[show_id][season_number][episode_number][attribute_name] = "something"

これは問題なく機能しましたが、 が存在するかどうかを確認する簡単な方法がありx[3][24]ませんでした (そのため、season_not_found 例外を発生させることができませんでした)。

現在ShowContainerShow、 、Seasonの4 つのクラスを使用していEpisodeます。それぞれが非常に基本的な辞書であり、追加機能を簡単に追加できます (たとえば、search()関数 on )。Show()それぞれに__setitem____getitem_およびがありhas_keyます。

これはほとんど問題なく動作します。そのシーズンがself.dataディクテーションに含まれているかどうかをショーで確認できます。そうでない場合は、raise season_not_found. Season()そのエピソードなどがあるかどうかもチェックできます。

現在の問題は、辞書として提示されていますが、すべての機能を備えているわけではありません.and関数をオーバーライドしているため、__getitem__誤っ__setitem__て再帰的に呼び出すのは簡単です(したがって、クラスを__getitem__拡張すると問題が発生するかどうかはわかりません) Dict)。

もう1つの小さな問題は、dictにデータを追加することは、古いDict方法(self.data[seas_no][ep_no]['attribute'] = 'something'. _setItemおよびを参照してください_setData。現在のところ読み取り専用の API インターフェースにすぎないため (したがって、API のユーザーはデータを取得するだけで、それ以上追加する必要はありません)、それほど悪くはありませんが、ほとんど... エレガントではありません。

一連のクラスシステムがおそらく最良の方法だと思いますが、データを保存するためのより良いアイデアを持っている人はいますか? ShowContainerまた、 /etc クラスを拡張するDictと問題が発生しますか?

0 投票する
5 に答える
477705 参照

javascript - JavaScriptのグラフ視覚化ライブラリ

有向グラフを表すデータ構造があり、それをHTMLページに動的にレンダリングしたいと思います。これらのグラフは通常、ほんの数ノードであり、おそらく最上部では10ノードであるため、パフォーマンスはそれほど重要ではないと思います。理想的には、ユーザーがノードをドラッグして手動でレイアウトを微調整できるように、jQueryにフックできるようにしたいと思います。

注:チャートライブラリは探していません。