データをビット列に押し込む
概要
データをビット列に押し込めることで、データサイズを小さくする事ができる
問題
データ数: 最大 10^7 (10,000,000)
データ: 10^7 より小さい整数 (0 〜 9,999,999)
問題の特徴
- 入力の範囲が限られている
- 同じ整数は出現しない
- 考える対象は整数のデータのみ
解決案
- 一つのデータ(7桁の整数)を7バイトで表す
- 一つのデータ(7桁の整数)を32bitで表す
- ビット列で表す(各データを1bitにする)
一つのデータサイズ| 全データサイズ
1. 7byte * 8 = 56bit| 56 * 10,000,000 = 560,000,000bit
2. 32bit| 32 * 10,000,000 = 320,000,000bit
3. 1bit| 1 * 10,000,000 = 10,000,000bit
結論
案3.のビット列にする事で、全データを 10,000,000 ビットで表すことができる
上記案の 1/56、1/32にデータサイズを小さくすることが可能
ビット列で表すのに有効となるデータセットの条件
- 限られた範囲内にある
- 密
- 重複がなく、付随する情報がない
ビット列の例
データ
行番| data
1| 0000001
2| 0000003
3| 0000002
4| 0000004
...
bit列
行番| データ | データのbit表記|| [bit列]
1| 0000001| 0000010 || 0000010
2| 0000003| 0001000 || 0001010
3| 0000002| 0000100 || 0001110
4| 0000004| 0010000 || 0011110
...
実装
参考書籍
珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造
https://amzn.to/3N5mMTI
Author And Source
この問題について(データをビット列に押し込む), 我々は、より多くの情報をここで見つけました https://qiita.com/qoncyu/items/0b12e268636ac14ee4e3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .