問題タブ [edge-list]

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

java - JavaGraphクラスの間接接続テストを実装する

グラフのデータ構造を表すクラスをJavaで書いています。これは、無向、無加重グラフに固有であり、その目的は主にエッジテスト(ノードAがノードBに直接または間接的に接続されている)を目的としています。

indirectEdgeTestメソッドの実装についてサポートが必要です。以下のコードでは、このメソッドにコメントを付けただけで、falseを返しているので、コードはそのままコンパイルされます。

アルゴリズムを考え出すのに少し時間をかけましたが、これよりも単純なものは見つからないようです。必要以上に複雑になっているのではないかと心配しています。

  • 最初に直接接続をテストします
  • ノードaからノードbへの直接接続が存在しない場合:
    • ノードaに接続されているすべてのエッジについて:
      • エッジa->iを含まない新しいグラフを作成します
      • ノードiとbの間の間接接続について新しいグラフをテストします

擬似コードまたは実際のJavaコードのいずれかがあなたの答えに歓迎されます。これが私が持っているコードです:

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

python - 指定されたルールでエッジの重みを変更するには?

私は加重グラフを持っています:

ノード リストを取得します。

このルールで各エッジの重みを変更したい:

ノード 5 などのノードを 1 つ削除する(4, 5)と、明らかにエッジ(5, 6)が削除され、各エッジの重みは次のようになります。

このアルゴリズムの書き方

path_graphはほんの一例です。グラフの種類に合わせたプログラムが必要です。さらに、プログラムは反復可能である必要があります。つまり、元のグラフから毎回 1 つのノードを削除できます。

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

python - GraphVizで曲線の代わりに長方形スタイルのエッジを生成するにはどうすればよいですか?

Pydot Pythonライブラリを使用して、ドット言語でGraphviz画像を生成しました。

生成されたGraphvizグラフ

しかし、エッジは曲線で描画されており、この種の出力が必要です。

期待されるGraphviz

Graphvizを使用してソリューションを提供してください。

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

r - グラフが空の場合、R igraph write.graph()エッジリスト

Rでパッケージ'igraph'を使用し、関数を呼び出します。

を使ってグラフを思い出せば

グラフは空ですが、頂点もありません。

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

c++ - スキャンラインポリゴンフィルアルゴリズム

スキャンラインベースのポリゴン塗りつぶしアルゴリズムを実装しています。私は一般的なアルゴリズムを知っており、現在C++で実装しようとしています。

エッジテーブルをアクティブなエッジリストに実装する必要があります。

アクティブエッジリストをベクトルにして、動的に簡単に挿入および削除できるようにしました。

ただし、エッジテーブルはもう少し混乱します。

ベクトルの配列を使用してエッジテーブルを実装しようとしています。ベクトルには、作成した構造体が含まれます。

これが構造体です。

渡された頂点の配列を反復処理するforループがあり、バケットを作成して、エッジのyminインデックスでエッジテーブルにバケットを挿入します。

私の問題は、エッジテーブルをループして個々のバケットにアクセスするのに苦労していることです。

バケットのベクトルの配列の宣言は次のとおりです。

これが、アイテムを印刷しようとしてエッジテーブルを反復処理するforループです。インデックスにイテレータと通常のintを使用しようとしましたが、各バケットの値を出力しようとするとどちらも機能しません。

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

prolog - JIPrologでフリーズを使用する

JIPrologでグラフ検索をしたいです。以下の例はmemberchk、がなくても正常に機能しますが、サイクルのあるパスが返されます。これは望ましくありません。しかし、私がそれを含めると、おそらく無限の検索のために、Prologがフリーズします。

この回答で、理由(エッジのリストはまだインスタンス化されていません)と解決策のヒント(を使用freeze/2)を見つけました。ただし、freeze/2私が使用しているJIPrologでは機能しません。誰かが私を別の解決策に助けることができますか?

編集:一般的なグラフの場合、この例のように、代わりにノードを追跡することが解決策になることはわかっていますが、私の特定のアプリケーションでは、「ノード」もエッジある可能性があるため、チェックしたいのは訪問されたノードではなく、訪問されたエッジ。

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

python - igraph を使用して加重エッジリストをインポートする

Edgelist 形式のネットワークを表す次の txt ファイルがあります。

最初の 2 つの列は、通常、どのノードが他のどのノードに接続されているかを表します。

3 番目の列は重みを表し、各ノードが他のノードと接触した回数を表します。

ドキュメントを検索しましたigraphが、txt などの標準ファイル形式をインポートするときに重みの引数を含める方法については言及されていません。

ファイルはここからアクセスできます。これは私が使用しているコードです。

このコードは、3 番目の列を重量以外のものとして扱います。

誰かが解決策を知っていますか?

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

r - Rのマトリックスからエッジリストを作成するには?

xこの関係は、次のようなマトリックスとして表されます。

エントリは、それらが持っている接続の数を参照します。

誰かがそれをエッジリストとして書く方法を教えてもらえますか?

私はそれをエッジリストとして書きたいと思います:

しかし、このエッジ リストでネットワーク プロットを作成できるでしょうか?

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

r - igraph: 各頂点の中心性測定と各頂点の属性を含む csv ファイル

私は2つのデータベースを持っています:

  1. エッジリスト、
  2. 属性を含む頂点リスト (地理的位置、アクターのカテゴリ)

データベース db のエッジのリストからグラフ G を作成します。

そして、中心性の尺度(次数、中間性)を計算しました。

そして、各頂点のすべての属性を含む他の CSV テーブルから頂点属性を取得できます。

しかし、頂点リストからエッジリストにある頂点に各頂点の属性を与える方法が見つかりません (頂点リストには、エッジリストよりも多くの頂点があります)

そのため、頂点 ID、頂点名、頂点属性、頂点度、頂点間などの列を含む最終的な csv ファイルを作成できません。Id、名前、および次数と中間性を使用してこのようなファイルを作成できますが、各頂点の属性を指定する方法が見つかりません。

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

python - iGraph Python、エッジ リストをタプルに変換して add.edges

50 個のノードと 100 個のエッジを持つグラフ G1 があります。すべてのエッジが重み付けされます。エッジのリストを作成し (定義済みの順序で並べ替え、大きな値を持つ特定のエッジを削除)、次のようにインデックスを付けました。

別のグラフ G2 に (計算時間を節約するために) 10 個のバッチでエッジを追加したいのですが、add.edges は頂点ペアのタプル リストが必要なようです。そう、

  1. 上記の Edge リストを [(40,2),(10,1),(10,11),(0,0),...] などのタプル リストに変換するにはどうすればよいですか。G1.es[edge].tuple でループを試してみましたが、iGraph は [edge] 変数を属性として読み取りますが、G1.es[75].tuple と書くだけでは問題なく動作します。

  2. G1 から重みを検索して、10 個のバッチで G2 に追加するにはどうすればよいですか?