忍者ブログ
コンピュータ将棋など…。
[15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5]

あれから解けない問題のログを見ながら、原因推測⇒ソース変更⇒検証で解けない問題が少なくなってきたんだけど、ちょっと手を入れると解けていた問題も解けなくなったりする。
山下さんのところの No.2 の詰将棋も解けていたのに、いつの間にか解けなくなっているし。

せめて15手以内は時間をかければ解けるという状態にしないとなぁ~。

あと、最大深さを 1535 にして走らせたら、深さ 500 超えたあたりで Stack Overflow が発生した。orz
最近の OS だったら、自動的にスタックサイズを拡張してくれるんじゃなかったのか?!
自前でスタックを実装しないといかんかな…。

まぁ、実戦ではそこまで読まないし、今後のマルチスレッド化でスレッド生成時にスタックサイズを十分大きく指定してやれば問題ないかな。

PR

コメント
スタック領域
再帰呼び出しを500回しているとすれば、スタック領域の自動拡張は行われていると思いますが、数MBを消費してしまうとデフォルトの総量限界を超えるかもしれません。
UNIX系OSだと、(u)limitなどで領域を拡張して手数が伸びるようなら、総量オーバーらしいとわかると思いますが、Windows系はよく知りません。ただ、ネットを検索すればそれなりに情報がありそうではあります。
【2007/12/18 01:44】 NAME[山田 剛@CSA] WEBLINK[URL] EDIT[]
Windowsでのスタックの大きさ
VC系なら、リンカのオプションにスタックサイズの指定があると思います。
【2007/12/18 18:19】 NAME[うさぴょんの育ての親] WEBLINK[] EDIT[]
とりあえず
スタックサイズ指定のオプションはあるみたいですが、とりあえず3~17手くらいの詰将棋でデバッグしているので、まだ気にしないことにしました。
【2007/12/19 01:04】 NAME[かず] WEBLINK[URL] EDIT[]
実は…
デフォルトのスタックで普通は十分なはずなんですけれどね。

でも、うさぴょんは、局面をスタックにおいているので、ちょっと深く読むとスタックオーバーフローを起こすので『こんなこと』を知っていると言う話があったり。

全面的に書き直す時には、スレッド毎に盤面を一つ持つ形(YSSと同じかな?)に書き直した方がいいんだろうなぁ…(--;
【2007/12/20 17:13】 NAME[うさぴょんの育ての親] WEBLINK[] EDIT[]
マルチスレッド化を考慮して
一応、今のソフトではインスタンスをひとつ作成し Move()を呼ぶ前に必要な情報を退避して、Undo するようにしています。
といっても、盤面は退避しないけど、利き情報を退避しているので容量的にはそれほど効果がないかもwww
【2007/12/21 11:29】 NAME[かず] WEBLINK[URL] EDIT[]


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
フリーエリア
なのはの応援をしていただき、かつ協力いただける方は、アマゾンでの買い物は下のリンクからお願いします
プロフィール
HN:
かず
性別:
非公開
バーコード
ブログ内検索
最古記事
カウンター
アクセス解析