非常に大きなグラフがあるとします。Facebookのユーザーグラフのように。このようなグラフのクローンを効率的に作成するにはどうすればよいでしょうか。標準の効率的なアルゴリズムはありますか?
アルゴリズムを探しています。グラフはメイン メモリであると想定できます。
「facebook のサイズ」については、おそらくディスク上にあります。本当にコピーする必要がある場合、最も速い方法はシークを導入しないことです。通常、これは単にファイルをコピーすることを意味します。
いずれにせよ、私はおそらくそれをまったくコピーしないでしょうが、コピーオンライトです。言い換えれば、持っていたオブジェクトを使用してコンテキストを保存しますが、別のコンテキスト内からオブジェクトに書き込むとすぐに、コピーを作成します。
N 個未満の操作で N 個のバイトを「複製」する方法は実際にはありません。特に効率的な方法はないと思います。グラフにかかる合計バイト数が何であれ、それがグラフのクローン作成にかかる時間です。