タグ

algorithmに関するs_moriのブックマーク (84)

  • 操車場アルゴリズム - Wikipedia

    中置記法からRPNへの変換は、数式を簡単に単純化するのにも使える。そのためにはRPNの式を評価するようにし、値がヌルの変数が出てきたり、値がヌルの演算子が出てきたら、そのパラメータと共に出力に書き込めばよい(これは単純化であり、パラメータが別の演算子だった場合には問題が生じる)。ヌルのパラメータがない演算子の場合は、単にその値を出力に書き込めばよい。この技法は明らかにあらゆる単純化を含んでいるわけではない。それは定数畳み込みの最適化に近い。 C言語での実装例[編集] #include <string.h> #include <stdio.h> #include <stdbool.h> // 演算子 // 優先順位 : 演算子 : 結合性 // 4 :  !  : 右結合性 // 3 : * / % : 左結合性 // 2 : + -  : 左結合性 // 1 : =  : 右結合性 int

    操車場アルゴリズム - Wikipedia
  • 木構造 (データ構造) - Wikipedia

    この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2023年1月) 用語[編集] 木構造は、一般のグラフ構造と同様の、ノード(節点、頂点)とノード間を結ぶエッジ(枝、辺)あるいはリンクで表すこともできるが、木構造専用の、特に有向の根付き木となるような表現が使われることも多い。 データ構造として使われる木は、ほとんどの場合、根となるノードが決められた根付き木である。さらに、有向木であることも多い。[注 1] ノード間の関係は家系図に見立てた用語で表現される。木構造内の各ノードは、0個以上の子ノード (英: child node) を持ち、子ノードは木構造内では下方に存在する(木構造の成長方向は下とするのが一般的である)。子ノードを持つノードは、子ノードから見れば親

    木構造 (データ構造) - Wikipedia
  • PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記

    PHPPythonRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 稿では3言語の連想配列の従来実

    PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記
  • マルコフモデル ~概要から原理まで~ (後編) | POSTD

    記事は、元記事を翻訳した記事の後編となります。 A節については 前編 をご参照ください。 もう一歩進んだマルコフモデル ???? **免責事項** ???? 上で説明したマルコフモデルを作る時と同じプロセスで進めますが、いくつかのステップは省きます。もし、何か分からないことが出てきたら、最初のセクションを参照してください???? 1.スケールアップした例 最初のドクター・スースの言葉はそのまま取っておき、私が更に見つけた、ドクター・スースの 不朽の 名言を4つご紹介します。 Today you are you. That is truer than true. There is no one alive who is you-er than you You have brains in your head. You have feet in your shoes. You can ste

    マルコフモデル ~概要から原理まで~ (後編) | POSTD
  • マルコフモデル ~概要から原理まで~ (前編) | POSTD

    記事は、元記事を翻訳した記事の前編となります。 B/C/D節については後編をご参照ください。 “マルコフモデルとは何か” という議論は昔からありますが、もし皆さんがその答えを知りたいのであれば、正直なところ、ウィキペディアを見る(または以下のTLDRだけを読む????)ことをお勧めします。一方、マルコフモデルの概要やこのモデルが重要である理由、およびその実装方法に興味があり、サンプルを通じて理解を深めたいという方は、この記事を引き続きご覧ください(^ ^)。以下で、 具体例を挙げて説明します。 TLDR: 確率論 において、マルコフモデルは不規則に変化するシステムを モデル化 するための 確率モデル である。なお、未来の状態は現在の状態のみに左右され、過去に起きた事象には影響されないと仮定する(つまり、 マルコフ性 を仮定する)。 引用元: https://en.wikipedia.or

    マルコフモデル ~概要から原理まで~ (前編) | POSTD
  • 巷で話題のGoogleのSHA-1衝突やってみた | 73spica's Blog

    最近,ハッシュの一種であるSHA-1について,米Googleが初めて衝突に成功させたということが話題になりました.その衝突ハッシュを使った衝突例として,SHA-1の一致する二つのPDFを作成していました. その方法について説明されている資料があったので自分でもSHA-1を衝突させたPDFを作成してみました.その方法について書こうと思います. はじめに 記事はGoogleの発見したNear-collision Pairを用いて二つの異なるPDFのSHA-1を衝突させる(SHA-1の異なる二つのPDFを作る)手法を解説した記事ですが,以下の点について知識が不足している部分があります. PDFのフォーマット この点については,衝突の原理に直接かかわらないので細かく調べていませんがご了承ください.そしてもし詳しい方がいたらその点ご指摘いただけたらありがたいです. SHA-1? ハッシュ関数? 衝

    巷で話題のGoogleのSHA-1衝突やってみた | 73spica's Blog
  • 現役エンジニアが選ぶ、初心者でもアルゴリズムについて学べる4冊の書籍 - paiza開発日誌

    こんにちは。谷口です。 プログラミング初心者のみなさんは、アルゴリズムについて勉強された経験がありますか? 「プログラミングは勉強しているけど、アルゴリズムについてきちんと勉強したことはない」「プログラミング言語の書き方やフレームワークなどの勉強を優先しているから特にやっていない」という方も多いと思います。 ただアルゴリズムを全然知らないと、ちょっと開発が複雑になってきたときに どう実装すべきかわからない とりあえず力技で作る 力技で作ったコードは改修が面倒 できる人に「もっといいやり方がある」と言われる しかし自分ではその「いいやり方」を思いつけない… …といったことも起こりえます。 そこで今回は、paizaを作っているエンジニアたちに、実際に読んでアルゴリズムの勉強に役立った書籍を聞いてきました。 アルゴリズム初心者の方の参考になればと思います。 長田です。ブログでは健康オタクエンジニ

    現役エンジニアが選ぶ、初心者でもアルゴリズムについて学べる4冊の書籍 - paiza開発日誌
  • マクドナルドは、頑なにフォーク並びを拒みますがなぜでしょう? 自発的に発生したフォーク並びさえ解散させています。

    回答 (7件中の1件目) そんなにマクドナルドで並んだ事はありません。いく時間が空いてる。いく店が空いてる。なのかしら… 結構な商業施設内のマクドナルドに比較的よく行ってましたが、そこはどうやら並んでいる様子なし。でも、レジが空いたり、隣のレジが開いたりしたら、 お先にお待ちの方どうぞ って声をかけてくれます。お客も結構お行儀がいいだけじゃなく、声かけがちゃんと お先にお待ちの方へと目線と共にされてました。 行列で待つ事を強いられないとこ 好きでした。

    マクドナルドは、頑なにフォーク並びを拒みますがなぜでしょう? 自発的に発生したフォーク並びさえ解散させています。
  • 計算量オーダーについて - Qiita

    プログラムの計算量を表すO記法について、使用例を調査しました。 計算量(オーダー)とは? あるアルゴリズムを使った演算の性能を表す指標。 計算量は大きく二つに分けられる。 時間計算量(処理時間の計算量) 空間計算量(メモリ使用量の計算量) 単に計算量(オーダー)と言った場合、時間計算量のことを指す。 O記法(オーダー記法) 特定のアルゴリズムでの計算が、どれくらい掛かるかを表した記号。 処理対象のデータが非常に大きくなった時の処理時間を大雑把に評価する。 処理時間が短い順(性能が良い順)に代表的なオーダーをまとめる。 O記法 概要 使用例

    計算量オーダーについて - Qiita
  • SAT/SMTソルバの仕組み

    Proof Summit 2015 &lt;http: /> で発表した、SAT/SMTソルバの仕組みです。 Proofということで、論理学的側面からの面白さを出来るだけ紹介しています。

    SAT/SMTソルバの仕組み
  • バージョンの充足可能性問題 | POSTD

    (注:2017/02/06、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) Dependency HellはNP完全ですが、この状況から脱却できるかもしれません。 パッケージにおけるバージョン選択の問題とは、完全である(全ての依存関係を満たしている)かつ互換性のある(互換性のない2つのパッケージが選択されていない)トップレベルパッケージPをビルドするために使われる依存関係の集合を見つけることです。ただし、菱形依存問題があるので、このようなセットは存在しない可能性があります。菱形依存問題とは、AはBとCが必要、BはDのバージョン2ではなくバージョン1が必要、CはDのバージョン1ではなくバージョン2が必要といったような問題のことです。この場合、Dの両方のバージョンを選択することはできないため、Aをビルドすることができないわけです。 パッケ

    バージョンの充足可能性問題 | POSTD
    s_mori
    s_mori 2018/04/17
    SATソルバ
  • 鳩の巣原理 - Wikipedia

    n = 10 羽の鳩が m = 9 つの巣の中にいる。したがって少なくとも1つの巣には2羽以上の鳩がいる。 鳩の巣原理(はとのすげんり、英: Pigeonhole principle)[1]、またはディリクレの箱入れ原理(ディリクレのはこいれげんり、英: Dirichlet's box principle, Dirichlet's drawer principle)、あるいは部屋割り論法とは、n 個の物を m 個の箱に入れるとき、n > m であれば、少なくとも1個の箱には1個より多い物が中にある、という原理である。別の言い方をすれば、1つの箱に1つの物を入れるとき、m 個の箱には最大 m 個の物しか入れることができない(もう1つ物を入れたいなら、箱の1つを再利用しないといけないから)、ということである。 鳩の巣原理は数え上げ問題の例の一つで、一対一対応ができない無限集合など、多くの形式的

    鳩の巣原理 - Wikipedia
  • トポロジカルソート - Wikipedia

    トポロジカルソート(英: topological sort)は、グラフ理論において、有向非巡回グラフ(英: directed acyclic graph, DAG)の各ノードを順序付けして、どのノードもその出力辺の先のノードより前にくるように並べることである。有向非巡回グラフは必ずトポロジカルソートすることができる。 有向非巡回グラフのノードの集合に到達可能性関係 R (ノード x から y への(各辺の向きに逆行しない)経路が存在するとき、またそのときに限り xRy とする)を定めると、R は半順序関係となる。トポロジカルソートとは、この R を全順序になるように拡張したものとみなせる。 例[編集] トポロジカルソートの典型的な利用例はジョブのスケジューリングである。トポロジカルソートのアルゴリズムはPERTというプロジェクト管理手法[1]のスケジューリングのために1960年代初頭に研究

    トポロジカルソート - Wikipedia
  • レコメンド – アイテムベース協調フィルタリング –

    こんにちは江口です。 今回は、先日社内勉強会で以下の内容について発表しましたので、ブログでも共有させて頂きます。 【概要】 ・アイテムベース協調フィルタリング(商品レコメンド) – アイテムベース協調フィルタリングを実装してみた – ユーザーが購入した商品の中からjaccard指数で類似商品を見つけ出す – 対象商品をベースに同じ商品を購入している別のユーザーが購入した別の商品をレコメンド – あとdjango使ってみた ▼技術要件 ・python 3.6.1 ・django1.9 ・herokuDB・・・heroku上はpostgress、localはsqlite3 ▼レコメンドアルゴリズムについて 今回試してみたのは、「アイテムベース協調フィルタリング」と呼ばれる、商品が主語となる簡易的なレコメンドアルゴリズムになります。 よく見る「この商品を買った人はこんな商品も〜」みたいにオス

    レコメンド – アイテムベース協調フィルタリング –
  • ページ置換アルゴリズム - Wikipedia

    ページ置換アルゴリズム(ページちかんアルゴリズム)とは、仮想記憶管理としてページング方式を使用するコンピュータのオペレーティングシステムにおいて、空き物理ページが少ない状態で新たなページを割り当てなければならないときにどのページを「ページアウト(スワップアウト)」するかを決定する方法を意味する。これはページフォールトが発生したときに使用可能なフリーなページが存在しないときに発生する。厳密には発生条件はシステムの種類や設定によって異なるが、フリーなページが全く無い場合か、あらかじめ設定したしきい値よりもフリーなページ数が少ないときに発生する。 以前にページアウトすべきページとして選択され置換されたページに再度アクセスが発生したら、そのページをページインする必要がある。そして、これにはI/Oの完了を待たなければならない。この、ページインを待つ時間の累計が小さいほどページ置換アルゴリズムが優秀で

  • キャッシュアルゴリズム - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "キャッシュアルゴリズム" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2023年8月) キャッシュアルゴリズム(英: cache algorithm)は、コンピュータ上で情報を格納するキャッシュを管理するプログラムまたはハードウェア構造を最適化するアルゴリズム群。キャッシュが一杯になったとき、このアルゴリズムで新たな情報を格納するための場所を選択し確保する。置換アルゴリズムあるいは置換ポリシーとも。 キャッシュのヒット率(hit rate)とは、探しているデータがキャッシュ上で見つかる率(頻度)である。キャッシュサイズを増やさずにヒット

    キャッシュアルゴリズム - Wikipedia
  • 基礎からはじめる物理ベースレンダリング - Qiita

    Help us understand the problem. What are the problem?

    基礎からはじめる物理ベースレンダリング - Qiita
  • 編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー

    昨日 最長共通部分列問題 (LCS) について触れました。ついでなので編集距離のアルゴリズムについても整理してみます。 編集距離 (レーベンシュタイン距離, Levenshtein Distance) は二つの文字列の類似度 (異なり具合) を定量化するための数値です。文字の挿入/削除/置換で一方を他方に変形するための最小手順回数を数えたものが編集距離です。 例えば 伊藤直哉と伊藤直也 … 編集距離 1 伊藤直と伊藤直也 … 編集距離 1 佐藤直哉と伊藤直也 … 編集距離 2 佐藤B作と伊藤直也 … 編集距離 3 という具合です。 編集距離はスペルミスを修正するプログラムや、近似文字列照合 (検索対象の文書から入力文字にある程度近い部分文字列を探し出す全文検索) などで利用されます。 編集距離算出は動的計画法 (Dynamic Programming, DP) で計算することができることが

    編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー
  • 自然言語処理における前処理の種類とその威力 - Qiita

    自然言語処理に前処理は不可欠です。テキストは文字の羅列であり構造化されていないため、そのままでは処理するのが難しいです。特にWebテキストの中には HTMLタグ や JavaScript のコードといったノイズが含まれています。このようなノイズは前処理して取り除かなければ期待する結果は得られないでしょう。 出典: Deep learning for computational biology 記事では自然言語処理における前処理の種類とその威力について説明します。説明順序としては、はじめに前処理の種類を説明します。各前処理については、1.どんな処理なのか、2.なぜその処理をするのか、3.実装方法(なるべく) という観点から説明します。種類について説明した後、前処理の威力を測るために前処理をした場合としなかった場合での文書分類の結果を比較します。 前処理の種類と実装 この節では以下に示す5つ

    自然言語処理における前処理の種類とその威力 - Qiita
  • 私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD

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

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