3

OPTICS クラスタリング アルゴリズム用に順序付けられたシード オブジェクト (またはオブジェクトのインデックス) を配置する優先キューを R で構築する必要があります。

  • 1 つの可能性は、配列表現を使用してヒープを使用して実装し、各挿入およびキーの呼び出しでヒープ配列を渡し、変更された配列を返し、呼び出し元の関数で再割り当てすることです。その場合、再割り当て操作によってパフォーマンスが非常に低下し、1 つの挿入操作または減少操作が実行されるたびに、配列全体を 2 回コピーする必要があります。

  • もう 1 つの可能性は、関数を呼び出すのではなく、関数内でヒープ操作をコーディングすることです。これにより、コードの繰り返しと煩雑なコードが発生します。

  • 私たちが行っているように、アクセスのようなポインタはありますかC

  • R の S3 または S4 クラスでユーザー定義関数を宣言できますか? これらの関数の呼び出しには、戻った後も同じ再割り当てが必要だと思う場合(C++/Javaクラスとは異なり、オブジェクトで動作します(私は正しいですか?))

  • O(log(n))Rで時間内にオブジェクトをキューに挿入および抽出できる組み込みの方法はありますか?

  • 各挿入後に明示的にソートすることを除いて、OPTICSアルゴリズムのオブジェクトの到達可能距離に応じて、シードの優先度ベースの挿入と削除を維持するという目標を達成できる他の方法はありますか?

4

2 に答える 2

1

R5クラス は可変オブジェクトを定義し、Javaクラスと非常によく似ています。オブジェクトが変更されたときにコピーを回避できるようにする必要があります。

于 2012-05-29T21:36:17.767 に答える
1

プライオリティ キューだけが必要なわけではないことに注意してください。

実際には、効率的な更新もサポートする必要があります。単純なヒープでは不十分です。ハッシュマップを同期して、オブジェクトを効率的に見つけて値を更新する必要があります。次に、変更された位置でヒープを修復する必要があります。

于 2012-05-30T16:15:07.770 に答える