突然ですが、“Twitterサイズの時刻表を作ってみました(^o^)丿”Twitterの文字数制限は全角で140文字。ここは更に半角のBit数140×8が目標!!
【Step.0】普通のよくみる時刻表を用意。表1:JR戸塚駅の平日東京行きの時刻表![](https://blogimg.goo.ne.jp/user_image/09/91/85b807b70b8e74029cc473fff9692da0.jpg)
表.1からJR戸塚駅の時刻表データは0515,0542,0605,0626…などといったようにできるかもしれないが、24時間常に1分間隔で電車が来る駅があるかもしれない…時刻表データはこのような場合にも対応できるようにしたい。このとき、1日あたりのデータサイズの領域は4×60×24(時刻を表すための文字数×分×時)を用意しなければ全てのデータのパターンを満たせない。Bit数は4×60×24×8となる。(まだまだ大きい…)
【Step.1】普通のよくみる時刻表を読み替える表2: 電車がJR戸塚駅に到着した時刻を1として読み替えた時刻表
ここで、表.2のように時刻表の観点を切り替える。
電車がJR戸塚駅に到着した時刻を1、電車がJR戸塚駅にいない時刻を0とした一日の時刻表である。つまり、表.3のように2進データに変換することができる。
こうすることで【Step.0】の課題を解決しつつ、Bit数は60×24と大幅に小さくなった。(もうちょっと…)表3: 時刻表データ(右は16進変換したもの)![](https://blogimg.goo.ne.jp/user_image/0b/4d/69732d9dc23688c6d30b3f1e84e622e3.jpg)
【Step.2】時刻表データをハフマン符号化し、圧縮する表4:16進変換した時刻表データから作成したハフマン木
ここではハフマン符号化のアルゴリズムは省略するが、
時刻表データ(二進)は以下のように二進数を圧縮できる。0000 ⇔ 00001 ⇔ 11100010 ⇔ 1000011 ⇔ 1111111100100 ⇔ 1010101 ⇔ 1111111000110 ⇔ 1111111010111 ⇔ 1111110001000 ⇔ 1101001 ⇔ 111101010 ⇔ 1111101011 ⇔ 1111110011100 ⇔ 1111110101101 ⇔ 1111110111110 ⇔ 11111111101111 ⇔ 1111111111
結果、時刻表データは次のように圧縮された(Bit数は643で目標達成!!)
0000000000000000000000000000000000000000000000000000000000000000000000000000001110000000100000001010000100001110010000110110101011011110010111110101111010010111110100111010010111011110100101111110100101111011100011001010101010000110010001000111000101000101001100011001100110011100001110001100011100011000011001010010101100110010000100000110111000110011001100011100110011001100011100101100001100011100000110001110011001100100010001010010101101010110001000101011001011000111000101011100100011010001000111001110001000011100100001000011001100011011100100001100011000110010100111000111000010000101001010111001011110011100001100011000100000101001010
【考察】現実の電車の時刻表では1111など11が並ぶケース。つまり、一分間隔で電車が来るようなケースはほとんどないことが表.4から分かる。16進数でパターン化したが、出現したケースは7パターンしかなかった。(他の駅でも使える!?)このデータモデル化とハフマン符号化の相性がいいことが分かった。
でも、実際の電車屋さんはもっとスマートな時刻表のデータベースを持ってるんでしょうね~
でも実際データでもつなら表.3かな・・・
携帯をいじって電車を待っている間に思いついてしまった
この”Twitterサイズの時刻表を作ってみました(^o^)丿”…限られた環境のもと、大きなデータをやり繰りする仕組みを考える。
仕事病なんですかね、たまにこういうこと考えてしまいます。
でも遊ぶのも大好き!!最近、土日は雨ふって消化不良な感じですが
飲み会だいすき(東)です
気温が下がってきました。
皆様、風邪など気おつけてください
monipet
動物病院の犬猫の見守りをサポート
病院を離れる夜間でも安心
ASSE/CORPA
センサー、IoT、ビッグデータを活用して新たな価値を創造
「できたらいいな」を「できる」に
OSGi対応 ECHONET Lite ミドルウェア
短納期HEMS開発をサポート!
GuruPlug
カードサイズ スマートサーバ
株式会社ジェイエスピー
横浜に拠点を置くソフトウェア開発・システム開発・
製品開発(monipet)、それに農業も手がけるIT企業