MM 90
- masashinakata
- 14524
- 0
- 0
- 0
こうすることで、デッドロックが成立するためには700を超えるスレッドが必要になる。 現在40程度のスレッド数なのでへっちゃら、というわけ。
2015-12-13 02:41:31環状の隣接を考えることで、10飛ばしにしてもデッドロックの万が一の可能性を発生させるためには150程度のスレッドが必要。
2015-12-13 02:43:22逆に言えば、理論上は、40のスレッドを使っているのだから、35飛ばし付近が限界。それを超えると諸々無理な状態になる。まぁ実際には10飛ばしぐらいできれば十分。もしかしたら5飛ばしまででもいいのかもしれない。
2015-12-13 02:44:56マルチスレッド問題はとりあえず、lockじゃなくてtry_lockを使うことにすれば解決なのかなと思う。というのも、nextに限らずロックしたい理由が発生した。
2015-12-13 07:20:32偏りまくって、try_lockが全て失敗するというパターンは存在するのだけれども、それはとある実行に対してであって、それ以外のいずれかは必ず偏りの外側に存在して、さらに外側には必ずlockされてないやつが広がっているので、絶対にデッドロックには陥らない、と。
2015-12-13 07:25:41詰める際にロックとアンロック繰り返しながら詰めていく処理が現在存在するのだけれども、これはtry_lockじゃなくてlockでの実装にならざるをえない。 これによってロック待ちの先もロック待ち、、、という状態が発生しうるけれども、その先頭は必ず詰める以外の処理をしている。
2015-12-13 07:27:51その詰める以外の処理をしているノードは、next方向へのlockまたは両方向へのtry_lockしかしない。 lockの場合は、やはりその先に先頭が存在している。確率的に必ずnext方向に収束することになるので、デッドロックは起こらないことが証明できる。
2015-12-13 07:29:46横の配達列をどう取ってくるんだっていう問題があって、そのために詰める操作が存在していたけれども、これ実は要らないんじゃね? っていう感じになりつつある。。。 とある配達列の要素のいずれかの近傍は、隣の配達列である可能性が高い。
2015-12-13 07:35:19要素から近傍を引く、近傍から配達列を引く。この時に、索引を1つ使うことになるけれども、詰める処理を行うと、詰める時に索引も更新しなきゃいけない。 ところが、この方法を使うことで、要素は詰まってなくて良くなった。 解決。
2015-12-13 07:36:57@nico_shindannin いつもお世話になっております。 shindannin.hatenadiary.com/entry/20121224… この記事の最後の「1変数ごとに焼きなまし」の項に関してですが、独立性の高い要素にあらかじめ分離可能な場合でも、正しく焼きなませているなら、結果は同じな気がします。
2015-12-13 16:23:00@nico_shindannin 焼き鈍し途中の最良値を別途記録しておく場合は多少良くなりますが、最後まで十分に焼きなませるのでしたら、最良値は取らなくて良い前提になります。この時、仮に遷移が変数ごとだとすると、変数ごとにそれぞれ焼きなます場合と完全に同じ振る舞いになると思います
2015-12-13 16:28:02@nico_shindannin 私も初心者なので、私の方が間違ってる可能性もあるのですが、とりあえず根拠を述べます。 t1℃でx1が変化して、t2℃でx2が変化して、t3℃でx1が変化して、t4℃でx2が変化して という順番だったとします。
2015-12-13 16:31:16@nico_shindannin これは、x1とx2が独立なら、以下のように書き換えることができます。 t1℃でx1が変化して、t3℃でx1が変化して、t2℃でx2が変化して、t4℃でx2が変化して 教科書通りの遷移確率関数なら、温度と得点差のみに確率は依存します。
2015-12-13 16:34:02@nico_shindannin 完全独立であっても、遷移が独立に行われるのなら、分離してもしなくても完全に同じ動作。独立ではなく他変数と関連性があるのなら、一緒に焼きなます必要がある。。。というわけで、盲目に一緒に焼きなます一択だと個人的には思っています。
2015-12-13 16:35:48@nico_shindannin x1とx2の遷移が一緒に行われる場合については、あまり深く検証できていません。また、診断人さんの記事の「1変数ごとに焼きなまし」が「1変数ごとに遷移」ということでしたら、全くその通りだと思います。
2015-12-13 16:37:36@nico_shindannin なお、付け加えておきますが、仮に他変数と関連性が高い場合であっても、温度管理さえきちんと出来ていれば、「1変数ごとに遷移」であってもきちんと焼きなましの恩恵を受けることができるという認識です。
2015-12-13 16:39:53はてなブログに投稿しました #はてなブログ マラソンマッチで最初の12時間にすべきこと - hama_duのブログ hama-du.hatenablog.com/entry/2015/12/… pic.twitter.com/vBBoRoHQkq
2015-12-14 00:01:17AWS S3+SQS+Lambda で格安でセキュアなジャッジシステムを作ろうとして一ヶ月溶かした by @hama_du on @Qiita qiita.com/hama_du/items/… 裏番組
2015-12-14 00:10:23