タグ

algorithmと数学に関するakishin999のブックマーク (7)

  • 平方数かどうかを高速に判定する方法 - hnwの日記

    平方数とは、ある整数の平方(=二乗)であるような整数のことを言います。つまり、0,1,4,9,16,...が平方数ということになります。 ところで、与えられた整数が平方数かどうかを判定するにはどうすれば良いでしょうか。与えられた整数の平方根の小数点以下を切り捨て、それを二乗して元の数になるかどうか、というのがすぐ思いつく実装です。 <?php function is_square($n) { $sqrt = floor(sqrt($n)); return ($sqrt*$sqrt == $n); } しかし、平方根の計算は比較的重い処理です。もっと高速化する方法は無いのでしょうか。 多倍長整数演算ライブラリGNU MPには平方数かどうかを判定するmpz_perfect_square_p関数が存在します(PHPでもgmp_perfect_square関数として利用できます)。稿ではこの実装

    平方数かどうかを高速に判定する方法 - hnwの日記
  • モンテカルロ法による円周率の計算

    モンテカルロ法による円周率の計算 モンテカルロ法とは確率には直接関係ない問題を確率も用いて解くという方法です。 正方形の中に適当に点を打つとき、その点が正方形の一辺を直径とする円の円内にある確率は 円内にあった点の数÷打った全数 となります。また、でたらめに点を打つので次のようなことも言えます。 正方形の一辺を直径とする円の面積÷正方形の面積 正方形の一辺の長さをLとすると上の式は次のようになります。 ((L÷2)×(L÷2)×π)÷(L×L) =(L×L×π÷4)÷(L×L) =π÷4 となります。 理論的には点を打つ数を増やせば増やすほど円周率に近づくはずですが、 コンピューターが乱数を余り正確に発生することができないので実際はそんなに良い値はでません。 もちろん同じ数の点を打っても円周率の値は変わります。 右の図は,一辺が2の正方形の中に1000個の点をランダムに(でたらめに)コンピ

  • About - Project Euler

    About Project Euler What is Project Euler? Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems. The motivation for starting Project Euler, and

    About - Project Euler
  • おねえさんのコンピュータを作ってみた

    まだやってたのか、と言われてしまいそうですが、おねえさんが計算にかけた時間と比べればまだまだです。 『フカシギの数え方』 おねえさんといっしょ! みんなで数えてみよう! この動画で出てくるおねえさんのコンピュータを作ってみた、というお話。 おねえさんのコンピュータからアクセスできます。 検索アルゴリズム HTML+CSSでコンピュータの画面を再現してみました。Javascriptを組むより、そっちの方に時間がかかった気がする。 経路の描画にはCanvasを使ってます。 この問題は自己回避歩行(Self-avoiding walk)と呼ばれるものらしいです。 単にグラフ上を移動するだけなので、小さいなサイズなら単純な深さ優先検索(DFS)で解けます(大きなサイズで何が起こるのか・・・それは動画で)。 実装では、DFSによる検索プログラムをWeb Workerを使って走らせ、スタートとゴールを

  • 「組み合わせ爆発」動画のコンピューターをWebで実装 アルゴリズムを駆使した高速化モードも - はてなニュース

    お姉さんが人生を懸けて「組み合わせ爆発」を解説する日科学未来館の動画が、ネット上で大きな話題となりました。この動画に登場した「同じ場所を2度通らずに何通りの線が引けるか」という問題を解くコンピューターが、Webで実装されています。動画では6年掛かりで導き出された「9×9」マスの計算や、25万年掛かった「10×10」マスの計算も忠実に再現。動画の最後で言及されている、高速化したアルゴリズムで解くことも可能です。 ▽ おねえさんのコンピュータ ▽ お姉さんが人生を懸けて“組み合わせ爆発”を力説 動画「フカシギの数え方」が壮大すぎる - はてなニュース 再現された「おねえさんのコンピューター」を使って、実際に5×5の問題に挑戦してみました。動画でもそうだったように、数秒で計算が終了します。コンピューターが線を辿りながら組み合わせを計算している様子も再現されていました。 左が「おねえさんのコンピ

    「組み合わせ爆発」動画のコンピューターをWebで実装 アルゴリズムを駆使した高速化モードも - はてなニュース
  • 連載:はじめMath! Javaでコンピュータ数学|gihyo.jp … 技術評論社

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    連載:はじめMath! Javaでコンピュータ数学|gihyo.jp … 技術評論社
  • プログラミングのための確率統計(仮)

    数学のプロをめざさない方に向けた確率・統計の解説. ちびちび執筆中. お気づきの点は 「なんでも」 までお知らせください. ダウンロード 原稿 PDF (未完成版のため誤りや抜けがあります) 冒頭 …… とりあえず雰囲気を見るにはこちら 全体 特徴 「確率は測度だ」という格的な見方を, アマチュア向けにかみくだいて解説しています (1章) そのおかげで, 条件つき確率だの期待値の性質だのにクリアなイメージが与えられます (2章, 3章) 「引きのばせば密度は薄まる」といった直感的な図解を多用し, さらに「何がしたくて」という意図の説明も重視しました (4章) 応用上必要なのに入門書では省かれがちな多変数の議論も, しっかりと (5章) リンク プログラミングのための線形代数 (前著の非公式サポートページ) ためし書き (稿の原型) 更新履歴 [2008-08-10] 演習 5.20 の

  • 1