本スライドでは、以下の2つの内容を紹介します。 1.乱択アルゴリズム(乱数を使って問題を解くアルゴリズム) 2.ランダムな入力に対するアルゴリズム
本スライドでは、以下の2つの内容を紹介します。 1.乱択アルゴリズム(乱数を使って問題を解くアルゴリズム) 2.ランダムな入力に対するアルゴリズム
1. はじめに こんにちは、はじめまして。東京大学 1 年生の米田優峻(E869120)と申します。私は競技プログラミングが趣味で、AtCoder や国際情報オリンピックなどの大会に出場しています1。2021 年 11 月時点で、AtCoder では赤色(レッドコーダー)です。また、2020 年以降、アルゴリズムを学べる以下のようなコンテンツや資料を作成してきました。 レッドコーダーが教える、競プロ上達ガイドライン 競プロ典型 90 問 50 分で学ぶアルゴリズム さて、このたびは技術評論社から、書籍を出版させていただくことになりました2。アルゴリズムと数学が同時に学べる新しい入門書です。 「アルゴリズム×数学」が基礎からしっかり身につく本 - amazon 発売日は今年のクリスマス、2021/12/25 です。電子書籍版も同時期に出る予定です。本記事では、この本の内容と想定読者について、
対数のlogを勉強するときにまず最初に習得するのは常用対数です。 【LOG・LOG10関数】Excelで10の累乗と常用対数が使えたら数値の桁数が計算できます 常用対数を習得したら次に習得するのが2の累乗と2を底とする対数です。学生の時に、2,4,8,16,32・・・と2の累乗を覚えた人もいるのではないでしょうか? 大人であれば、2を10回かけたら1024(=約1000)になることを知っておいても損はないでしょう。携帯電話の「ギガ」はもともと2を30回かけると約10億=1ギガの情報量になるところからきています。2の累乗と2を底とする対数を理解することは情報処理を理解する第一歩と言っても過言ではありません。 そこで、今回は、Excelで2の累乗と2を底とする対数を求める方法とその応用について解説します(2進数については深入りしません)。 目次 1.まずはExcelで2の累乗の性質を考えてみよ
計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にある本を読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは
最適輸送問題(Wasserstein 距離)を解く方法についてのさまざまなアプローチ・アルゴリズムを紹介します。 線形計画を使った定式化の基礎からはじめて、以下の五つのアルゴリズムを紹介します。 1. ネットワークシンプレックス法 2. ハンガリアン法 3. Sinkhorn アルゴリズム 4. ニューラルネットワークによる推定 5. スライス法 このスライドは第三回 0x-seminar https://sites.google.com/view/uda-0x-seminar/home/0x03 で使用したものです。自己完結するよう心がけたのでセミナーに参加していない人にも役立つスライドになっています。 『最適輸送の理論とアルゴリズム』好評発売中! https://www.amazon.co.jp/dp/4065305144 Speakerdeck にもアップロードしました: https
よくアニソンとかの歌詞で「解けない方程式」みたいなフレーズが出てくるが、代数方程式だって5次方程式(たった5次!)以上になったら一般には解けないし、微分方程式に至っては「ミレニアム懸賞問題」として100万ドルの懸賞金が懸かってたりする難しさなわけで、たいていの方程式は解けなくて当たり前なんだよ!って、聞くたびにツッコミたくなる。 つまり、「解ける方程式」なんてほとんど無いのだから、「解けない方程式」に悩むなんて、空が飛べる翼がないことに悩むくらい実現不可能な空想であり、そもそも悩み方として間違っている。 というかまずは、お前の歌詞で求める「解」は近似解ではダメなのか、どうしてダメなのか、歌詞はせいぜい10分も無いけど、小一時間膝を付き合わせて問い詰めたい。ゼミを開いてお前の意図を詳らかにしたい。 ガロア群が可解にならないからって諦める前に、最適化のための近似アルゴリズムを試せよ。ニュートン
こんにちは、大学 1 年生になったばかりの E869120 です。 私は競技プログラミングが趣味で、AtCoder や日本情報オリンピックなどに出場しています。ちなみに、2021 年 4 月 7 日現在、AtCoder では赤(レッドコーダー)です。 本記事では、アルゴリズムの学習や競技プログラミングで使える数学的な部分を総整理し、それらについて解説したいと思います。前編・中編では数学的知識、後編(2021/4/26 公開予定)では数学的考察の側面から書いていきます。 【シリーズ】 アルゴリズム・AtCoder のための数学【前編:数学的知識編①】 ← 本記事 アルゴリズム・AtCoder のための数学【中編:数学的知識編②】 アルゴリズム・AtCoder のための数学【後編:数学的考察編】 1. はじめに 21 世紀も中盤に入り、情報化社会(いわゆる「IT 化」)が急激に進行していく中、
与えられた楽器の音色に近いFM音源パラメータの探索を勾配法で解く方法を解説します これは2020年2月8日に行われた カーネル/VM探検隊@関西 10回目 での発表資料です サンプルコード: https://github.com/Fadis/ifm
ジャンプを実装するとき,重力をイメージして放物軌道を作りがちです. だがHAL研の方はかく語りき. キャラクターを動かすプログラムでは、ときに自然法則を無視して気持ちよさを追求する、ということをよく行います。 自然界の物理法則よりも気持ちいいジャンプ,探求したいと思いませんか? この記事ではジャンプの実装方法をいくつか紹介します.結局重力使えばいいやと思わなくもないですが… 初めに 今回はヒヨコ🐤ちゃんがジャンプします!以下ヒヨコちゃんの座標は $(x, y)$ と表記します.ただし画面左上が原点で,画面下方向にyの値が増えていくことに注意です.この辺は使用したゲームエンジン pyxel の仕様です.(あとクラスで書いてないので,邪悪なグローバル変数だらけです….先に謝ります) 最初に実装の全体像を示します. import pyxel def drawHiyoko(x, y): # ヒヨ
[DL輪読会]PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metr...
NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。今回は計算量オーダーの求め方について書きます。 0. はじめに 世の中の様々なシステムやソフトウェアはアルゴリズムによって支えられています。Qiita Contribution ランキング作成のために用いるソートアルゴリズムのような単純なものから、カーナビに使われている Dijkstra 法、流行中のディープラーニングに用いられている確率的勾配降下法など、様々な場面でアルゴリズムが活躍しています。アルゴリズムとはどんなものかについて具体的に知りたい方には以下の記事が参考になると思います: アルゴリズムとは何か ~ 文系理系問わず楽しめる精選 6 問 ~ アルゴリズムを学ぶと $O(n^2)$ や $O(n\log{n})$ や $O(2^n)$ といった計算量オーダーの概念が登場します。こうした記法を見ると
All slide content and descriptions are owned by their creators.
いろいろなソフトウェアで、大きいランダムな値をユニークな値とみなすということが行われている。例えばユニークな識別子としてよく使われるUUIDはただの122ビットの乱数だ。gitもSHA-1ハッシュ値が160ビットの乱数のように扱えることを期待して、それをユニークな識別子として使っていた。実際にはランダムな2つの値が同じになる確率はゼロではないのに、なぜこれが安全なやり方だと言えるのだろうか? それについてちょっと説明してみよう。 あるシステムが、乱数で生成された識別子の衝突のなさに依存しているとして、仮に衝突が発生した場合、相当悪い結果、例えば復旧不可能な形でデータベースが壊れてしまうとしよう。これはどれくらい危険なのだろうか? 数学の問題で、学校のクラスの中で同じ誕生日の人が1組以上いる可能性は思ったより高いという話を聞いたことがあると思う。あるランダムに生成された値が衝突する確率という
「数値最適化」は機械学習における中心的手法の1つです。多くの問題では、最適解を直接突き止めることは難しいものですが、ある解がどれほど適しているかを測定する損失関数を設定し、解を見つけるためにその関数のパラメータを最小化することは比較的容易です。 かつてJavaScriptを初めて学ぼうとしていた時 、結果的に数値最適化ルーチンを多数書きました。そのコードを特に使うこともなく置いていたので、それらのアルゴリズムの動作をインタラクティブな形で可視化したら面白いのではないかと考えました。 本記事の良い点は、コードが全てブラウザで実行できることです。つまり、アルゴリズムの動作をより把握するために、各アルゴリズムのハイパーパラメータをインタラクティブにセットしたり、初期位置を変更したり、どの関数が呼び出されるかを変更したりすることができるのです。 (編注:本記事ではスクリーンショットのみ公開しており
ハミルトニアンモンテカルロ法(HMC)の動作原理をアニメーションを用いて理解してみようという記事です。 先日の記事、「【統計学】マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングをアニメーションで解説してみる。」の続編にあたります。 豊田先生の書籍「基礎からのベイズ統計学」の例題を使わせていただき、サンプリング対象の分布は今回ガンマ分布とします。本記事ではアニメーションに使った部分の理論的な解説しかしませんので、HMCの詳細な解説はこちらの書籍をご参照いただければと思います。 はじめに 推定する対象は$\theta$を変数としたガンマ分布です。ベイズ推定で推定したいパラメーターを$\theta$で表すので、$\theta$の分布として表されます。1 ガンマ分布はこちらです。 $$ f(\theta|\alpha, \lambda) = {\lambda^{\alpha} \over
プログラムで使うことの多い「乱数」。ゲーム開発やビジュアルアート、ウェブサイトのアニメーションにおいて乱数は非常に重要で、さまざまな用途で利用されています。プログラムで一般に乱数と聞くと、すべての数値が同じ頻度(分布)で出現する「一様乱数」と呼ばれる乱数をイメージする方が多いと思います。 多くの場合はこの「一様乱数」で取得した乱数を用いれば十分でしょう。しかし、場合によっては「一様乱数」ではなく、偏りのある乱数を用いることでコンテンツの見た目や現象の「自然さ」を演出することが可能です。 実は「一様乱数」に一手間加えることで、乱数の分布の偏りを制御できます。今回は乱数を使用して好みの分布を得るためのパターンをいくつか紹介します。 乱数分布のシミュレーションデモ (HTML5製) 次のデモはリアルタイムで乱数の出現頻度を計算し、グラフに可視化するコンテンツです。画面下のプルダウンで乱数の種類を
$k$は定数で、だいたい0.04~0.06くらいです。Rの値によって以下のように分類できます。 Rが大きい: corner Rが小さい: flat R < 0: edge 図にすると、以下のようになります。 CSE/EE486 Computer Vision I, Lecture 06, Corner Detection, p22 これで手早くcornerを検出できるようになりました。ここで、corner検出についてまとめておきます。 cornerは複数のedgeが集まる箇所と定義できる 変化量をまとめた行列の固有ベクトルからedgeの向き、固有値の大きさから変化量の大きさ(edgeらしさ)がわかる 2つの固有値の値を基に、edge、corner、flatを判定できる 固有値の計算は手間であるため、判定式を利用し計算を簡略化する なお、Harrisはedgeの向きである固有ベクトルを考慮す
ちょっととあるところで出くわしたので。 アルゴリズム苦手勢として、やったことはまとめておきたい。 あるデータ列Xがあって、Xのk個ずつの区間でのそれぞれの和を必要とする問題。(k≦|X|=N) 安直にやったら t_element x[N], r[N-K]; t_counter i, j; for (i = 0; i < N - K; i++) { r[i] = 0; for (j = 0; j < K; j++) { r[i] += x[i + j]; } } みたいな感じな気がする(コンパイルしてない)。でも超絶遅い。 でぐぐってみたら http://togetter.com/li/617816 の記事というかまとめを発見。累積和なるものを知る。 要は、 こんなことすると速くなるで、ってこと。 残念ながらそれまでの自分の頭のなかは画像の一番最後辺りの # zsh echo $(($(e
AWS上で楽に機械学習できるAmazon Machine Learningというものが話題になっています。 Amazon Machine Learning は、どのスキルレベルの開発者でも、機械学習テクノロジーを簡単に使用できるようになるサービスです。Amazon Machine Learning では、複雑な機械学習(ML)アルゴリズムおよびテクノロジーを学習する必要なく、 ML モデルの作成プロセスを説明する仮想化ツールおよびウィザードを提供します。 www.gixo.jp 今回はそのチュートリアルを通してやってみたので、ちょっとしたメモ書きを残しています。 英語が苦手な私でも、画面キャプチャーと太字以外を読み飛ばして40分くらいで終わったので、気になっている方は一回やってみると良いです。 すぐに使えるようになると思います Tutorial: Using Amazon ML to Pr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く