LoginSignup
1
0

More than 1 year has passed since last update.

データをビット列に押し込む

Last updated at Posted at 2022-03-20

概要

データをビット列に押し込めることで、データサイズを小さくする事ができる

問題

データ数: 最大 10^7 (10,000,000)
データ: 10^7 より小さい整数 (0 〜 9,999,999)

問題の特徴

  • 入力の範囲が限られている
  • 同じ整数は出現しない
  • 考える対象は整数のデータのみ

解決案

  1. 一つのデータ(7桁の整数)を7バイトで表す
  2. 一つのデータ(7桁の整数)を32bitで表す
  3. ビット列で表す(各データを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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0