6

フロー ネットワークで反復計算を行っています。その間、各ソースが各エッジのフローにどれだけ寄与しているかを記録する必要があります。任意の 1 つのエッジでのフローは、平均でソースの 2% によるものであるため、 を定義しますvector< map<int, double> > flow。ここで、ソースによるflow[e][s] = fエッジでのフローは です。各反復で、すべての入力が更新されます。esffflow

プログラムのピーク時のメモリ使用量は 4 GB 近くになります。これは (32 ビット) Linux および OS X で動作しますが、Windows ではクラッシュします (プロセスごとに 2 GB の制限が課されるようです)。

インターフェイスを使用してディスクベースのデータ構造を実装するにはどうすればよいvector< map<int, double> >ですか (または、この問題を回避するには)?

4

2 に答える 2

2

同様のタイプのシナリオにはSTXXLを使用しました。調べる価値があるかもしれません。

于 2012-06-18T17:05:53.543 に答える
0

doubleマップのベクトルがすべてのメモリを消費している場合、データ フィールドには絶対に必要ですか? 変更すると役立つ場合があります。

それ以外の場合は、メモリ マップを使用できる可能性がありますが、特にマッピング用に埋め込まれたデータ構造では、プラットフォーム間の互換性を持たせるには少し手間がかかります。

于 2012-06-18T16:57:24.450 に答える