KL展開というのは多次元のベクトルをできるだけ元の情報を失わないように次元を削減しより少ないベクトルで表現しようというものです。(最近学んだばっかなので間違っていたらすいません)
で以下に2次元から1次元への変換を行うプログラムを書きました。
実行結果はこんな感じに
一応出来ているっぽいですね。
Dijkstr::Dijkstr(){
cost_temp[V][V] = {
{ INF, 2 , 3 , INF , INF },
{ 2 , INF , 4 , INF , 10 },
{ 3 , 4 , INF , 1 , INF },
{ INF, INF , 1 , INF , 2 },
{ INF, 10 , INF , 2 , INF }
};
}
と記述するとエラーをはいてしまいます。ここで小一時間ぐらい悩んでmemcpy関数の存在を思い出しました。
memcpyの使い方としては
memcpy(void *str1,void *str2,size_t len)
str2からstr1にlenバイト分コピーするといったものです。
memcpyを用いて
Dijkstr::Dijkstr(){
static int cost_temp[V][V] = {
{ INF, 2 , 3 , INF , INF },
{ 2 , INF , 4 , INF , 10 },
{ 3 , 4 , INF , 1 , INF },
{ INF, INF , 1 , INF , 2 },
{ INF, 10 , INF , 2 , INF }
};
memcpy(cost, cost_temp, sizeof(cost_temp));
}
として解決しました。
今回はjavascriptを使って高速素数判定プログラムを作ってみました。
下に入力欄に判定させたい数値を入れて、Startボタンを押せば実行結果とかかった時間が出ます。
素数判定にはエラトステネスの篩を用いました。以下に参考URLを載せておきます。
参考URL: http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/ErSieve.html