[アーカイブ!】純粋数学、物理学、化学など:トレードとは一切関係ない脳トレ問題集 - ページ 451

 

以下はSMax=3000の場合の結果です。

2011.01.15 19:14:26 MetaSage (EURUSD,M1) //+---- Max = 3000 -------------------+.
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:14:21 MetaSage (EURUSD,M1) //+---- 最大金額 = 3000 -------------------+.

 
カウントはどのくらいだったのでしょうか?5秒じゃない...
 
Mathemat:

1.大体、金額の制限を撤廃するのが先決です。すべての理屈は基本的に変わらず、より多くの理屈を並べるだけ。

2.引用文の中で、その人がCray 1を必要としていたことから判断すると、彼のアルゴリズムはあなたのものよりも最適化されていなかったのです :)

1.SMax=3400の時点ですでに私の乗算器拡張テーブルがメモリに収まらないので、ラージは不可能です。

与えられたSMaxに対する最大積のレンマの進歩は?

3300のプリントアウトはこちらです。

2011.01.15 19:18:12 MetaSage (EURUSD,M1) //+---- Maximum Sum = 3300 -------------------+.
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:18:06 MetaSage (EURUSD,M1) //+---- Max = 3300 -------------------+.

.

2.いえ、ただ、mql5は非常に高速な言語なので...。:)

 
Mathemat:
カウントはどのくらいだったのでしょうか?5秒じゃない...
約1分です。
 
MetaDriver: 与えられたSMaxに対して最大限の仕事をするためのレンマの進歩は?
まだです。ただ、苦労する価値があるかどうかは疑問です :)
 

SMax=3350で確認。結果は同じです。カウントは1分程度、もっと少ない。

今の主な制限は、メモリです。乗数分解テーブルを限定する必要がある。

現在のバージョンでは、PMax=SMax*(SMax/2-1)となっています。これ以上減らせるのか?有効化できるか?

PMax<=SMax*(sqrt(SMax)-1)を証明するのは簡単だと思うのですが、いかがでしょうか? 今すぐ実行してみて、もしクラッシュしたら私が間違っているということです。:)

 
意味を持たせてください。
 

うまくいきませんでしたが(テーブルを作りましたが、小さすぎるようです)、もう一つ解決策を見つけることができました(!) :-)

2011.01.15 19:40:28 MetaSage (EURUSD,M1) 'MetaSage.mq5' の配列が範囲外(100,47)
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //+---- 最大金額 = 4000 -------------------+.
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //============ START ================================================================================================================

 

あとは、これが単なる潜在的な解決策ではなく、真の解決策であることを確認できればいいのですが。

よし、例えば1万人という制限を設けることで、さらに考えることができる。

P.S.3300で表中の数字がいくつになったかですね?

3300*(3300/2-1) ~500万?

 
Mathemat:

1. あとは、これが単なる潜在的な解決策ではなく、真の解決策であることを確認できればいいのですが。

よし、例えば1万人という制限を設けることで、さらに考えることができる。

2.追伸:3300というのは、表中の数字の数でしょうか?

3300*(3300/2-1) ~500万?

1.まあ、スクリプトで確認するのが一番なんですけどね。検証用バージョンに変更する。そうですね、まずはPMaxをどうにかしましょう。

2.はい。

ここで、テーブルの大きさをいじってみましょう。SMax=4100で結果を得ました。

PMaxは、SMax*(uint)(SMax/6-1)=2796200に設定されています。

2011.01.15 20:21:29 MetaSage (EURUSD,M1) //+---- Max = 4100 -------------------+.
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=137; P=4672; a=64; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //+---- Max = 4100 -------------------+.
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //============ START ================================================================================================================

2011.01.15 20:21:00 MetaSage (EURUSD,M1) SMax*(uint)(SMax/6-1) = 2796200

.

このように、S=137; P=4672; a=64; b=73と、真ん中にもう一つ解があることがわかります。