問題タブ [lemon-graph-library]

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

r - Rcpp を使用した R 上のレモン グラフ ライブラリ

この答えは、いくつかのことが関係しているため、少し複雑だと思います。

特にグラフ(ネットワーク)を使用して、Rで高性能な計算を行いたいです。Rパッケージとしてigraphはとてもいいです。しかし、R は遅いので、計算コストの高いルーチンを C++ (おそらく C) でコーディングしたいと考えています。igraph C ライブラリを調べてみたところ、扱いが少し面倒であることがわかりました。また、 Boost Graph Libraryを調べて、習得が難しいという記事を読みました。それで、最終的にレモングラフライブラリを見つけました。これは C++ で書かれており、とても使いやすそうです。

そこで、公式ページで推奨されているように、Lemon Graph Library をインストールしました。次に、Rcppinlineパッケージを使用して、R から Lemon Graph C++ コードを実行するように管理します。しかし、基本的に私はこれを置く:

myexample_inline.R ファイルで、R コンソールを実行して次のように記述します。

だからそれは動作します!!! しかし今、私は次の問題を抱えています。たとえば、レモングラフオブジェクトのプロパティを計算するC++関数(double func1(g)など)を作成するとします。インライン コードからその関数を呼び出すにはどうすればよいですか? func1() をテンプレート関数として作成し、cxxfunction() のインクルード フィールドに配置する必要がありますか?

基本的に: R にインライン化された別の C++ 関数から、R にインライン化された C++ 関数を呼び出す方法がわかりません。それは可能ですか? インライン コードを使用しない別の方法はありますか?

Rcppモジュールを使用してそれを行うことができるかもしれませんが、これを行う方法を(まだ)理解できませんでした。モジュールの動作に問題があります。引き続き挑戦していきますが、ここから何かヒントが得られるかもしれません。

また、(私の最初の) パッケージを開発する可能性についても考えました。しかし、Lemon Graph C++ コードがこの方法でヘッダーを呼び出すという問題がありました (たとえば)。

つまり、Lemon Graph Library のインストールは避けられないということです (少なくとも私はそう信じています)。Lemon Graph Library の R パッケージを作成したい場合は、すべてのコードをもう一度「書き直す」必要があります!!! したがって、これは私の主なオプションではありません。

よろしくお願いします

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

c++ - レモングラフライブラリC++-有向グラフ

レモンには検索アルゴリズムと最短経路アルゴリズムが含まれているため、パスファインディングを処理するためにレモンを探しています。

問題は、私はレモンがどのように機能するかを理解するのに最初から立ち往生していて、彼らにはチュートリアルがありますが、質問するフォーラムがありません。

有向グラフについての私の理解は、あなたにはノードがあり、それは別のノードにリンクすることもリンクしないこともでき、それからあなたはそれに重みを持っているということです。

例:

この場合、AB1の重みでC接続され、何にも接続されません(したがって、一度到達するCとスタックします)、1の値でB接続し、5の値で接続します。ABC

チュートリアルでは、次のようなことを行うように指示されています。

これgで、3つのノードを持つグラフができました。それで?接続情報と重み値をどこに/どのように追加しますか?

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

c++ - レモングラフライブラリでのダイクストラのアルゴリズムの使用

レモングラフライブラリ(レモンのダイクストラのhttp://lemon.cs.elte.hu/pub/tutorial/a00009.html )からダイクストラのアルゴリズムを実行するために必要なパラメータのいくつかについて質問があります。アルゴリズムを実行するには、グラフがどこにあるか、開始ノードがどこにあるか、宛先ノードがdijkstra(g, length).distMap(dist).run(s,t);どこにあるかなどを記述します。私の質問は、とは何であり、それらはどのように使用されるかです。ありがとう!gstlengthdist

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

c++ - Lemon Graph Library C++ - ループを使用した addNode

C++ でループを使用してレモン グラフを作成する可能性はありますか?

私の問題:

  1. 列を持つデータベース テーブル (t_nodes と呼びましょう): node
  2. グラフ情報を含むデータベース テーブル (t_edges と呼びましょう): ノード2 | エッジスコア
  3. 10000 件以上のエントリ

私の望む結果:

  1. 有向グラフ: 例: N1 -> N2; N2 -> N3; N3 -> N1

私の質問

  1. テーブル内の各エントリに対してループを使用してノードをグラフに追加することは可能ですか?t_nodes

    • これまでのところ、各ノードを手動で追加する実装を見つけただけです (以下の例を参照)。
    • ループを使用してレモン グラフにノードを追加する機会は本当にないのでしょうか?
  2. に記載されているすべての関係に対してループを使用するにはどうすればよいt_edgesですか?

お時間をいただきありがとうございます。どんな助けでも大歓迎です!


週末に自由な時間を過ごし、自転車で時間を過ごした後、解決策を見つけました:)

私の解決策:

レモンは、グラフ内のエッジへの追加情報をサポートする可能性を提供しなかったようです。したがって、この情報を格納するための追加のベクトルを作成しました。ただし、目的によっては、ノードへのアクセスにハッシュマップを使用する方が賢明な場合があります。

開発されたサンプル スクリプトを見てください (非常に些細なことです ;) )


Lemon C++ コードの例 (参照: http://lemon.cs.elte.hu/pub/tutorial/a00022.html ):

0 投票する
0 に答える
185 参照

c++ - レモンの自動座標.epsエクスポート

レモンのチュートリアルでは、すべての例でグラフを描画するときに座標を指定しています。

座標を指定せずにグラフの画像を.epsファイル(またはその他)にエクスポートする可能性はありますか?(私は自動配置を意味します)

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

struct - 固定サイズの Eigen オブジェクトをメンバーおよびコンテナーとして持つ構造

Lemon でエッジ マップとして使用するメンバーとして、固定サイズの Eigen オブジェクトを含む構造があります。

コードは正常にコンパイルされますが、実行時エラーが発生します。

この問題を解決するにはどうすればよいですか? EIGEN_MAKE_ALIGNED_OPERATOR_NEW(マクロは既に入れています。)

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

cmake - CMake エラー: TARGETS に共有ライブラリ ターゲットの LIBRARY DESTINATION が指定されていません

CMake を使用してオープンソース プロジェクトをビルドする場合 (私の場合は、レモン グラフ ライブラリ)、次の方法で共有ライブラリをビルドしようとすると、このエラーが発生しました-DBUILD_SHARED_LIBS=1

このエラーの原因と修正方法を教えてください。

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

c++ - LEMONグラフライブラリでのエッジのノードの検索

私がエッジを持っているとしましょう。接続している2つのノードを簡単に見つけるにはどうすればよいですか?LEMONのドキュメントは非常にまばらで、これに関する情報は見つかりませんでした。

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

c++ - 要素をコピーせずにレモン グラフ ライブラリ マップに挿入する

私はLemon Graph Libraryを使用しており、アイテムをコピーしたり割り当てたりせずにレモン マップに追加したいと考えています。コードは次のとおりです。

ここでの主な問題は、コンストラクターでの初期化が必要であり、コピー コンストラクターまたは代入演算子を持たない CrossRefMap です。代わりにこの構造体へのポインターを使用できますが、この解決策では満足できません。どうすればこの問題を解決できますか? 任意の提案をいただければ幸いです。;)