spin on the RITZ -117ページ目

学食のラーメンは

不味い。

なんで、あんなに、不味いのか。。。



それはそうと、昨日のソース


見苦しいところもありますが、ご勘弁を


#include <iostream>
#include <vector>
#include <queue>
using namespace std;

class Symbol {
public:
    double p;
    int len;
    int idx;
    vector<int> f;
    Symbol() { p=0.0; len=0; idx = -1; }
    bool operator<(const Symbol& obj) const { return p > obj.p; }
};

double p[] = {0.8, 0.2};
const int NUM = 20;
vector<Symbol> t;

void init()
{
    Symbol tmp;
    for (int i=0;i < sizeof(p)/sizeof(double);i++) {
        tmp.p = p[i];
        tmp.idx = i;
        t.push_back(tmp);
    }
}

void calc_p()
{
    vector<Symbol> tmp;
    Symbol s;
    int n = sizeof(p)/sizeof(double);

    for (int i=0;i < t.size();i++) {
        for (int j=0;j < n;j++) {
            s.p = t[i].p * p[j];
            s.idx = i * n + j;
            tmp.push_back(s);
        }
    }
    t = tmp;
}

void add_len(Symbol& s)
{
    for (int i=0;i < s.f.size();i++)
        t[s.f[i]].len++;
}

double calc_l()
{
    priority_queue<Symbol> pq;
    Symbol tmp, sum;
    double length = 0.0;

    for (int i=0;i < t.size();i++)
        pq.push(t[i]);

    while (pq.size() != 1) {
        sum.f.clear();
        sum.p = 0.0;
        for (int i=0;i < 2;i++) {
            tmp = pq.top();
            pq.pop();
            sum.p += tmp.p;
            if (tmp.idx == -1)
                for (int j=0;j < tmp.f.size();j++)
                    sum.f.push_back(tmp.f[j]);
            else
                sum.f.push_back(tmp.idx);
        }
        add_len(sum);
        pq.push(sum);
    }

    for (int i=0;i < t.size();i++)
        length += t[i].p * t[i].len;
    return length;
}

int main()
{
    init();

    cout << "平均符号長(1次) : " << calc_l() << endl;
    for (int i=2;i <= NUM;i++) {
        calc_p();
        cout << "平均符号長("<<i<<"次) : " << calc_l()/i << endl;
    }

    return 0;
}

買い替え買い替え

結構前からケータイ本体のスピーカーがぶっ壊れてて、電話がかかってきても向こうの声が聞こえない(ヘッドフォンつければ聞こえる)のでケータイを買い換えたい。



条件としては

auで

ラジオ聴けて

ワンセグ出来て

スライド式じゃなくて

安いやつ



EZ-FMできるやつがほとんど無いorz


料金プランもずいぶん変わっちゃってるし・・・・俺みたいな人間には理解できないよ



携帯電話ってなんであんなに高いの?

5万とか何?



むしろ、あんなに小さい機器のなかにあんだけ詰まってるんだから、安いと見たほうが良いかもしれません。

でも、結構買い換える人とか大変だよね。

情報源を「拡大」するッ!!

ハフマン符号とブロック符号を習ったよ!



シャノンの第一符号化定理によれば、情報源からの系列を符号化する際の平均符号長Lは、ブロック符号を用いれば、情報源のエントロピーHを下限として、小さくすることができるわけですよ。



記号a,bを出す独立生起情報源を考えるとき、それぞれの確立を


とすると、エントロピーHは




となるわけです。



っつーことは、いくらブロック符号化しても、0.72ちょいまでしか平均符号長は下がらないわけですよ。

勿論これは証明されてるわけなんですが、実際に情報源を拡大してシミュレーションしてみましたよん。


平均符号長(1次)  : 1
平均符号長(2次)  : 0.78
平均符号長(3次)  : 0.728
平均符号長(4次)  : 0.7408
平均符号長(5次)  : 0.73792
平均符号長(6次)  : 0.725248
平均符号長(7次)  : 0.731756
平均符号長(8次)  : 0.732228
平均符号長(9次)  : 0.72514
平均符号長(10次) : 0.728201
平均符号長(11次) : 0.729601
平均符号長(12次) : 0.725041
平均符号長(13次) : 0.726214
平均符号長(14次) : 0.728045
平均符号長(15次) : 0.72494



さすがに、15次に拡大すると時間がかかるな・・・・

1次っておかしいね。「1次」=「拡大してない」って意味でよろしく。


まぁ、とりあえず0.72ちょいに収束しそうな勢いですね。




みっともないプログラムですんで、要望があれば載せますね。

なくなった

電車のなかでバスの回数券を確認し、電車を降り、改札を抜け、直線距離にして10数メートルのバス乗り場に行く間に




回数券なくしたorz


どこ行ったのヨォォォ!!!
俺の一枚120円の大学直行バスの回数券どこ行ったのヨォォォ!!



一枚損した
凹む

ふーりえきゅーすー

フーリエ級数に入りましたよん




関数のベクトル成分表示だとか関数空間での内積だとか、持論展開しまくりの先生なんですが、これはこれでわかりやすかったりするんだから不思議。



説明が終わったあとに、

『とりあえずこんな感じです。私の説明で納得できた人は数学屋には向いてません。』

だってさw



とーりあえず使えりゃいいのよ。技術屋なんだし。