タグ

algorithmに関するmono-hateのブックマーク (5)

  • はじめに - アルゴリズムとデータ構造大全

    はじめに このドキュメントは,主に競技プログラミングで出題される問題を解く際に利用できるアルゴリズムやデータ構造をまとめたものです.特定の問題にはあまりフォーカスしないため,問題を解く際の考察の仕方等の内容はありません.詳しく,正確に,分かりやすく書いていこうと思っています. このドキュメントは執筆途中です. 想定する読者 C++を用いたプログラミングに慣れている方を読者として想定しており,C++言語の仕様や,文法にはあまり触れません.また,計算量という用語についても説明しません.ただし,償却計算量など,計算量の見積もりが複雑なものについては必要に応じて説明します. コードについて このドキュメントで登場するコードは,可読性向上のため,以下のようなコードがファイルの先頭に記述してあることを前提としています.また,適切な問題を用いてコードの検証がなされている場合は,コード周辺にのように,検証

  • ダブル配列の実装方法

    2013/1/9に統数研チャンネルにて、ウェーブレット木の解説をしました。岩波書店より出版されました「高速文字列解析の世界」の解説になっています。

    ダブル配列の実装方法
  • Viterbiアルゴリズムによる単語分割を実装してみた - Topics Related to Computers and NLP

    例によってNLPチュートリアル資料に沿って、Viterbi(ビタビ)アルゴリズムを実装してみた。 参考:単語分割に関するチュートリアル 一言で言うと「分割しうる全ての部分文字列について、その単語分割らしい確率を計算する」アルゴリズムである。 Pythonで実装したものはここ チュートリアルでは各単語に対しての重みがあらかじめ計算された辞書を用いている。 入力文字列をグラフで表すとわかりやすい。各ノードが文字を表し、各エッジが単語を表している。 Viterbiアルゴリズムは以下の2つのステップを踏む。 前向きステップ このステップでは最短経路を動的計画法を用いただけである。この実装では単語ユニグラムに対して重みが割り当てられている。 イメージ図としてはこんな感じ。 図は圧倒的にチュートリアル資料がわかりやすいため、自分で描くのは億劫になる。 ただ、このチュートリアルの資料の前向きステップの説

    Viterbiアルゴリズムによる単語分割を実装してみた - Topics Related to Computers and NLP
  • DO++

    このサイトは2004年頃の更新を最後にDiaryを除いてメンテナンスをしていません。何かの役に立つかもしれないので残しておきますが、古い情報も含まれていますのでご了承ください (研究室のページ)

  • ACM/ICPC国内予選突破の手引き

    ACM/ICPCの2008年度の大会日程が公開されています。 国内予選は2008年7月4日,アジア地区予選会津大会は2008年10月25日~27日でホスト校は会津大学です。 参加登録締め切りは2008年6月20日です。 ここではACM/ICPC(ACM国際大学対抗プログラミングコンテスト: ACM International Collegiate Programming Contest)で 国内予選を突破するために必要な情報を載せています。 ACM/ICPC自体については2006年度の横浜大会のWebサイトなどを読んでください。 結局のところ,ACM/ICPCで良い成績を残すにはひたすら問題を解く練習をするしかありません。 ですが,出題される問題の多くはいくつかのカテゴリ,例えば探索問題やグラフ問題,あるいは幾何問題などに分類することができます。 つまり,「傾向と対策」が存在します。

  • 1