大きなスパース行列(たとえば、10k + x 1M +)が与えられた場合、密行列(すべてゼロ以外の要素)を形成する行と列のサブセット(必ずしも連続ではない)を見つける必要があります。このサブ行列は、アスペクト比の制約内で可能な限り大きくする必要があります(最大の合計ではなく、要素の最大数)。
この問題に対する既知の正確なまたはアプロキサメートの解決策はありますか?
グーグルでのクイックスキャンは、多くの近いが正確ではない結果を与えるようです。どのような用語を探す必要がありますか?
編集:明確にするために; サブ行列は連続である必要はありません。実際、行と列の順序は完全に任意であるため、隣接関係は完全に無関係です。
チャド・オケレの考えに基づく考え
- 行を最大数から最小数の順に並べます(必須ではありませんが、パフォーマンスに役立つ場合があります)
- 「大きな」オーバーラップがある2つの行を選択します
- 重複を減らさない他のすべての行を追加します
- そのセットを記録する
- オーバーラップを最小限に抑える行を追加します
- 結果が小さくなるまで#3で繰り返します
- 別の開始ペアで#2からやり直します
- 結果が十分に良いと判断するまで続けます