タグ

algorithmとMATHに関するshimanpのブックマーク (17)

  • アルゴリズム・AtCoder のための数学【後編:数学的考察編】 - Qiita

    0. はじめに こんにちは、大学 1 年生になったばかりの E869120 です。記事は、 アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 からの続きです!!! ※前編・中編を読んでいなくても理解できる、独立したトピックになっているので、ご安心ください。 後編から読む方へ 21 世紀も中盤に入り、情報化社会が急激に進行していく中、プログラミング的思考やアルゴリズムの知識、そしてアルゴリズムを用いた問題解決力が日々重要になっています。 しかし、アルゴリズム構築能力・競プロの実力は、単純にプログラミングの知識を学ぶだけでは身につきません。近年、数学的なスキルが重要になりつつあります。実際、私はこれまでの経験で「数学の壁で躓いた競プロ参加者」をたくさん見てきました。そこで記事では、 AtCoder のコン

    アルゴリズム・AtCoder のための数学【後編:数学的考察編】 - Qiita
  • アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 - Qiita

    こんにちは、大学 1 年生になったばかりの E869120 です。 私は競技プログラミング趣味で、AtCoder や日情報オリンピックなどに出場しています。ちなみに、2021 年 4 月 7 日現在、AtCoder では赤(レッドコーダー)です。 記事では、アルゴリズムの学習や競技プログラミングで使える数学的な部分を総整理し、それらについて解説したいと思います。前編・中編では数学的知識、後編(2021/4/26 公開予定)では数学的考察の側面から書いていきます。 【シリーズ】 アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 ← 記事 アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 アルゴリズム・AtCoder のための数学【後編:数学的考察編】 1. はじめに 21 世紀も中盤に入り、情報化社会(いわゆる「IT 化」)が急激に進行していく中、

    アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 - Qiita
  • 「フーリエ級数」から「高速フーリエ変換」まで全部やります!【2019.07.20更新】

    このスライドでは, ・フーリエ級数 ・複素フーリエ級数 ・フーリエ変換(連続) ・離散フーリエ変換(DFT) ・高速フーリエ変換(FFT) を解説しています. ブログはこちら 【フーリエ解析05】高速フーリエ変換(FFT)とは?内側のアルゴリズムを解説!【解説動画付き】 https…

    「フーリエ級数」から「高速フーリエ変換」まで全部やります!【2019.07.20更新】
  • Project Euler - PukiWiki

    Project Euler † プログラムで解く数学の問題集です。 公式サイト 適当に和訳してます。我こそはと思う人はライセンスを確認した上で自由に書いてください。 ↑

  • MNIST for ML Beginnersの数学的な意味合い - neuralnetな日記

    Tensor flowの初めの一歩のチュートリアルであるMNIST For ML Beginners について、数学的な意味合いを書いてみようと思います。 (ブログに不慣れなもので、修正/継ぎ足しながら公開していくことをお許しください) まず、このチュートリアルで実行していることは、 入力がn次元の配列 (は実数)が複数個あった時 、個々の出力 ()を得る写像を用意して、出力が 個々のに対する解 (あるz=1以外はz=0) に近い結果を得れるように、Fを最適化することです。 ここで、の各要素 は実数と書きましたが、これは概念上の話であり、プログラムの実装上ではfloatになります。以後、集合(つまり配列)の要素は数学上は実数ですが、プログラム上はfloatであると考えて下さい。は、となるm個の(実数の)集合です。また任意の要素は0以上であり、したがって、は0から1までの値をとることになりま

    MNIST for ML Beginnersの数学的な意味合い - neuralnetな日記
  • ベイズを学びたい人におすすめのサイト - download_takeshi’s diary

    ベイジアンフィルタとかベイズ理論とかを勉強するにあたって、最初はなんだかよくわからないと思うので、 そんな人にお勧めのサイトを書き残しておきます。 @IT スパム対策の基技術解説(前編)綱引きに蛇口当てゲーム?!楽しく学ぶベイズフィルターの仕組み http://www.atmarkit.co.jp/fsecurity/special/107bayes/bayes01.html いくつかの絵でわかりやすく解説してあります。 自分がしるかぎり、最もわかりやすく親切に解説してる記事です。数学とかさっぱりわからない人はまずここから読み始めるといいでしょう。 茨城大学情報工学科の教授のページから http://jubilo.cis.ibaraki.ac.jp/~isemba/KAKURITU/221.pdf PDFですが、これもわかりやすくまとまってます。 初心者でも理解しやすいし例題がいくつかあ

    ベイズを学びたい人におすすめのサイト - download_takeshi’s diary
  • 正月の酔っ払い物理学者が数学者の皮を被った天使に出会うお話 | カメリオ開発者ブログ

    あけましておめでとうございます。白ヤギの物理担当、シバタアキラ(@punkphysicist)です。 皆様はどんなお正月を過ごされましたか?日の正月といえば、おせち、日酒、おばあちゃん、そしてパズル、ですよね。私の正月はそんな感じでした。お節をたらふくべ、美味しいお酒でほろ酔い気分になっている私の横で、黙々とおばあちゃんがパズルをやっているのに気づいたのです。部屋中をフワフワしている私とは全く対照的に、微動だにせずパズルを続けるおばあちゃん。御年迎えられると辛抱強さが半端ない。 そんなおばあちゃんがやっていたのはかわいいチョコレートのピースとは裏腹にこんな挑発的な文言の書かれたパズルです(この記事はアフィリエイトではありませんが、写真をクリックすると買えます) 何時間たっても答えが出ないおばあちゃん、辛抱強さは人一倍強いですが、私も何とか助けてあげたいと思いトライ。しかし日酒が・・

    正月の酔っ払い物理学者が数学者の皮を被った天使に出会うお話 | カメリオ開発者ブログ
  • 平方数かどうかを高速に判定する方法 - 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の日記
  • ランダムだと!?!?(ガタッ - 西尾泰和のはてなダイアリー

    確かに、このテンプレには僕も飽きている: onk:「リンゴが10個あります。ランダムに3人で取り分けなさい」ってどうコードに落とすと綺麗かな。。 yoshiori: @onk ランダムだと!?!? onk: @yoshiori 擬似ランダムでいいです yoshiori: @onk ふう、焦らせやがって……(俺の中でここまでテンプレ) yoshiori: もう、「ランダム」という言葉に反応してしまうのはネタでも良くない気がしてきた そこで新しいマサカリを考えてみた。「お前はなにを等確率にしたいんだ!?!?」 2個のりんごをAさんとBさんの2人に配ることを考えてみよう。全部で4通りの配り方がある。(A, A), (A, B), (B, A), (B, B)の4つだ。 この4通りを等確率にしたいのならば、それぞれのりんごについて1/2の確率でAとBに振り分ければ良い。ちなみにPythonのran

    ランダムだと!?!?(ガタッ - 西尾泰和のはてなダイアリー
  • 平面幾何におけるベクトル演算 » 直線と線分

    で求まります(ここで |x×y| は実数に対する絶対値, |x| はベクトルに対する絶対値と「絶対値」の意味が異なっている点に注意してください)。 コーディングは以下の通りです*1: // 点a,bを通る直線と点cとの距離 double distance_l_p(P a, P b, P c) { return abs(cross(b-a, c-a)) / abs(b-a); } 線分と点の距離 今度は線分と点の距離を考えてみましょう。 距離としてどのような値が欲しいのか,というのは問題依存なのですが, ここでは一般的な距離の定義に従って,点から「線分のどこか」への最短距離としてみます。 そうすると,線分 ab に垂直な直線で点 a を通る直線と点 b を通る直線に囲まれた領域(下図の左の赤色領域に相当)にある点であれば, 点から直線 ab への垂線が最短距離になります。 また,点 c がこ

  • 平面幾何におけるベクトル演算 » 内積と外積

    内積・外積 ベクトルの内積 (inner product, dot product, scalar product) と外積 (outer product, cross product, vector product) という演算を用いると幾何の問題を解く考え方が簡単になります。 幾何学における内積や外積はもともと3次元空間上で定義されるものなので,まずは3次元空間上で幾何学的な内積・外積を導入し, それらが線形代数的なベクトル演算と等価であることを利用し,内積・外積を2次元平面上に拡張(縮小?)します。 3次元空間上において,ベクトルの内積(ドット積)は a⋅b で表され, 以下の式で定義されます: 内積はcosを使って定義されている点と,内積の結果は単一の値=スカラーになる点に注意してください。 また,ベクトルの外積(クロス積)は a×b で表され, その大きさ |a×b| は で与え

  • javascript - Math.BigInt で多倍長整数演算 : 404 Blog Not Found

    2010年09月12日03:00 カテゴリLightweight Languages javascript - Math.BigInt で多倍長整数演算 ついムラムラと。 /lang/javascript/math-bigint/trunk - CodeRepos::Share - Trac dankogai's js-math-bigint at master - GitHub フルスクラッチでないのでかえって苦労したかも。 Demo: var x = bigint("1234567890123456789012345678901234567890"); var y = new Math.BigInt("12345678901234567890"); p( x.add(y) ); p( x.sub(y) ); p( x.mul(y) ); p( x.div(y) ); p( x.mod(

    javascript - Math.BigInt で多倍長整数演算 : 404 Blog Not Found
  • C - で素数を数え直したら、範囲10億で10秒切ったお : 404 Blog Not Found

    2010年07月28日01:30 カテゴリMath C - で素数を数え直したら、範囲10億で10秒切ったお というわけで数え直したら… 404 Blog Not Found:C - で私も素数を数えてみた はてなブックマーク - mohnoのブックマーク「Core i7 な iMac で、10億の範囲を検索するのに1プロセス300秒前後」←遅いってこと? エラトステネスのふるいで、原田氏の記事でも10億なら2分(Core i7 920)、私の手元では20秒(Core 2 Duo E6850)だったんだけど。 10秒を切ってしまったので。 次にアルゴリズムであるが、いろいろいじってみた結果こうした。 まず p < 256 な小さな素数でエラトステネスのふるいにかけ 次にMiller-Rabin素数判定法を適用する これは「個々の64bit整数が素数かどうか」を判定するのには(素数表を引くこ

    C - で素数を数え直したら、範囲10億で10秒切ったお : 404 Blog Not Found
  • QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。

    かつてのMac OS9までの描画エンジンの主役はQuickDrawが担っていた。GUIなOSでは、文字も含めてすべてをグラフィックとして扱うので、画面に見えているすべてのもの*1はQuickDrawによって描かれていたことになる。描画エンジンは、GUIなOS開発の要となる技術である。その出来が、GUIなOS開発の成否を分けるとも言える。 そして、最初期のQuickDrawは、ビル・アトキンソンがたった一人で開発したそうである。 当時(25年以上前)のCPUは、動作クロックが8MHzという性能だった。(現在は2GHz=2000MHzかつ、複数コアが当たり前) そのような性能であっても、違和感なくマウスで操作できるOS環境にするために、斬新な発想や試行錯誤を重ね、相当な努力の末に開発されたのがLisaやMacintoshであった。 Amazon.co.jp: レボリューション・イン・ザ・バレー

    QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。
  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

  • 「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」:最強最速アルゴリズマー養成講座(1/3 ページ) 典型的なアルゴリズムをたくさん知っている人間が最強か――? いいえ、典型的なアルゴリズムを知らなくても、違ったアプローチで答えに迫る方法はいくらでも存在します。短い実行時間で正確な答えを導き出せるかを考える習慣をつけましょう。 アルゴリズマー養成講座と銘打ってスタートした連載。もしかすると読者の方の興味は、はやりのアルゴリズムや汎用的なアルゴリズムを知ることにあるのかもしれません。しかし、今回は、いわゆる「典型的なアルゴリズム」を用いずに進めていきたいと思います。 なぜ典型的なアルゴリズムを用いないのか。それは、典型的なアルゴリズムばかりを先に覚え、それだけでTopCoderなどを戦っていこうとした場合、それに少しでもそぐわない問題が出た場合に、まったく太刀打ちできなくなってしまう

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 1