タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Algorithmとalgorithmとprogrammingに関するmanabouのブックマーク (79)

  • 「プログラミングの常識」を時々見直す必要性について|Rui Ueyama

    自分の中のプログラミングの常識というものは、ときどき現実のハードウェアに合わせて調節しないといけない。ハードウェアが進歩し続けているので、コンピュータで簡単にできることと相対的に難しいことのバランスが変化し続けているからだ。ここでは特にストレージにフォーカスして書こうと思う。 昔はメモリが相対的にとても貴重な資源だったので多くのプログラマがメモリを節約することに血道を上げていた。例えばWindowsの初期の頃に設計されたデータ構造には、メモリをバイト単位ででもいいから節約したいという意図の痕跡がいまでも多く見受けられる。DRAMの次に速い記憶装置はHDDだったので、メモリが足りなくなればHDDにデータを保存せざるを得ないのだが、DRAMとHDDのランダムアクセスの速度差は、机の上のの開いているページを見るのと、そのAmazonで注文して到着するのを待つのと同じくらいのスケールで違うの

    「プログラミングの常識」を時々見直す必要性について|Rui Ueyama
  • 差分検出アルゴリズム三種盛り - Object.create(null)

    こんばんは. 気がつけばもうずいぶんと涼しくなってきました. 勢い余って凍ってしまったりせぬよう, くれぐれも普段の言動にはお気をつけください. はじめに さて, 我々人類にはどうしても二つの文字列 (あるいは行ごとに区切られたテキスト) 間の差分を求めなければいけない瞬間が発生します. 先人たちはそういった時のために diff のようなツールを開発し, それを利用することで文明はめざましい発展を遂げてきました. しかしながら, 使用するアルゴリズムを比較検討したい場合, 「差分」の定義を変えるなどして既存のアルゴリズムに変更を加えたい場合, diff のない異世界に飛ばされて自分で実装しなければいけない時などにおいては, 差分検出アルゴリズムについての理解が必要不可欠です. というわけで, この記事では文字列間の差分検出とは何かということと, 差分を求める三種類のアルゴリズムの紹介・解説

    差分検出アルゴリズム三種盛り - Object.create(null)
  • 木構造の整形表示コマンド forest を作った - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    木構造の整形表示コマンド forest を作った - Qiita
  • 科学者のあり方を変える帰納プログラミング - SmartNews Engineering Blog

    こんにちは。スマートニュースの高橋力矢です。前回のブログでデータ分析+ゲーム理論を題材として、帰納と演繹をまとめる利点をお伝えしました。なんらかの入力 (e.g., ゲーム理論における利得表) があり、特定のアルゴリズム (e.g., 各プレイヤーの戦略的意思決定) を記述することで出力 (e.g., ナッシュ均衡) を得るアプローチは、ほとんどのソフトウェア・エンジニアが慣れ親しんでいるプログラミングそのものです。つまり多くのエンジニアが手がけるプログラミングの実態は演繹的プログラミングです。ではこの対極に位置する帰納プログラミング (Inductive Programming) はどの程度進歩しているでしょうか。 帰納プログラミングの一分野である確率プログラミング (Probabilistic Programming) は統計学や機械学習との関係が密接で、日でも利用者の多いStanを

    科学者のあり方を変える帰納プログラミング - SmartNews Engineering Blog
  • 円周率の16進数表現100億桁目を求めてみた! ― 円周率の世界記録をどのように検証するか ― - プログラムモグモグ

    あなたは円周率を何桁言えますか。3.14159…という、あの数字です。 円周率の小数部分は無限に続き、循環することもありません。 古来より、数学者は円周率の値を様々な幾何学的な近似や公式を用いて計算してきました。 その桁数は計算機の発明により飛躍的に伸び、収束の速い公式の発見や効率の良いアルゴリズムの発明などによって加速してきました *1。 5年前、私がまだ学生だった頃、円周率1億桁の計算に挑んだことがありました。 私にとって高精度計算の初めての挑戦で、様々な試行錯誤で苦労したのをよく覚えています。 itchyny.hatenablog.com 2017年現在、円周率計算の世界記録は22兆桁です。 円周率計算の歴史をご覧いただくとよく分かると思いますが、近年の円周率計算の世界記録からは次のような特徴が読み取れます。 2002年に1兆を超え、最新の記録 (2016年) は22兆桁 (10進数

    円周率の16進数表現100億桁目を求めてみた! ― 円周率の世界記録をどのように検証するか ― - プログラムモグモグ
  • Learning Modern 3D Graphics Programming

    List of Figures 1. Position Vectors2. Direction Vectors3. Vector Addition4. Vector Addition Head-to-Tail5. Vector Negation6. Vector Subtraction7. Vector Scaling8. An Image9. Normalized Device Coordinate Space10. Scan Converted Triangle11. Shared Edge Scan Conversion1.1. Data Flow to Vertex Shader1.2. Data Flow to Rasterizer2.1. Fragment Position2.2. Vertex Array Memory Map2.3. Multiple Vertex Attr

  • 私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD

    文:Daniel Sim 分析:Lee Shangqian、Daniel Sim、Clarence Ng ここ数ヶ月、シンガポールのMRT環状線では列車が何度も止まるものの、その原因が分からないため、通勤客の大きな混乱や心配の種となっていました。 私も多くの同僚と同じように環状線を使ってワンノースのオフィスに通っています。そのため、11月5日に列車が止まる原因を調査する依頼がチームに来た時は、ためらうことなく業務に携わることを志願しました。 鉄道運営会社SMRTと陸上交通庁(LTA)による事前調査から、いくつかの電車の信号を消失させる信号の干渉があり、それがインシデントを引き起こすことが既に分かっていました。信号が消失すると列車の安全機能である緊急ブレーキが作動するため、不規則に電車が止まる原因となります。 しかし8月に初めて発生した今回のインシデントは、不規則に起こっているように見えるた

    私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD
  • そうだ車輪と名づけよう

    n次元の距離と類似度を計算する 類似度と距離 – CatTail Wikiのサイトを見ながら、簡単そうなのをPHPで書いてみた。探せば普通にライブラリがありそうだが、はじめに手を動かすくらいはする。他にも色々載ってるのだけど、簡単そうなものだけピックアップ。 ミンコフスキー距離 ユークリッド距離が,各次元の差の平方和の平方根であったが,それをある種の一般化として,a乗和のb乗根としたのが,ミンコフスキー距離である.なお,a=bとして扱う定義もある.aが大きいほど,次元軸にとらわれない移動(斜め方向のショートカット)を重視する距離である. a=b=1がマンハッタン距離に,a=b=2がユークリッド距離に,a=b=∞がチェビシェフ距離に一致する. <?php $x = array(2, 3, 1); $y = array(4, 6, 1); print getMinkowskiDistance(

    そうだ車輪と名づけよう
  • 木の直径を求めるアルゴリズム - ペケンペイのブログ

    注意:議論が洗練されておらず、真面目に読むべき記事ではありません。信頼できそうなグラフ理論の書籍を読んだほうが良いと思います。ウェブ上で閲覧できる資料としては以下があり、そこの References を辿ると良いでしょう。 http://mathworld.wolfram.com/GraphCenter.html 中心が高々 2 個であることと、2 個あるならばそれらは隣接していることは F. Harary の ''Graph Theory'' に証明があります。p. 35 の Theorem 4.2 Every tree has a center consisting of either one point or two adjacent points. がそれです。頻繁に参照される記事ではありませんので、この記事を改訂する予定は今の所ありませんが、幾らか思うところがあるので希望があれば

    木の直径を求めるアルゴリズム - ペケンペイのブログ
  • https://qiita.com/akaneko3/items/8befac1cd5969aad2075

  • apollo11号のソースコードを読みつつ - aerith7’s blog

    これはなに? はじめに AGCあれこれ Temporary I HOPEHOPEHOPE ASTRONAUT NOW LOOK WHERE YOU ENDED UP ふと気になりました いい時代ですね 1201&1202エラー なにそれ? カ、カルマンフィルターだー!!! カルマンフィルターの開発経緯 その他面白コメントアウト集 TRASHY LITTLE SUBROUTINES(つまんないサブルーチン) NUMERO MYSTERIOSO(神秘の数字) OFF TO SEE THE WIZARD COME AGAIN SOON HONI SOIT QUI MAL Y PENSE(悪意を抱く者に災いあれ)、NOLI ME TANGERE(私に触れるな) PINBALL_GAME_BUTTONS_AND_LIGHTS.agc おわりに 反省 参考文献 これはなに? この記事はeeic Adv

    apollo11号のソースコードを読みつつ - aerith7’s blog
  • 文字列アルゴリズムの学びかた - Hatena Developer Blog

    こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに

    文字列アルゴリズムの学びかた - Hatena Developer Blog
  • 二分探索サンプルコード集(コピペ用) - まめめも

    二分探索は、感覚的なわかりやすさに反してバグが入りやすいことで有名なアルゴリズムです。20 の教科書のうち 15 でバグっていたという報告もあるそうです。 実際、自分も書くたびにバグに苦しんできました。変な値を返すだけでなく、out of bounds アクセスや無限ループもよく起きます。一旦動いたと思っても、後になってバグが発症することも多く、たちが悪いです。 そこで、きちんとテストした二分探索のサンプルコードを自分のコピペ用に作ってみました。 動作仕様 (境界探索版) ソートした配列 a に対して、「値が c 以上になる範囲のうちの一番左のインデックス」を返す関数 bsearch_min を書きます。 a = [0, 1, 1, 1, 2, 2, 2, 3] p bsearch_min(a, 2) #=> 4 値が c 以上になる値がない場合は a.size を返します。空配列の場合は

    二分探索サンプルコード集(コピペ用) - まめめも
  • [初心者向け] プログラムの計算量を求める方法 - Qiita

    はじめに この記事では、プログラムの計算量を求める方法を説明します。プログラミングの初心者向けに、厳密さよりも分かりやすさを優先して説明していきます。 サンプルコードについて この記事のサンプルコードは、C言語(C99)で記述しています。 計算量とは? 計算量とは、 「そのプログラムがどれくらい速いかを大雑把に表す指標」 です。 もう少し正確に言うと、 「入力サイズの増加に対して、実行時間がどれくらいの割合で増加するかを表す指標」 です。 グラフによる計算量の表現 計算量をグラフで表すと、以下のようになります。 これは、**「入力サイズ $n$ が増加するにつれて、実行時間が $n$ に比例して増加する」**ということを表しています。 別のグラフも見てみましょう。 これは、**「入力サイズ $n$ が増加するにつれて、実行時間が $n^2$ に比例して増加する」**ということを表しています

    [初心者向け] プログラムの計算量を求める方法 - Qiita
  • 電王・Ponanza開発者が語る、プロの定跡を揺らした将棋プログラム発の新戦法“左美濃急戦”

    こんにちは、将棋プログラム「Ponanza」の作者、山一成です。今回は将棋プログラムの「機械学習」に大きな変化をもたらしている“評価”についてをメインに話したいと思います。 将棋プログラムは大きく分けて、2つの部分から成り立っています。それは“探索”と“評価”です。“探索”とは、つまり“読むこと”で、将棋プログラムは1秒間に何百万もの局面を読めます。前回の並列化は、この“探索”の強化のお話でした。 そして、その読んだ局面の良し悪しを判断するのがもうひとつの部分、“評価”です。この“評価”が正しくできないとせっかくの“探索”が無駄になってしまうので、将棋プログラムにおいてこの“評価”作業はすごく重要なのです。 昔は年単位でかかっていた“評価”作業 将棋の局面をどのように評価すればいいか。 これは将棋プログラムにとって昔から重要なテーマでした。昔はそれこそ職人のように、開発者がひとつひとつ丁

    電王・Ponanza開発者が語る、プロの定跡を揺らした将棋プログラム発の新戦法“左美濃急戦”
  • 人工知能にムダな思考をさせない「枝刈り」の妙技

    人工知能に深く考えさせるには、手抜きが必要です。もっといえば、「どうでもいいこと」を人工知能に考えさせないことです。 前回は、将棋プログラムの先読みを盤面の全探索で行うアルゴリズムを説明しました。今回は全探索でなく、不要な探索を途中で打ち切る方法を見ていきます。これはゲーム木の探索を途中で打ち切り、ゲーム木の枝を刈ることになるので、「枝刈り」と呼ばれています。 評価関数と先読み、枝刈りの適用範囲は広い 探索の枝刈りを説明する前に、将棋の思考プログラムの全体像をおさらいしましょう。盤面の評価関数、評価関数を使った先読み、そして今回見ていく枝刈りなどのゲーム理論を、人工知能のどこに、どのように適用するかをもう一度見ていきます。 評価関数、先読み、枝刈りといったゲーム理論の技術は、とても適用範囲の広い技術です。もちろん、囲碁やリバーシなど、将棋と同じ「二人零和有限確定完全情報ゲーム」に適用できま

    人工知能にムダな思考をさせない「枝刈り」の妙技
  • プログラミング初心者だけどPythonでデータ解析することになった人に - Qiita

    ロードマップ Pythonの文法の基を抑える ちょっとしたアルゴリズム書けるようになる データ分析・科学計算ライブラリの基を理解する 業務・研究用のコードを書けるようになる Pythonの文法の基を抑える 方法はいくらでもあるから、自分にあった方法を選ぶ。 Web上のわかりやすそうな入門サイトを通読するのでもいいし 全然わからないのであれば、一冊買っても損はない 最近は動画もある。英語の動画を視聴できるのなら、尚の事幅が広がる いずれにせよ、むやみに時間をかける必要はなく、__全体像を掴む__だけでよい。 細かいことは実際にコードを書くときに__都度調べていく__ほうが身につきやすい。目的があるなら尚の事。 あとは__躓いた時にすぐ聞ける人__がいるとなおよい。そういう__先達がいるならば、その人のおすすめを聞く__と良い。 慣れてるならこういうまとめを観るだけでもいい http:

    プログラミング初心者だけどPythonでデータ解析することになった人に - Qiita
  • Quine Tweet: 自分自身へのリンクを持つ再帰的ツイート - まめめも

    This tweet is recursive. https://t.co/bZISaPd3Ts— Quine Tweet (@quine_tweet) 2016年9月19日 「このツイートはありません」となっていますが、URL をクリックすれば自分自身に飛べます。 以下、このツイートが生まれるまでの経緯を長々と書きます。 問題設定 そのツイート自身の URL を埋め込んだツイートを作ります。ツイートの URL はツイートをした後でないと決まらないし、ツイート文面を後から更新する手段はない(と思う)ので、単純ですが意外に難しい問題です。 調査 ご存知のように、現在のツイートの URL は次のような形式です。 https://twitter.com/<username>/status/<id>username はそのままなので、id を事前に予測できれば解決です。*1 調べてみるとこの id

    Quine Tweet: 自分自身へのリンクを持つ再帰的ツイート - まめめも
  • LeetCode - The World's Leading Online Programming Learning Platform

    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

  • プレイヤーが自然に感じる乱数の作り方 - A Successful Failure

    2015年11月10日 プレイヤーが自然に感じる乱数の作り方 Tweet ゲームでは擬似乱数がよく使われるが、ある種のゲーム数学的に精度の高い擬似乱数(たとえばMT)を用いているにも関わらず、コンピュータが有利になるように乱数を操作していると批判に晒されている。 実際、数学的に正しい乱数と、プレイヤーが自然と感じる乱数には、ある種の差が存在する。北陸科学技術大学院大学の池田研究室では、プレイヤーに自然に感じる乱数の生成に関する研究を行っている。 プレイヤーが不自然に感じる理由 数学的に正しい乱数に対してプレイヤーが不自然に感じる理由としては認知バイアスが考えられる。特に事象に関連する認知バイアスとして、次が挙げられている[1]。 確証バイアス: 人は自分のもつ仮説に一致する情報を求め、反証となる証拠を避ける傾向がある。ひとたび、サイコロが操作されていると感じると、それ以降、その仮説に都

    プレイヤーが自然に感じる乱数の作り方 - A Successful Failure