問題タブ [connected-components]

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 に答える
506 参照

prolog - Prolog でグラフの連結成分を取得する

論理プログラミングで悩んでいます。私はこの問題を抱えています。あなたの何人かが私を助けてくれることを願っています。不連続グラフは、事実によって次のように表されます。

したがって、2 つの別個のグラフ コンポーネントがあります。リストで表される出力のすべての個別のコンポーネントが必要です。したがって、グラフに 3 つの個別のコンポーネントがある場合は、3 つのリストがあります。上記の例では、期待される出力は[[0,1,2],[3,4,5]]です。

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

c++ - OpenCV 3.0 接続されたコンポーネント、正しく動作しない

次のコードがあります。これは、openCV 3.0 で接続されたコンポーネント機能を使用する方法を学習するための単純なテスト プログラムです。

入力イメージは、白い背景に 2 つの赤い正方形があるカラー イメージです。イメージが正しく読み込まれ、グレースケール イメージとして表示されます。 プログラム出力

問題は、私が何をしても、パラメータに応じて、出力は常に黒または白の空白の画像convertToです。

ただし、によって返される値connectedComponentsは 2 です。

私はミキによって提案された完全なコードを試しました、私はこれを得ます:

ここに画像の説明を入力

問題は、接続されたコンポーネントが正しく機能していない可能性があると考えました。

デスクトップにある写真を試してみたところ、最終的に何かが得られました:

ここに画像の説明を入力

ただし、今回のソース画像は人、建物、車などの通常の写真であり、出力のほとんどはまだ空白です。理由を知っている人はいますか?

追加後image = image < 200;

ここに画像の説明を入力

を使用applyColorMap(seeMyLabels, seeMyLabels, COLORMAP_JET);すると、ラベルの画像はほぼ黒のグレースケールから青の色合いになります

ここに画像の説明を入力

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

python - Python接続コンポーネントを使用して日付に基づいてレコードを結合する方法は?

次のようなレコード (person_id、start_date、end_date) のリストがあります。

各個人のレコードは、start_date の昇順で並べ替えられます。日付に基づいてレコードを結合し、最初の期間の start_date を開始日として記録し、最後の期間の end_date を終了日として記録することにより、期間が統合されます。ただし、ある期間の終わりから次の期間の開始までの時間が 32 日以内の場合は、これを連続した期間として扱う必要があります。それ以外の場合、これを 2 つの期間として扱います。

Python 接続コンポーネントを使用してこれを行う方法はありますか?

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

c++ - C++: 別のベクトルからのオブジェクトへのポインターのベクトル

これに似た2つのクラスがあります:

主な実装では、次のようなことをしています。

基本的にはこのようなものです。1 つの B オブジェクトに多数の A オブジェクトが割り当てられ、これらの A オブジェクトはそのポインター ベクトルにポインターとして格納されます。さらに、これらの各 A オブジェクトは、それらが属する B オブジェクトへのポインターを取得します。コンテキストについては、基本的に、(画像セグメンテーション用の) ランレングス エンコーディングを使用して連結コンポーネント アルゴリズムを実行しています。ここで、クラス A は線分であり、クラス B は画像内の最終オブジェクトです。

したがって、クラス B のベクトルのポインターはすべて、通常のベクトルに格納されているオブジェクトを指します。これらのオブジェクトは、通常のベクトルが範囲外になったときに削除する必要がありますよね? クラス B のようなポインタのベクトルは、通常、手動のデストラクタを記述する必要があると読みましたが、ここではそうではないと思います...

私が質問している理由は、もちろん、私のコードがクラッシュし続けるからです。Asus Xtion Pro カメラを使用して画像を取得し、すべての画像に対してアルゴリズムを実行しています。奇妙なことに、カメラを少し強く振るとプログラムがクラッシュします。カメラが静止しているか、少しだけまたはゆっくりと動かされている場合、何も起こりません。また、別のアルゴリズム (これも接続されたコンポーネントですが、ランレングス エンコードを使用せず、ポインターも使用しません) を使用すると、カメラをどれだけ振っても何もクラッシュしません。また、デバッグ モード (リリース モードよりもはるかに低速) でも、クラッシュは発生しませんでした。

