タグ

アルゴリズムに関するtamurakiのブックマーク (9)

  • アルゴリズムの勉強のしかた - きしだのHatena

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

    アルゴリズムの勉強のしかた - きしだのHatena
  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
  • はじめに - アルゴリズムとデータ構造大全

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

  • ピーターソンのアルゴリズム - Wikipedia

    /* * ANSI C89 source, KNF style implementation of Peterson's Algorithm. * * Copyright (c) 2005, Matthew Mondor * Released in the public domain (may be licensed under the GFDL). * * Please fix any bugs as needed, preserving the KNF style and this comment, * unless considered inconvenient in which case you can do whatever you want * with the code. */ #include <assert.h> #include <stdio.h> #include <

  • 『みんなのデータ構造』でデータ構造の基礎を学んだ - valid,invalid

    データ構造とアルゴリズムの学習の一環として『みんなのデータ構造』を読んだ。これまでで最も良いデータ構造の学習になった。 みんなのデータ構造 作者:Pat Morin発売日: 2018/07/20メディア: 単行(ソフトカバー) 日語訳がWebで公開されているので気になる方は無料で読める。が、著者や訳者や出版社応援の意味も込めて購入すると良いと思います。また、ラムダノート社のサイトから買うと紙書籍と電子書籍のセットがお得。 内容 データ構造とアルゴリズムに関連するはアルゴリズム寄りのものが多いが、データ構造に焦点を当て続けていることが書の特色。 内容の依存関係 p.21より 大学の教科書のように、正確性を優先したハードコアな内容。 アルゴリズムの内容も少しだがある。「11章 整列アルゴリズム」ではそれまでの章で学んだデータ構造がどのように使われるかを一瞥でき、「12章 グラフ」では深

    『みんなのデータ構造』でデータ構造の基礎を学んだ - valid,invalid
  • 競技プログラミングって何? (はじめての高校生向け) - Qiita

    競技プログラミングは、プログラミングを使ってパズルを解くスポーツ どんな人にオススメ? プログラミングを使って何かソフトウェアを作るより、プログラミング自体が好き パズルゲームや謎解きが好き プログラミング学んだけど、プログラミングですることがない プログラミングを就職や進学に活かしたい アルゴリズムやデータ構造を格的に学んでみたい 一番重要なこと 競技と言っても何より楽しむが重要! 最初は自分の実力に合わせて楽しむ! すごい人を見すぎない 自分が「できたこと」を喜ぶ 小さい目標を立てて、コツコツやってく 楽しめなくなったら休むのも重要 実益もあるよ いい成績を収めると大会で優勝賞金 高校生のパソコン甲子園だと30万円とか Google Code Jam など大会だと、賞金25万ぐらい、上位者Tシャツなど 筑波大学のAC入試や慶応大学のAO入試などで活動実績として紹介できたり、慶応大学、

    競技プログラミングって何? (はじめての高校生向け) - Qiita
  • 上級プログラマってどんな本読んでるの?中堅プログラマがマウンティング取られないための名著8選 - 世界が幸せで在ります様に

    この記事を読もうと思ったということは,あなたはそこそこできるプログラマ,あるいは社内でも自他ともに優秀と認められるほどの実力者かもしれません. ただし,そんな状況でも業界で名が知られる優秀な人や社内の上級プログラマと対峙した時身構えてしまい相手の不思議な理論に屈服してしまう経験はありませんか?気でプログラミングをすれば互角,あるいは言語によっては自分の方が明らかに上だと自負できる状況にもかかわらず. そんな中,そこまで優秀そうに見えないのにうまくマウンティングを回避しているプレーヤーを見たことはないでしょうか? 彼らと自分は何が違うのか? 簡単に言えば,知ってるコンピュータ科学の量と,何らかの物事に対して同調するのではなく先駆者的にそれを宣言することです.それを少しでも発揮できる名著をこれからご紹介します. ※安心してください,日語の書籍だけ紹介します. Coders at Work

    上級プログラマってどんな本読んでるの?中堅プログラマがマウンティング取られないための名著8選 - 世界が幸せで在ります様に
  • プログラマ能力指標表 | POSTD

    2015年05月27日: 表が見にくいというご意見を頂いたため、原文著者に連絡のうえ体裁を修正しました。 上位のレベルには下位のレベルの知識も蓄積されているということに注意してください。つまり、レベル n であれば n より低いレベルの知識も全てあります。 コンピュータサイエンス データ構造

    プログラマ能力指標表 | POSTD
  • コーディングに役立つ! アルゴリズムの基本 - @IT

    連載ではアルゴリズムとデータ構造を学ぶ、または学び直すことで、プログラミングのスキルを深めていきます。アルゴリズムは学問として取り扱われることが多いですが、この連載では開発の現場に役立つスキルを身に付けることを目的とします。 機械学習/Deep Learningが気になる人も要注目、「アルゴリズム」の基が学べる無料の電子書籍150ページ 人気連載まとめ読み! @IT eBook(29) 人気過去連載を電子書籍化して無料ダウンロード提供する@IT eBookシリーズ。第29弾では「コーディングに役立つ!アルゴリズムの基」10回分を1冊のPDFとしてまとめた。アルゴリズムとは何か? なぜ学ぶべきなのだろうか?

  • 1