2

いくつかのクラス プロパティから、人間が判読できる一意の ID を作成したいと考えています。たとえば、次のようになります。

Class A contains property c,d,e
Class B contains property f,g

したがって、1 つの ID は

c=1
d=2
e=3
f=4
g=5

一方、別の ID は

c=7
d=3
e=4
f=0
g=11

引数のために、プロパティは整数のみ (編集: 0 から 1000 の範囲) ですが、実際には浮動小数点数や文字列でもかまいません。

これらの値を人間が読める短い ID に結合する方法を探しています。さらに、ID からプロパティを再構築できるようにしたいと考えています。また、可能であれば、プロパティの小さな違いが ID の小さな違いにもつながるはずです。

これは、小さくて人間が読めると私が考える例です。 H5RT33

そのようなもののためのアルゴリズムはありますか?

編集:「あなたにとって人間が読めるものは何ですか?」のような質問を予想しながら、ID の例を書き留めました。たとえば、MD5 はそうではありませんが、「ツリー」のような実際の単語は必要ありません。したがって、与えられた ID はやや中間ですが、6 文字または大文字と数字のみに制限するつもりはありませんでした。

また、整数について話しましたが、本当は「0 ~ 1000 の範囲の整数」を意味していました。

4

1 に答える 1

3

元と変換の両方の情報内容が同じであることを意味する可逆変換 (全単射) が必要です。のように、大文字のみを使用した 6 文字の英数字コードで、H5RT3336 6の可能な値があります。言い換えれば、それには少しの情報があります。一方、5 つの (32 ビット) 整数にはビットが含まれており、これはかなり多くなります (もちろん、整数の範囲が制限されている場合を除きます)。さらに、かなり多くの情報を含む浮動小数点数と文字列もエンコードしたいとします。6 * log236 = 31.15 * 32 = 180

したがって、厳密に情報理論的な理由から、すべての要件を満たすのは難しいと思います。

于 2013-03-05T18:27:27.977 に答える