問題タブ [graph]

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 投票する
6 に答える
15544 参照

sql - 再帰的な CTE がノードを複数回訪問するのを防ぐ

次の単純な DAG を検討してください。

そして、これを説明するテーブル #bar (私は SQL Server 2005 を使用しています):

ここで、最初と最後のエッジ、つまり 1->2 と 3->4 を選択する別の任意の基準があるとします。これらを使用して、グラフの残りの部分を見つけたいと思います。

次のように再帰的な CTE を記述できます ( MSDNの用語を使用しています)。

ただし、これによりエッジ 3->4 が 2 回選択されます。

クエリが既に記述されているサブグラフに再帰するのを防ぐにはどうすればよいですか? クエリの「再帰メンバー」部分で、これまでに再帰 CTE によって取得されたすべてのデータを参照できれば、これを実現できます(そして、既にアクセスしたノードを除く再帰メンバーを示す述語を提供できます)。ただし、再帰メンバーの最後の繰り返しで返されたデータにのみアクセスできると思います。

このような繰り返しが多い場合、これはうまくスケーリングしません。この不必要な追加の再帰を防ぐ方法はありますか?

ステートメントの最後の行で「個別選択」を使用して目的の結果を得ることができることに注意してください

Edit -hainstech は、述語を追加して再帰を停止し、開始セットに明示的に含まれていた再帰パスを除外することを提案しています。つまり、 recurse onlywhere foo.child_id not in (1,3)です。上記のケースでこれが機能するのは、単純だからです。すべての繰り返されるセクションは、ノードのアンカー セット内で始まります。そうでない可能性がある一般的なケースは解決しません。たとえば、エッジ 1->4 および 4->5 を上記のセットに追加することを検討してください。提案された述語を使用しても、エッジ 4->5 は 2 回キャプチャされます。:(

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

ruby-on-rails - RubyOnRailsアプリケーションでのグラフの生成

Railsアプリに最適なグラフライブラリ/プラグイン/宝石などを他の人が見つけたのではないかと思います。

私が最もよく言うとき、私は実装の容易さとグラフをカスタマイズする能力を意味すると思います。

私は以前にopenflashchart2を使用し、それが持つ全体的な外観/効果が大好きでしたが、必要に応じてすべてをカスタマイズするのは時々苦痛でした。私をより良い方向に向けるための経験や提案はありますか?どうもありがとう。

0 投票する
3 に答える
17906 参照

python - PythonASCIIグラフ描画

PythonでASCIIグラフ(コンソールで使用)を描画するためのライブラリを探しています。グラフは非常に単純です。これはパイプラインのフローチャートにすぎません。

NetworkXとigraphを見ましたが、ASCIIに出力する方法がわかりませんでした。

これは経験がありますか?

どうもありがとう!

パトリック

編集1:私は実際に必要なことを実行しているライブラリを見つけましたが、それはperl Graph::Easyにあります。私はPythonからコードを呼び出すことができましたが、私はそのアイデアがあまり好きではありません...それでもPythonソリューションを探しています:)

0 投票する
2 に答える
922 参照

python - グラフライブラリ(NetworkXなど)はPythonの問題に対する正しい解決策ですか?

Pythonでデータ駆動型のレガシーアプリケーションを書き直しています。プライマリテーブルの1つは「グラフテーブル」と呼ばれ、有向グラフのように見えるので、NetworkXパッケージを調べて、グラフテーブルの操作に使用する意味があるかどうかを確認し、実際に実装しました。複雑な配列のセットではなく、グラフとして表示されます。

ただし、このテーブルの使用方法が実際のグラフ操作ライブラリにあまり適していないかどうか疑問に思い始めています。NetworkX機能のほとんどは、グラフ自体を何らかの方法で特徴付けたり、2つのノード間の最短距離を決定したりすることを目的としているようです。それは私のアプリケーションには関係ありません。

ここで実際の使用法を説明できれば、誰かが私に何かが足りないのかどうかを教えてくれることを願っています-私はこれまでグラフを実際に操作したことがないので、これはかなり可能です-または他の何かを探索する必要があるかどうかデータ構造。(もしそうなら、あなたは何を提案しますか?)

この表は主に、ユーザーが指定したキーワードの文字列をコンポーネントの順序付きリストに変換するために使用します。これはユースケースの95%を構成します。他の5%は、「部分的なキーワード文字列を指定し、可能なすべての補完を提供する」および「すべての可能な有効なキーワード文字列を生成する」です。ああ、そして奇形に対してグラフを検証します。

これが表の編集された抜粋です。列は次のとおりです。

キーワードinnodeoutnodeコンポーネント

キーワード文字列「acs、wfc1、f555w」とこのテーブルが与えられると、トラバーサルロジックは次のようになります。

  • ノード1から開始します。「acs」は文字列に含まれているため、ノード20に移動します。

  • ノード20に提示されたキーワードはいずれも文字列に含まれていないため、デフォルトを選択し、hst_otaを選択して、ノード30に移動します。

  • 「acs」は文字列に含まれているため、ノード10000に移動します。

  • 「wfc1」は文字列に含まれているため、ノード10100に移動します。

  • 唯一の選択肢。ノード10101に移動します。

  • 選択肢は1つだけなので、acs_wfc_im123を選択して、ノード10130に移動します。

  • 「f555w」は文字列に含まれているため、acs_f555wを取得して、ノード10140に移動します。

  • 選択肢は1つだけなので、ノード10300に移動します。

  • 「wfc1」は文字列に含まれているため、acs_wfc_ebe_win12fを取得して、ノード10310に移動します。

  • 選択肢は1つだけなので、acs_wfc_ccd1を選択して、ノード10320に移動します。これは存在しません。これで完了です。

