JSP_Blog

ジェイエスピー社員が綴る日替わりブログ

Twitterサイズの時刻表を作ってみた(^o^)丿

2012-10-04 08:30:30 | 日記

突然ですが、“Twitterサイズの時刻表を作ってみました(^o^)丿”Twitterの文字数制限は全角で140文字。ここは更に半角のBit数140×8が目標!!


【Step.0】普通のよくみる時刻表を用意。表1:JR戸塚駅の平日東京行きの時刻表


表.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進変換したもの)


【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企業

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 台風の影響で | トップ | イメージで学ぶ英語 »
最新の画像もっと見る

コメントを投稿

日記」カテゴリの最新記事