1

Python で有向グラフの隣接行列を表すブール値の 2D リストがあります。このマトリックスをファイルに書き込もうとしていますが、マトリックス自体が非常に大きいため、ファイルに書き込む前にエンコードする方法を考え出そうとしていました。

各列を 2 進数として扱うことができると考えたので、これを 10 進数に変換してファイルに書き込むことができました。ただし、最初に、各エンコードが一意であることを確認するためにノードの数を記述します。

たとえば、行列が の[[False, True], [True, True]]場合、ファイルは次のようになります。

2 (ノード数)
1 (10 進数で 01)
3 (10 進数で 11)

もちろん、括弧で囲まれたテキストなしで。

私の質問は次のとおりです。この行列をエンコードする別のよりスペース効率の良い (結果として得られるファイルが小さくなるなど) 方法はありますか?

4

2 に答える 2

1

データをより適切に圧縮するには、データにいくつかのパターンが必要です。より多くのパターン = より多くの圧縮。パターンの観点からデータを作成します。

ランダム データセット マトリックスがある場合は、rankメソッドを使用して圧縮できます。この回答をよく見てください

この件に関する優れた論文

于 2012-09-01T23:32:39.563 に答える
1

グラフの隣接行列の場合、かなり疎な可能性があるため、行列をScipy 疎行列に変換してピクルするだけです (独自のファイル形式を考案する必要はありません)。

于 2012-09-01T23:56:37.823 に答える