したがって、コンポーネントの最終的なリストは次のようになります。

このテーブルのインノードとアウトノードだけからグラフを作成することはできますが、複数の可能性に直面したときにどちらを選択するかを決定するキーワード情報を組み込む方法を一生理解できませんでした。

他のユースケースの例を追加するために更新されました。

  • 文字列"acs"が与えられた場合、可能な正当な次の選択肢として( "hrc"、 "wfc1")を返します。

  • 文字列「acs、wfc1、foo」を指定すると、未使用のキーワードが原因で例外が発生します

  • 可能なすべての有効な文字列を返します。

    • cos
    • acs、hrc
    • acs、wfc1、f606w
    • acs、wfc1、f550m
    • acs、wfc1、f555w
  • すべてのノードに到達できること、およびループがないことを検証します。

これらの最初の2つについてはAlexのソリューションを微調整できますが、最後の2つについてはそれを行う方法がわかりません。

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

windows - Windowsでのプロフェッショナルグラフの生成

Windowsでは、主流のプログラミング言語(C#、VB.Net、Java、PERLなど)を使用してプロフェッショナルなグラフを生成することを検討しています。私がこれまでに見つけた最高のフリールックグラフは、Microsoft Chart Controlsfor.NETです。他にどのようなグラフコントロール/モジュールを提案しますか?

注:要件に無料で追加されました。

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

algorithm - グラフ: O(|V|) 未満でシンクを見つける - またはそれができないことを示す

隣接行列nとしてノードを持つグラフがあります。

シンクを短時間で検出することは可能O(n)ですか?

はいの場合、どのように?いいえの場合、それをどのように証明しますか?

シンク頂点は、他のノードからの入力エッジを持ち、出力エッジを持たない頂点です。

0 投票する
3 に答える
754 参照

javascript - 領域を描画するためのJavascriptグラフ作成ライブラリ

熱心なウィンドサーファーとして、私は次の数週間がどれほど風が強くなるかに興味があります。そのために、私は人気のある天気予報サイトをスクレイプし(個人使用のみ-情報などを中継しない)、データを1つのグラフにまとめて、いつ行く価値があるかを簡単に確認できる小さなアプリを作成しています。アウト。

バックエンドは機能していますが、データを表示する方法が必要です。私のスクレーパーは現在、一般的な風の強さと突風の強さを示す2つの一連のデータを提供しています。次に実行したいのは、これら2つのデータセットをグラフの線のペアとして表示し、それらの間の領域に陰影を付けることです。

データを表示するためにflotライブラリのようなものを使用することを検討していました。唯一の問題は、2本の線の間の領域をシェーディングする方法がわからないことです。

誰かがflotや他のライブラリやグラフ作成のテクニックでこれを行う方法の提案を持っているなら(私は私のサーバーにDJangoを持っているので、pythonicやjavascriptyなら何でもいいはずです)、私はそれらを聞いてみたいと思います。理想的には、これは画像を提供する必要をなくすためのjavascriptソリューションになります。

0 投票する
3 に答える
3383 参照

opengl - OpenGLで「点のような」形を描く、ズームに無関心

私は Qt および QWt3D プロット ツールを使用しており、それらを拡張して必要な 3 次元および 2 次元プロット機能を提供しているため、その過程で OpenGL について学習しています。

現在、OpenGL を使用して点をプロットできますが、円 (またはアンチエイリアシングをオフにすることで「正方形」) としてのみプロットできます。これらのポイントは、私が好きなように動作します。つまり、ズームインしてもサイズは変わりませんが、ズームやパンなどに応じて x/y/z 位置が適切に移動します。

私ができるようにしたいのは、無数の形状 (^、<、>、*、. など) を使用して点をプロットすることです。私が OpenGL について理解していることから (これはあまり多くありません)、OpenGL はすべてを「実際の」3D オブジェクトとして扱うため、これを達成するのは簡単ではありません。サイズ。

いくつか読んだ後、この問題には(少なくとも)2つの解決策があると思います。

  1. OpenGL テクスチャを使用します。これは難しくないように思えますが、拡大するとテクスチャ イメージが大きくなったり小さくなったりすると思いますが、そうですか?

  2. OpenGL ポリゴン、ラインなどを使用して、*、三角形などを描画します。しかし、ここでも同じ問題に遭遇します。ズーム時に OpenGL が「ポイント」のサイズを変更しないようにするにはどうすればよいですか?

ポイントが同じサイズに保たれるように、ユーザーがズームまたはパンするたびに、単に弾丸を噛んでデータセット全体を再描画するソリューションはありますか? オブジェクトのサイズを再計算しないようにopenGLに指示する方法はありますか?

これが OpenGL ドキュメントのどこかにある場合は申し訳ありませんが、見つかりませんでした。

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

c# - C#用のグラフビューア/ドロワー?

グラフを描画/視覚化するための優れたC#ライブラリはありますか?線グラフなどではなく、ノードパスの視覚化について話しています。(できればネイティブで、pstricksなどのラッパーではありません)ありがとうございます