ソラマメブログ
プロフィール
ぺんぎん
ぺんぎん
どもっす( ◎v◎ )
ぺんぎんっす。

「ぺんぎんさん」でいいっす。
「ぺんさん」でもOKっすよ。
何だって良いんっすけどね。
[個体名:Naoya Bellic]
(非商用)
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人

2009年03月18日

2本目に取り掛かる前っす

制作中のスクリプトは行数がさらにスゴイっす。
計算量を減らすために小規模なテーブルを作ったんっすけど、
要素数が1,600個ちょいっす。
普通は小規模と言えるんっすけど、
64KB制限の中だと、そこそこの大きさかもっすね。
どうもぺんぎんっす( ◎v◎ )


反復深化探索のみで進めた場合は、
1.制限時間内に解けない
2.パスすることによって手数が伸びる
っていう問題があったっす。

まず取り組んだのは、高速化っす。
当然と言えば当然っすね。

一番のポイントは「マンハッタン距離の計算」だったっす。
マンハッタン距離の定義通り計算するとなると、
正しいパネル位置を(X,Y)、現在のパネル位置を(x,y)として、
|X - x| + |Y - y|
コレをパネル15枚分について計算して、合算するっす。

枝刈りの判別のために何回も計算する必要があったっすから、
マンハッタン距離の計算は全体のコストとしても大きいっす。
for(i = 0; i < 15; i++)なんてやるよりかは、
提出したスクリプトのSub1内の関数IDSでやっているように
親局面からの差分で求めた方が明らかに早いっす。
for文でやってるのは最初の1回だけ、関数Searchの中での計算だけっす。

2月10日まではこんな感じで高速化に取り組んでたんっすけど、
次第に限界を感じ始めたっす。
このあたりから別のアルゴリズムも「併用」しようと考えたっす。

このあとSub2の制作が始まるんっすけど、また今度っす。


同じカテゴリー(15パズル)の記事
 さらに選抜っす (2009-04-07 17:01)
 昨日になって思いついたっす・・・ (2009-04-05 16:48)
 STEP2とSTEP3の効果っす (2009-03-27 20:35)
 一石二鳥っす (2009-03-26 19:48)
 完成からの逆算っす (2009-03-25 22:37)
 大会で出題された問題っす (2009-03-22 19:21)

Posted by ぺんぎん at 21:23│Comments(0)15パズル
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。