クラスBでポインタベクトルのデストラクタを作ってみたのですが、「ブロックは有効です」というエラーになったので、何かを2回削除したのでしょう。また、すべてのポインターを c++11 std::shared_ptr に置き換えようとしましたが、非常に不規則な動作しか発生せず、カメラを振るとコードがクラッシュしました。

私は基本的に、メモリ リークとポインタ処理に関して、上記のコードが問題ないように見えるかどうか、またはクラッシュにつながる可能性のあるコードに誤りがあるかどうかを知りたいだけです。

編集(解決済み):解決策(受け入れられた回答を参照)は、実行時にベクトル「listOfB」のサイズが変更されないようにすることでした。たとえば、「reserve()」を使用して十分なスペースを確保することでした。これを行った後、すべてがうまくいきました!ベクトル 'listOfB' が (push_back() によって) サイズ変更されると、その中の B インスタンスの内部メモリ アドレスも変更され、A インスタンス (B インスタンスを指す) のポインタが現在に戻るため、明らかに機能しました。間違ったアドレスを指す - その結果、問題が発生し、クラッシュにつながります。

カメラの揺れについて、明らかに、カメラを振ると、セグメント化する要素が多く、非常にぼやけた写真になり、オブジェクトの数が増えます (つまり、listOfB に必要なサイズが大きくなります)。というわけで謎解き!どうもありがとう!:-)

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

image - 画像をバイナリに変換

画像の連結成分を見つけたい。私は全くの初心者です。この目的のために、誰かが私にいくつかのチュートリアルへのリンクを教えてくれますか? また、バイナリ イメージとは何ですか。この用語はどういう意味convert image to binary imageですか? 私はC#で働いています。

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

c++ - 無向グラフの連結成分の数を見つける

ユーザーは頂点の数 ( n ) を入力し、次に - 次のn行で - 頂点がどのように接続されているかを入力します。つまり、i番目の行の番号xは、頂点iが頂点xに接続されていることを意味します (グラフは無向です)。 . タスクは、このグラフで接続されたコンポーネントの数を見つけることであり、私のコード-何らかの理由で見つけることができません-間違った値を出力します(たとえば、入力4 2 1 2 4では、私のコードは代わりに4を出力します2)。どんな助けでも大歓迎です。

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

orientdb - OrientDB: 訪問中に Connected Components の値を見つける

Transaction 、 Address 、および ValueTx(Edge) の 3 つの主要なクラスを持つスキーマがあります。

時間の範囲内で接続されたコンポーネントを見つけようとしています。

今、私はこれに基づいてこのクエリを実行しています ( OrientDB: connected components OSQL query ):

そして、これは各トラバーサルの「頭」を取り除き、それから別のDFSを実行して、検索したい接続されたコンポーネントのすべてのノードとエッジを取得できます。

上記のクエリを使用して、接続されたコンポーネント内のトランザクション数とそれらの値の合計を取得するにはどうすればよいですか? (tx の値はクラス Transaction のプロパティです)

私は次のようなことをしたい:

しかし、もちろん機能していません。最後のヘッドとすべてのトランザクションの合計を含む 1 行のみを取得します。

前もって感謝します。

編集:

これは私が探しているものの例です:

接続されたトランザクション

そこにあるすべてのトランザクションは同じ高さの範囲内にあります: 私のクエリ (投稿の最初のもの) を使用して、複数のアドレスを介してリンクされているトランザクションの各グループの最初のノードを取り除きます。例:

私が取得しようとしているのは、それが属するグループのトランザクションの総数(トランザクションのみをアドレス指定するのではなく)とすべてのトランザクションの値の合計(クラストランザクション内の valueTot に格納されている) を含むすべての最初のノードのリストです。 .

Edit2:これは私がテストを行っているデータセットです:主な問題は、私が以前に試していた多くのデータとアプローチを持っていることです(すべてのリッドから別のSQLクエリを作成します)それは非常に遅いです.より速い方法。Edit3: これは更新されたサンプル db です:ダウンロード (注: 他のものよりも大きいことに注意してください)

私のシステムでのこのクエリは、結果セットを制限した場合でも約1分かかるため、インデックスを使用していないトランザクションを選択する内部クエリに問題があると思います...何か考えはありますか?