タグ

Algorithmとalgorithmに関するtanakaBoxのブックマーク (301)

  • Open-sourcing F14 for faster, more memory-efficient hash tables

    Open-sourcing F14 for faster, more memory-efficient hash tables Hash tables provide a fast way to maintain a set of keys or map keys to values, even if the keys are objects, like strings. They are such a ubiquitous tool in computer science that even incremental improvements can have a large impact. The potential for optimization led to a proliferation of hash table implementations inside Facebook,

    Open-sourcing F14 for faster, more memory-efficient hash tables
  • 「写像12相」を総整理! 〜 数え上げ問題の学びの宝庫 〜 - Qiita

    0. はじめに: 「数え上げ」という分野について 「条件を満たすものを数え上げる」タイプの問題にはパズルのような楽しさがあります。そのような問題のうち簡単なものは高校数学の「個数の処理・確率」で学ぶのですが、その先にも奥深い世界が待っています。 例: 数え上げテクニック集 (DEGwer さん) 例: 数え上げおねえさん (ERATO 湊離散構造処理系プロジェクト) 記事では数え上げ問題を解くと度々登場する「写像12相」について整理します。写像12相の中でも特に高度なスターリング数と分割数をメインに取り上げます。これらのテーマが直接的に登場する問題はあまり多くはないですが、包除原理や動的計画法といった技法を学べる格好の題材です。簡単な部分についても重複組合せなどの教育的要素を多く含んでいます。 そんな事情もあって、chokudai さんも「競プロで使う基礎的な数学は写像12相がわかればと

    「写像12相」を総整理! 〜 数え上げ問題の学びの宝庫 〜 - Qiita
  • 15パズル

    最近, 高木貞治先生の「数学小景」を眺めていたら, その中に「十五の駒遊び」という題で15パズルの話があった. ところで, 最近知った15パズルの面白い解き方は, 福岡教育大学の藤さんの提案する「回転型操作」によるものだ. 2件の論文がある. 情報処理学会研究報告にある「スライドパズルにおける回転型操作とアクセスビリティ」と, 近着の数式処理にある「Loop generatorによる15パズルの最適アルゴリズムとGod's numberについて」. 私は明解な手順には関心があるが, 最短手順には興味がないので, 後の論文は眺めた程度であった. 前の論文も解法は数式処理しシステムGAPを使って記述してあるので, GAPに馴染まぬ凡人にはとんと理解し得ぬ. 以下では私がSchemeで書いたプログラムの考え方を述べる. この回転操作(英語ではloop generatorというらしい)は, 前回

  • Pythonでプログラミング問題解きつつアルゴリズムを初心者向けに図解する -

    青木です。paizaラーニング担当のエンジニアです。 paizaで公開しているプログラミングゲームエンジニアが死滅シタ世界〜アンドロイドとふたりぼっちで生きろ〜』、みなさんチャレンジしていただけましたでしょうか? 先日すべての問題の解答コードを公開しましたが、今回はこの中でもっとも難易度の高い「有名なプールサイド [MISSION LEVEL: A]」の問題の概要と解法について図解で解説します。 paiza.hatenablog.com 「とりあえずどんな問題か知りたい」「やってみたけど解けなかった」といった方の参考になればと思います。 ちなみに、こちらの問題はランキング問題となっており、上位スコア獲得者はランキングに掲載されます。 後半ではより効率的な解き方でスコアを高めていく方法についても解説しますので、「とりあえず正解はできるけどスコアが伸びない」「もっといい感じの解き方が知りたい

    Pythonでプログラミング問題解きつつアルゴリズムを初心者向けに図解する -
  • ゲームを解く!Educational DP Contest K, L 問題の解説 - Qiita

    0. ゲームを解くとは 世の中には将棋や、囲碁や、オセロのような複雑で難しいゲームから、マルバツゲームや、割りばしゲームや、立体三目並べのような比較的単純なゲームまで、たくさんの種類のゲームがあります。 この種の二人プレイのボードゲームにはある共通の特徴があります。それは 双方が最善を尽くした場合において、「先手必勝」か「後手必勝」か「引き分け」かが予め決まっている。 そして無限の計算時間と計算機資源さえあれば、それを容易に解析できる。 という点です。このように 「先手必勝」か「後手必勝」か「引き分け」なのかを解析する その必勝手順を求める できれば + α として初期盤面だけでなく、すべての局面について「先手勝ち」か「後手勝ち」か「引き分け」かも特定して最善手も求める という営みが「ゲームを解く」ということであり1、それができたならばそのゲームを「完全に理解した」ということができます。

    ゲームを解く!Educational DP Contest K, L 問題の解説 - Qiita
  • 3DCGにおける新たな群衆シミュレーション・アルゴリズムが論文にて登場。一人ひとりに視覚を与え最適な選択をさせることで衝突のない群衆歩行運動を提案

    3DCGにおける新たな群衆シミュレーション・アルゴリズムが論文にて登場。一人ひとりに視覚を与え最適な選択をさせることで衝突のない群衆歩行運動を提案 2017-04-26 3DCGにおいて、群衆をシミュレートする新たなアルゴリズムが論文にて公開されました。(PDF) 論文では、視覚に基づく群衆シミュレータの品質を大幅に改善し、ぶつかることのない運動ループを提案します。 それは、群衆一人ひとりに視覚を与えることで周囲を理解させ、最適な選択肢を選んで動いてもらうアプローチで、各個人は目の前の障害物を避け最適な行動をします。 例えば、向こう側から歩いてくる人を避けて歩いたり、スピードを変化させ回避したり、それを群衆一人ひとりが行い、結果として衝突のない軌道に沿った群衆シミュレーションを表現します。

  • kazoeage.pdf

    読み込んでいます…

    kazoeage.pdf
  • 制御理論としての動的計画法 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに:冷戦と動的計画法 動的計画法とは何でしょうか? いきなりですが、日語版Wikipediaを引用します。 動的計画法 - Wikipedia 動的計画法(どうてきけいかくほう、英: Dynamic Programming, DP)は、計算機科学の分野において、アルゴリズムの分類の1つである。対象となる問題を複数の部分問題に分割し、部分問題の計算結果を記録しながら解いていく手法を総称してこう呼ぶ。 おそらく、Qiitaを見る人の大半もこのような認識ではないでしょうか。 「あーなんかナップサック問題とか解くんでしょ? 表の数字を端

    制御理論としての動的計画法 - Qiita
  • DPの話 - aizuzia

    この記事は Competitive Programming Advent Calendar のために作成されました。 「DP (Dynamic Programminng: 動的計画法) がよく分からない」というつぶやきをよく目にします。何から何まで分からないというわけではないけど、 「こういうDPをすれば解けるよ」と説明されれば理解できるけど、一からそれを思い付けない メモ再帰だと書けるけどループだと書けない、またはその逆 とかいう。 この記事は、DPという技法をより深く理解する手助けをすることを目的として書かれています。これを読めばどんなDPの問題もさくさく解ける・・・ことはないと思いますが、あんまり悩まずに実装できるようになるぐらいの効果はあるんじゃないかなと思います。想定する読者層は、簡単なDPの問題をいくつか解いたことがある、TopCoderレーティング 1500 未満ぐらいの人と

    DPの話 - aizuzia
  • Maze Algorithms

    If you're interested in maze algorithms, I've written a book about the subject: "Mazes for Programmers". Check it out! The source code for these demos is freely available at http://github.com/jamis/csmazes. Recursive Backtracking

  • 意外と解説がない!動的計画法で得た最適解を「復元」する一般的な方法 - Qiita

    NTTデータ数理システムでアルゴリズムを探求している大槻 (通称、けんちょん) です。 好きなアルゴリズムは最小カットやマッチングですが、会社ではなぜか「動的計画法が好きな人」と呼ばれています。今回は動的計画法を用いて得られた最適解を復元するための汎用的な方法について紹介します。 0. はじめに 動的計画法を用いて効率的に解くことのできる最適化問題は数多くあります。パッと思いつくだけでも ナップサック問題 迷路などの最短路問題 区間スケジューリング問題 音声認識パターンマッチング問題 レーベンシュタイン距離 発電計画問題 分かち書き 隠れマルコフモデル ... などなど、多種多様な分野の問題を動的計画法によって効率よく解くことができます。このように、分野横断的な活用をできることが、動的計画法をはじめとした数理工学的手法の特長であり醍醐味であると常々感じています。今回は動的計画法によって得ら

    意外と解説がない!動的計画法で得た最適解を「復元」する一般的な方法 - Qiita
  • 「無限に都市が生成されるアルゴリズム」で生成された都市を自由に歩き回ってみた - GIGAZINE

    波動関数とは「物体の状態そのもの」が波動で表されるという関数であり、時にはゲーム内の物理シミュレーションなどに利用されることもあります。そんな波動関数がある1つの固有の状態に収縮することを波動関数の崩壊と呼び、そんな波動関数の崩壊を用いた「無限に都市が生成されるアルゴリズム」を作り出す猛者が登場。実際にどのような都市生成ツールになっているのか、実際にダウンロードして試してみました。 Wave Function Collapse by marian42 https://marian42.itch.io/wfc GitHub - mxgmn/WaveFunctionCollapse: Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics. https://g

    「無限に都市が生成されるアルゴリズム」で生成された都市を自由に歩き回ってみた - GIGAZINE
  • RGB ビット深度のうんちく (前編) 〜 前提知識

    前篇、中編、後編の三部作に分けます。この記事は前編です、 ビット深度自体は知ってて具体的な処理を知りたい方は、この記事を読み飛ばして中編から読んでください。 RGB ビット深度のうんちく (前編) 〜 前提知識 https://qiita.com/yoya/items/41b00127b0b1fea8c4f1 RGB ビット深度のうんちく (中編) 〜 実数型と整数型の変換 https://qiita.com/yoya/items/6ee02736f1db8bdd520e RGB ビット深度のうんちく (後編) 〜 整数型同士の変換 https://qiita.com/yoya/items/3509bbb54c0732865882 サンプルデモを作りました。任意の画像のビット深度を変更できます。お試し下さい。 http://app.awm.jp/image.js/bitdepth.html

    RGB ビット深度のうんちく (前編) 〜 前提知識
  • GeeksforGeeks

    Tech Interview 101 - From DSA to System Design for Working Professionals

    GeeksforGeeks
  • Master theorem (analysis of algorithms) - Wikipedia

    In the analysis of algorithms, the master theorem for divide-and-conquer recurrences provides an asymptotic analysis for many recurrence relations that occur in the analysis of divide-and-conquer algorithms. The approach was first presented by Jon Bentley, Dorothea Blostein (née Haken), and James B. Saxe in 1980, where it was described as a "unifying method" for solving such recurrences.[1] The na

  • 【技術解説】集合の類似度(Jaccard係数,Dice係数,Simpson係数) - ミエルカAI は、自然言語処理技術を中心とした、RPA開発・サイト改善・流入改善レコメンドエンジンを開発

    執筆:金子冴 前回の記事(【技術解説】似ている文字列がわかる!レーベンシュタイン距離とジャロ・ウィンクラー距離の計算方法とは)では,文字列同士の類似度(距離)が計算できる手法を紹介した.また,その記事の中で,自然言語処理分野では主に文書,文字列,集合等について類似度を計算する場面が多いことについても触れた.今回は集合同士の類似度を表現する以下の3つの係数と計算方法について解説する. ●Jaccard係数 ●Dice係数 ●Simpson係数 その前に,自然言語処理で類似度を表す指標について確認しよう. 自然言語処理で使用される類似度(距離) 自然言語処理の分野では,類似度を測る対象によって手法を使い分ける. ここでは事前に,主に使用される手法について確認しておこう. ベクトル同士の類似度 ●コサイン類似度 ●ピアソンの相関係数 ●偏差パターン類似度 集合同士の類似度(今回の解説対象) ●J

    【技術解説】集合の類似度(Jaccard係数,Dice係数,Simpson係数) - ミエルカAI は、自然言語処理技術を中心とした、RPA開発・サイト改善・流入改善レコメンドエンジンを開発
  • ESMAJ

    Contents EXACT STRING MATCHING ALGORITHMS Animation in Java Christian Charras - Thierry Lecroq Laboratoire d'Informatique de Rouen Université de Rouen Faculté des Sciences et des Techniques 76821 Mont-Saint-Aignan Cedex FRANCE

    tanakaBox
    tanakaBox 2018/09/06
    文字列探索アルゴリズム。膨大。
  • OpenDataStructures.jp

    オープンソース版 Open Data Structures 日語訳の PDF ファイルを以下で公開しています。最新のソースコードは GitHub のリポジトリ https://github.com/spinute にあり、適宜こちらの PDF ファイルに反映しています。 以下のものは C++ 版です(Java 版はこちら、疑似コード版はこちらにあります)。 目次 訳者まえがき 書の読み方 訳者謝辞 なぜこのを書いたのか 謝辞 第1章 イントロダクション 効率の必要性 インターフェース 数学的背景 計算モデル 正しさ、時間計算量、空間計算量 コードサンプル データ構造の一覧 ディスカッションと練習問題 第2章 配列を使ったリスト ArrayStack:配列を使った高速なスタック操作 FastArrayStack:最適化された ArrayStack ArrayQueue:配列を使ったキュ

    OpenDataStructures.jp
  • ‪実世界で超頻出!二部マッチング (輸送問題、ネットワークフロー問題)の解法を総整理!‬ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 0. はじめに --- 二部マッチング問題は実世界で超頻出 はじめまして。NTTデータ数理システムでアルゴリズムを探求している大槻 (通称、けんちょん) です。 好きなアルゴリズムはタイトルにもある二部マッチングですが、会社ではなぜか「DP が好きな人」と呼ばれています。 以前に動的計画法 (DP) の典型パターンを整理した記事を執筆したのですが、DP と並んで超頻出の話題として二部マッチング問題があります。二部マッチング問題とは、例えばマッチングアプリなどに見られるように、2 つのカテゴリ間で最適なマッチングを構成していく問題です。実

    ‪実世界で超頻出!二部マッチング (輸送問題、ネットワークフロー問題)の解法を総整理!‬ - Qiita
  • ハミング符号 : データの誤り検知/訂正をインタラクティブに学ぶ | POSTD

    今週お話しするのは、誤りの検知についてと、さらに誤りの訂正についてです。 我々が住んでいる世界は完璧ではなく、デジタルの信号(on/off)を扱う時でさえ誤りが生じます。電力の異常によりビットが反転することがあるのです。ハードウェアも失敗を起こすことがあり、信号が歪められることもあります。 デジタル信号に生じた誤りを検知する方法については既に過去に書いたことがあります。もっとも一般的なやり方は、ある種のパリティビット(ご存知なくともご心配なく。以下でパリティの意味を説明します)です。ある長さの単語に対し、シンプルなパリティビットをたった1つ加えることで、単語中のビットが1つ反転した場合にそれを検知することができます。「エラーが起こったことがわかる」ということは有益ですが、1個のパリティビットだけではその誤った信号を修復することができません。また、信号中に2個以上の誤りがあった場合、その誤り

    ハミング符号 : データの誤り検知/訂正をインタラクティブに学ぶ | POSTD