永続データ構造は、効率のために構造の共有に依存しています。例については、こちらをご覧ください。
データ構造をシリアル化してファイルまたはデータベースに書き込むときに、構造共有を保持するにはどうすればよいですか?データ構造を単純にトラバースすると、正しい値が格納されますが、構造の共有は失われます。共有コンポーネントを含むデータ構造をファイルに保存して復元し、復元されたデータでほとんどの構造を共有できるようにしたいと思います。
永続データ構造は、効率のために構造の共有に依存しています。例については、こちらをご覧ください。
データ構造をシリアル化してファイルまたはデータベースに書き込むときに、構造共有を保持するにはどうすればよいですか?データ構造を単純にトラバースすると、正しい値が格納されますが、構造の共有は失われます。共有コンポーネントを含むデータ構造をファイルに保存して復元し、復元されたデータでほとんどの構造を共有できるようにしたいと思います。
なんらかの形のハッシュコンシングが必要です。この問題はよく研究されています。ピッカーコンビネータに関するAndrewKennedyの論文では、共有を維持しながらシリアル化および非シリアル化する方法について詳しく説明しています。
私が考えることができる2つの明白な方法があり、それらは関連しています。
これらのオプションのどちらを選択するかは、最適化しようとしているものと、実際に見られると予想されるリンクの種類によって異なります。