by Bez » 2007年3月03日(土) 22:56
>konisiさんへ
この間書いていただいたソースで対応しています。問題はプログラムの機能を縮小することで対応できました。
私が一番不思議に思っていることは、アルゴリズムの悪さからのスピードの遅さではなくて、同じ計算量の処理を繰り返しているだけなのに、回数を重ねると
AB424の処理がだんだん遅くなっていくのです。
konishさんに書いていただいたソースでは遅くなる現象は見られないのですが、
下記のソースを実行していただくと、最初と2000回付近では処理の速度が違うことがお分かりいただけるかとおもいます。
AB262でも処理速度のテストしたいのですが、XPで動かす方法を忘れました・・・。
ちなみに下記のソースはルービックキューブを解くプログラムのサブルーチンの一部です。計算の結果、私のコンピュータでは3100年位かかるので、根本的に違うアルゴリズムを考え中です。
コード: 全て選択
#prompt
dim m(6)=[0,1,2,3,-4,5,6] as double
dim i as long
dim lp as long
dim e as long
dim buf as double
dim pat as string
for lp=1 to 2000
print lp;" ";Time$()
pat="1234" ←本当はランダムに長さと内容を変えます。
e=len(pat)
buf=m(Val(Mid$(pat,e,1)))
for i=e to 2 step -1
m(Val(Mid$(pat,i,1)))=m(Val(Mid$(pat,i-1,1)))
Next
m(Val(Mid$(pat,1,1)))=buf
Next
>konisiさんへ
この間書いていただいたソースで対応しています。問題はプログラムの機能を縮小することで対応できました。
私が一番不思議に思っていることは、アルゴリズムの悪さからのスピードの遅さではなくて、同じ計算量の処理を繰り返しているだけなのに、回数を重ねると
AB424の処理がだんだん遅くなっていくのです。
konishさんに書いていただいたソースでは遅くなる現象は見られないのですが、
下記のソースを実行していただくと、最初と2000回付近では処理の速度が違うことがお分かりいただけるかとおもいます。
AB262でも処理速度のテストしたいのですが、XPで動かす方法を忘れました・・・。
ちなみに下記のソースはルービックキューブを解くプログラムのサブルーチンの一部です。計算の結果、私のコンピュータでは3100年位かかるので、根本的に違うアルゴリズムを考え中です。
[code]
#prompt
dim m(6)=[0,1,2,3,-4,5,6] as double
dim i as long
dim lp as long
dim e as long
dim buf as double
dim pat as string
for lp=1 to 2000
print lp;" ";Time$()
pat="1234" ←本当はランダムに長さと内容を変えます。
e=len(pat)
buf=m(Val(Mid$(pat,e,1)))
for i=e to 2 step -1
m(Val(Mid$(pat,i,1)))=m(Val(Mid$(pat,i-1,1)))
Next
m(Val(Mid$(pat,1,1)))=buf
Next
[/code]