問題タブ [ogdf]
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.
c++ - OGDF で GraphCopy::initByCC を使用して GraphAttributes を維持する
OGDF を使用して、GML ファイルからロードされたグラフに対して何らかの処理を実行しようとしています。これらのグラフは、ノード ラベルが維持されている場合にのみ意味があります。残念ながら、OGDF ではラベルなどのノード属性を保持するのは簡単ではありません。それらは と呼ばれる別のデータ構造で保持されるからGraphAttributes
です。私の問題は、GraphAttributes
ノード ラベルをノードインデックスに関連付けることです。これは、使用する必要がある一部のグラフ変換によって維持されません。
グラフで実行する必要がある変換の 1 つは、接続された各サブグラフを GML ファイルに分割することです。グラフとそのノード ラベルの読み込みは簡単です。
同様に、OGDF はCCsInfo
、グラフの接続されたサブグラフを見つけるためのクラスを提供します。これらのサブグラフを個別に操作したいので、GraphCopy::initByCC
メソッドを使用して個別のGraph
インスタンスを作成します。
これは機能しcopy
、接続されたサブグラフのノードとエッジのみが含まれます。ただし、コピー内のノードのインデックスは、元のグラフ内のノードのインデックスとは異なります。つまり、attributes
オブジェクト内のノードへのラベルのマッピングは、 内のノードには適用されませんcopy
。
attributes
コピーされた接続されたサブグラフのノードに正しいラベルを取得できるように、オブジェクトに対して同じ変換を実行する方法はありますか?
c++ - OGDF PQTree: 葉を追加するには?
OGDF を使用して、PQTree を作成および初期化しました。初期化は、ノード a がルート、b、c、および d が a の葉である 3 つのエッジで行われました。ここで、計算後、リーフ e、d、および f をリーフとして b に追加する必要があります。しかし、問題は b がリーフであるため、子もリーフも受け入れないことです。コードはこちら。std::cout としては、追加されたのですが、writeGML を使用して GML ファイルに書き込むと、ノードを追加する前と追加した後で違いがなく、ツリーに含まれていません。私は、それは PQLeafKey のためだと思います。非リーフ エッジ/ノードの場合は PQNodeKey である必要があります。ドキュメントによると、ablk->nodePointer() は、PQNode から派生した PQLeaf を返す必要があり、PQNode から派生した PQInternelNode とは「互換性」がありません。しかし、別の方法で追加する方法がわかりません。コード:
c++ - GraphAttributes 関数呼び出しでの OGDF segfault
私は OGDF を使い始めたばかりで、OGDF Web ページの How-Tos にあるいくつかの例を実行してコツをつかもうとしています。コードはコンパイルされますが、ノードで GraphAttributes 関数を呼び出そうとすると segfault が発生します。
ここに私のコード:
コメントで言及した行をコメントアウトすると、segfault が発生し、プログラムは segfault なしで正常に実行されます。次に、書き出された .gml ファイルを調べると、ノードには x 座標と y 座標があります。次のメッセージが表示されます。
.idNode(v) のように、GraphAttributes で別の関数を呼び出したときにも発生します。
なぜこれが起こっているのか、誰かが私を正しい方向に向けることができますか? これがどこから来ているのか、今では絶対に理解できません.OGDFは、コードを見て理解するには大きすぎます. (少なくとも私にとっては)
事前にどうもありがとうございました!