タグ

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

タグの絞り込みを解除

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

  • 素数列挙について - MugiCha

    Competitive Programming Advent Calendar 3日目は、数学っぽい話をしたいと思います。 N以下の素数をすべて求めよ。 N以下の素数の個数を求めよ。 A以上B以下の素数の個数を求めよ。 こんな感じの問題を見たことがあると思います。また問題としてでなくても、解く過程にこのようなサブ問題を解かなければいけない場合もよくあると思います。素数については説明しなくてもいいですよね? このような問題を素数列挙と呼ぶことにします。素数列挙ができれば、大きい数の素数判定や素因数分解をめっちゃ高速化したり、トーティエント関数、メビウス関数等、数学系のいろんな関数を求めたりできます。最近のもので素数列挙がほぼ必須のものだと Codeforces Beta Round #86 (Div. 1 Only) C. Double Happiness ICPC 国内予選 2011 A

    素数列挙について - MugiCha
  • Concurrent Programming with Revisions and Isolation Types - Microsoft Research

    Building applications that are responsive and can exploit parallel hardware while remaining simple to write, understand, test, and maintain, poses an important challenge for developers. In particular, it is often desirable to enable various tasks to read or modify shared data concurrently without requiring complicated locking schemes that may throttle concurrency and introduce bugs. We introduce a

    Concurrent Programming with Revisions and Isolation Types - Microsoft Research
  • モダン並列・並行プログラミング ~ Concurrent Revisions による実装と現実 ~ - Preferred Networks Research & Development

    日社内向けのTechTalkにて、並列・並行プログラミングに関する話を行いました。 昨今、プログラムの並列化はなくてはならないものとなっています。しかし、そのプログラミング環境は依然としてロックを用いたものが主流です。今回の発表の主張を端的に申し上げますと、 “Locks must go!” ということになります。並列プログラミングに銀の弾丸はありません。しかし、ロックは別の何らかの安全性を確保したプログラミングモデルで置き換えられなければいけません。そうでなければ、再現しにくいバグに苦しめられ、終電を逃す日々と決別することはできないでしょう。また、ロックによるプログラミングの抱える質的問題にも言及しています。 この界隈の最新の動向として、去年OOPSLA’10にて発表されたConcurrent Revisionsについての解説も行なっております。また、弊社研究開発において、先日Con

    モダン並列・並行プログラミング ~ Concurrent Revisions による実装と現実 ~ - Preferred Networks Research & Development
  • 30分でわかる高性能な圧縮符号vertical code - EchizenBlog-Zwei

    検索エンジンの転置インデックスなどデータ列を小さいデータサイズで持たせたい、という状況がある。こういう場合圧縮符号を使うのが一般的でunary符号やgamma符号、delta符号など様々な種類がある。 圧縮符号の中でイチオシなのがvertical code(vcode)。これは岡野原(@hillbig)氏によって提案された圧縮符号で単純な仕組みでdelta符号並の性能を誇っている。 記事ではvcodeのポイントを絞って30分でわかるように解説してみる。 vcodeは棚にを並べる作業を連想すると理解しやすい。棚は予め高さが決まっているので全てのが入るような棚を用意する。つまり というようなものを想像する。 この棚は8冊のが並んでいるが左から5冊目のが他よりも背が高い。このため5冊目のに合わせて背の高い棚が必要になる。だが他のは5冊目のほどに背が高くないので、5冊目が

    30分でわかる高性能な圧縮符号vertical code - EchizenBlog-Zwei
  • 系列ラベリング問題メモ - Negative/Positive Thinking

    はじめに 系列ラベリング問題についてちょっと調べてみたのでメモ。 系列ラベリング(系列分類)問題とは ある系列xの各要素に適切なラベル列yを付与する問題 例えば「This is a pen」という文書の各単語に「This(代名詞) is(動詞) a(冠詞) pen(名詞)」のように品詞ラベルをつける問題(品詞タグ付け) 系列だけでなく木構造などへの適用もされている 構造学習 ラベル、木、グラフ、順序集合など 応用 品詞分類 形態素解析(ラティスのコスト計算なども) チャンキング(基名詞句(Base NP)同定、固有表現抽出、文節まとめあげなど) 系列セグメンテーション問題 時系列解析や画像認識 など 系列ラベリング問題の特徴 普通の多値分類との違いは、「注目している要素xi以外の情報も使えること」と「クラスの数が膨大になりやすいこと」がある。 注目している要素以外の情報も使える 多値分類

    系列ラベリング問題メモ - Negative/Positive Thinking
  • Web本文抽出 using crf

    Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)

    Web本文抽出 using crf
  • quick sortよりも高速でmerge sortのように安定しているソートアルゴリズムtim sort [勘違い] - Islands in the byte stream

    <追記>ベンチマークプログラムに誤りがありました。ソート済のシーケンスに対してソートを掛けていました。ご指摘ありがとうございます>ak氏 そんな夢のようなソートアルゴリズムがあるのかというと、あるらしいんです。それがtim sortと呼ばれるアルゴリズムです。 画期的(?)なソートアルゴリズム「Sleep Sort」:濃縮還元オレンジニュース|gihyo.jp … 技術評論社 このあたりで拾ってきたネタですね。 merge sortを改良したアルゴリズムで、安定*1しており、しかも実行速度にも優れているとか。アルゴリズムの性能の評価は済んでいるらしく、CPythonやJDK7には既に導入済みのようですね。 ならば当然Perlのソートも…と考えるわけですが、まず評価のためにJavaのソースをC++にそのまま移植してみました。それがこれ(いちおうテスト済): https://github.co

    quick sortよりも高速でmerge sortのように安定しているソートアルゴリズムtim sort [勘違い] - Islands in the byte stream
  • P2Pの専門知識ゼロから独自DHTを実装評価するまでの学習方法と参考資料まとめ - 情報科学屋さんを目指す人のメモ(FC2ブログ版)

    何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。 P2P、特にDHTの前提知識が無い状態から、オリジナルDHTアルゴリズムを実装・評価できるようになるまでの学習方法と参考資料をまとめました。 基的なアルゴリズムの仕組みから、実装評価に用いるツールキットの使い方までを短期間で学習することが出来ます。 「P2Pに関する卒論を書こうと思っている人」や「P2Pアプリケーションの開発前に、アルゴリズムをテストしたい人」、「なんとなくP2Pアルゴリズムに興味が出た人」などにぴったりだと思います。また、研究室での後輩教育用資料にするのも良いと思います。実際に使いましたし。 ここで紹介する資料一覧は以下の通りです。 資料1:「ChordアルゴリズムによるDHT入門」 資料1ーオプション1:「DHTアルゴリズムSymphony

  • acmsolver.org - acmsolver リソースおよび情報

  • Trie - Negative/Positive Thinking

    はじめに Trieとその周辺を調べたのでまとめた。 Trie(トライ木)とは 文字列探索のための順序付木構造 Prefix Treeとも呼ばれる 由来は「reTRIEval」らしい 共通のPrefixをまとめたデータ構造で、文字列が辞書(Trie)に登録されているかを高速に検索することができるもの 各ノードに文字を割り当てておき、ルートからたどることで文字列が登録されているかを保持する 検索速度は、長さmの文字列ならば最悪でO(m) 二分探索の場合O(log n)だが、nは登録されている文字列の数 状況によっては、サイズが巨大になってしまう(少数の長い文字列があるなど) 例 http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/Trie/ Trieの実装 参考:http://www.prefield.com/algorithm/strin

    Trie - Negative/Positive Thinking
  • 大規模テキストにおけるN-gram統計 - Negative/Positive Thinking

    はじめに 大規模なテキストデータでのN-gram統計を取る場合、特にNが大きい場合(N>=3)は、組み合わせの数が多くなり出てくるN-gramをすべてメモリに保持しながら個数をカウントするのが難しい。効率的な方法があるのを知ったのでちょっと試してみた。 大規模テキストにおけるN-gram統計の取り方 岩波講座ソフトウェア科学15「自然言語処理」 論文: http://ci.nii.ac.jp/naid/110002934647 手順 ngramを取りたい文章を1つの文として扱う この文をメモリに読み込み、各文字の先頭アドレスを保持する配列を作成 その先頭アドレスの場所の文字から文最後までの部分文字列を1つの単語とみる この単語を辞書順に並び替える(アドレス配列だけ) ソートした単語の順番で、次の単語と「先頭から共通している文字数」を保持する配列を作成 Ngramをカウントするときは、単語の

    大規模テキストにおけるN-gram統計 - Negative/Positive Thinking
  • Storing Hierarchical Data in a Database — SitePoint

    Stay Relevant and Grow Your Career in TechPremium ResultsPublish articles on SitePointDaily curated jobsLearning PathsDiscounts to dev toolsStart Free Trial7 Day Free Trial. Cancel Anytime. Key Takeaways Storing hierarchical data in a database can be achieved using two major approaches: the adjacency list model and the modified preorder tree traversal algorithm. The adjacency list model is more el

    Storing Hierarchical Data in a Database — SitePoint
    manabou
    manabou 2011/10/12
  • 頻出典型アルゴリズムの演習問題としてよさげなやつ - kyuridenamidaのチラ裏

    効率的な別解とか存在する問題もあるけど演習によさそうなやつをピックアップ。そのアルゴリズムじゃないと解けないわけではないって問題も多いので注意。(ただ演習するのには都合が良いかなと)※個人的難易度をつけてみました。とても主観的な難易度付けなので気にせず解いてみてください。深さ優先探索・Balls[☆]・Sum of Integers[☆]・The Number of Island[☆]・Block[★]幅優先探索・Mysterious Worm[★]・Cheese[★]・Seven Puzzle[★☆]・Stray Twins[★★]・Deven-Eleven[★★]・Summer of Phyonkichi[★★☆]ワーシャルフロイド法(For 全点対最短路問題)・Traveling Alone: One-way Ticket of Youth[★]・A reward for a Car

  • Post by @ruiueyama

    移動しました。 http://blog.sigbus.info/2011/10/bezier.html

    Post by @ruiueyama
  • ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena

    先日のエントリで手続きを記述するという側面と、式を記述するという2つの側面があるということを書きました。 プログラムの理論とはなにか そして、手続きの性質として代表的な、アルゴリズムについての勉強のしかたについてまとめてみました。 アルゴリズムの勉強のしかた そこで、今回は、式を記述するという側面の勉強のしかたと、あとこの分野は自分でもまだ全然勉強してなかったので、これからどういうを読もうと思っているかをまとめてみます。 プログラム意味論 プログラムは必ずプログラム言語、少なくとも記号で記述します。*1 そこで、プログラムの勉強という点では、どのように動くかというアルゴリズムの勉強だけではなく、どのように書けるか、書いたものにどのような性質があるのかということも知る必要があります。 例えば、2005年あたりからRubyのような動的型付け言語が流行りだし、Javaなどの静的型付けの言語との

    ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
  • FastBit: An Efficient Compressed Bitmap Index Technology

    2022/02: FastBit source moved to github 2011/10: DBLunch seminar 2010/7: FastBit in nProbe 2009/9: FastBit in SciDAC review 2008/12: ASCR Disvovery article 2008/07: R&D 100 award 2007/08: FastBit speed up drug discovery tool 2006/03: Prove formal optimality [Draft] 2005/05: Grid Collector wins ISC Award. 2004/12: WAH patent issued. FastBit is an open-source data processing library following the sp

  • Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

    essential information that every serious programmer needs to know about algorithms and data structures Online content. This booksite contains tens of thousands of files, fully coordinated with our textbook and also useful as a stand-alone resource. It consists of the following elements: Excerpts. A condensed version of the text narrative, for reference while online. Lectures. Curated studio-produc

  • 簡潔データ構造超入門III 〜簡潔ビットベクトルで転置インデックスを効率的に実装する〜 - EchizenBlog-Zwei

    前回までで簡潔ビットベクトルというデータ構造を実装した。簡潔ビットベクトルとは普通のビット列に少しの追加データを持たせることでrank/selectという2つの操作が可能にしたもの。そしてrank/selectとはそれぞれ以下の操作のこと。 rank(x) : x番目のビット以前(xの位置を含む)の立っているビットの数 select(i): i番目に立っているビットの位置今回は簡潔ビットベクトルを利用して転置インデックスを効率的に実装してみる。 前回までの記事: 簡潔データ構造超入門 〜つくって学ぶ簡潔ビットベクトル〜 - EchizenBlog-Zwei 簡潔データ構造超入門II 〜ちょっとだけ実用的な簡潔ビットベクトル〜 - EchizenBlog-Zwei 転置インデックスとは検索エンジンに用いられるインデックスで apple 1, 3 orange 1, 2, 4, 6のように各単

    簡潔データ構造超入門III 〜簡潔ビットベクトルで転置インデックスを効率的に実装する〜 - EchizenBlog-Zwei
  • 論理かるた - 言語ゲーム

    今日は証明するカードについて書きます。証明というとなんだか人間にも難しく、機械にやらすには高度な人工知能が必要だと思うでしょう。しかしコンピュータも電気も不要です。なんとこのカードは並べるだけで証明ができてしまうのです!とりあえずどんなのか見てみましょう。 自分でやりたい人は logiccard.pdflogiccard2.pdf をダウンロードして名刺用紙に印刷してください。用紙のサイズが合わない時は logiccard.svglogiccard2.svgイラストレータや Inkscape で編集するといいと思います。 このように印刷して、灰色の部分をポンチで穴を開けます。ホッチキス式のポンチではカード中ほどの穴に届かないので、その場合は手芸用のポンチを使うと良いです。 するとこのような謎めいたカードが出来上がります。 それぞれのカードはベン図になっています。穴の開いてい

    論理かるた - 言語ゲーム