タグ

algorithmと(1)に関するkana321のブックマーク (5)

  • Rubyで実装して楽しむ古典データ構造再入門(平衡木編) - hama_duのブログ

    Competitive Programming Advent Calendar 2014 7日目です。 今回は古典的なデータ構造をRubyで実装してみます。 まず通常の木、二分木からはじめ、その次に二分探索木、そして二分探索木に少し機能を加え高性能にした平衡二分探索木を扱います。 冒険の地図 木 二分木 二分探索木 平衡二分探索木 ランダム挿入二分探索木 Treap 基 木(Tree) 以下の図は木の例です。一番上にある頂点(丸)を根と呼びます。各頂点に直接ぶら下がっている頂点たちをまとめて子と呼びます。子を持たない頂点を葉と呼びます。 頂点同士は辺(棒)で結ばれています。木には、辺によってループができないという特徴があります。 木の性質 木には素晴らしい性質があります。各頂点の子を根と考える(上の部分は無視する)と、それぞれの子も木になっているという点です。それらの木のことを部分木と呼

    Rubyで実装して楽しむ古典データ構造再入門(平衡木編) - hama_duのブログ
  • サイゼリヤの間違い探しが難しすぎたので大人の力で解決した

    こんにちは。河です。 僕はサイゼリヤに行くとまずキッズメニューの間違い探しを解くんですが、 今回は難しすぎたので、大人の力(=画像処理)で解決することにしました。 2014年9月版。みんなもやってみよう! (以下、間違い探しの答えが出てきます。見たくない人は↑の画像で頑張ってから読もう。) やり方 いろいろ書いてますが、左面と右面の違う部分を色の差分から見つけてるだけです。 紙の歪みを吸収するために、少しややこしいことをしてます。 (1) 間違い探しページの写真を撮る ↑の写真です。普通にiPhoneで撮りました。 (2) ページ領域を抽出する 画像からページの部分を見つける必要があります。 今回は面倒なので、左側は手作業で指定しました。 角を手作業でタグ付けして・・・ こっちは手作業。 射影変換で台形補正します。OpenCVならWarpPerspectiveです。 台形補正しても、紙が

    サイゼリヤの間違い探しが難しすぎたので大人の力で解決した
  • 言語実装パターン

    目次 『言語実装パターン』推薦のことば 謝辞 前書き 第I部 さあ、構文解析に取りかかろう 1章 言語アプリケーションのいろは 1.1 全体のあらまし 1.2 パターンを一巡する 1.2.1 入力文の構文解析をする 1.2.2 木を構築する 1.2.3 木の走査をする 1.2.4 入力が意味する内容を見つけ出す 1.2.5 入力文をインタプリタで実行する 1.2.6 ある言語から別の言語へと変換する 1.3 アプリケーションを解体する 1.3.1 バイトコードインタプリタ 1.3.2 Javaバグ検出器 1.3.3 Javaバグ検出器其の弐 1.3.4 Cコンパイラ 1.3.5 Cコンパイラを活用した C++実装 1.4 パターンを選んでアプリケーションを組み上げる 2章 基的な構文解析パターン 2.1 句の構造を識別する 2.2 再帰的下向き構文解析器を構築する 2.3 文法 DSLを

    言語実装パターン
    kana321
    kana321 2014/09/11
    言語実装パターン――コンパイラ技術によるテキスト処理から言語実装まで
  • 高校生がスーパーコンピュータを使って5×5魔方陣の全解を求めることに成功 | 筑波大学 計算科学研究センター

    概要 筑波大学計算科学研究センターは、全国共同利用施設として、一般公募による「学際共同利用プログラム」※1を実施しています。平成25年度に、茨城県立並木中等教育学校4年次(高校1年)の杉﨑行優(すぎざき・ゆきまさ)君の申請が採択されました。杉﨑君は筑波大学計算科学研究センターの朴泰祐教授と共同研究を進めた結果、スーパーコンピュータ「T2K-Tsukuba」※2を使った並列計算により、5×5の魔方陣の全ての解を求めることに成功しました。 魔方陣とは、正方形のマス目に、縦・横・斜めの合計が同じになるよう数字を置いたものです。5×5の魔方陣の全解は2億7530万5224通りあることがすでにわかっています。杉﨑君は「枝刈り法」を改良した求解アルゴリズムを考案し、スパコンに並列計算させるためのプログラムを開発しました。朴教授は、並列データの収集や並列化に関する詳細なアドバイスを行いました。並列計算

    高校生がスーパーコンピュータを使って5×5魔方陣の全解を求めることに成功 | 筑波大学 計算科学研究センター
  • 「高速文字列解析の世界」を読む前に知っておくと良いこと - EchizenBlog-Zwei

    「高速文字列解析の世界」という大変すばらしいが発売された。わりと敷居が高いではあるので読む前に知っておくとよさそうなことを書いておく。 「高速文字列解析」とは 書でいう高速文字列解析というのは主に2つのことを指している。ひとつはデータを圧縮して小さくしてディスクよりメモリ、メモリよりキャッシュというようにより高速な記憶装置で扱いましょう、という話。もうひとつはデータ構造を工夫することで複雑な操作もそこそこ高速に扱えますよ、という話。つまり「圧縮」の話と「効率的なデータ構造」の話があると考えておくと良い。 キーワードは3つ オビにも書いてあるけれど、書が主に扱うのは「BWT」「簡潔データ構造」「ウェーブレット木」の3つ。具体的には「BWT」が「圧縮」に関わっていて「ウェーブレット木」が「効率的なデータ構造」に関わっている。「簡潔データ構造」は基的な道具として書の色々なところで出て

    「高速文字列解析の世界」を読む前に知っておくと良いこと - EchizenBlog-Zwei
  • 1