タグ

algorithmとprogrammingに関するlakehillのブックマーク (33)

  • 朝日新聞デジタル:プロ野球日程を瞬時に計算 数学者がソフトを開発 - スポーツ

    プロ野球の移動距離を短くする計算例  【藤島真人】1カ月以上かかるプロ野球の日程づくりが、あっという間にできるソフトウエアを数学者が開発した。日程を工夫するだけで、球団の移動距離を2割以上減らすこともできるという。シーズン開幕を控え、彼らの計算式と現実とのギャップはいかに。  開発したのは、国立情報学研究所の河原林健一教授と星野リチャード・前外来研究員。2人は効率の良い鉄道網や電気回路の設計などにも応用できる「グラフ理論」と呼ばれる分野の研究者だ。  ソフト開発は、3年前の3月、カナダからリチャードさんが来日し、たまたま千葉ロッテの拠地の近くに住んだことがきっかけ。鉄道網のような「グラフ」を球団の移動に置き換え、最適な日程をはじき出せないかを考えた。 続きを読むこの記事の続きをお読みいただくには、会員登録が必要です。登録申し込みログインする(会員の方) 無料会員登録はこちら朝日新聞デジタ

  • 博士の異常なアルゴリズム、または私は如何にして心配するのを止めて線形探索を愛するようになったか : 404 Blog Not Found

    2012年02月10日13:00 カテゴリアルゴリズム百選アマグラマーのすすめ 博士の異常なアルゴリズム、または私は如何にして心配するのを止めて線形探索を愛するようになったか これはちょっとプログラマーといふ生物を買いかぶりすぎてると思います。 プログラマへの誤解 | pineapple blog プログラムを書かない人がプログラムを読んだときにする良くある間違いは,ああこんなプログラムなら自分にも書けそうだと思うことだ.プログラムは何百万とある可能性からたったひとつ(は言い過ぎにしてもわずかながら)の正しい方法を残したものであり,この捨てる能力こそがプログラマの実力だから. 少なくとも、プロ2グラマーの場合は。 その反証としてあげたいのが、線型探索(linear search)。漢字で書いたり英語で書いたりするとさぞ凝ったことをやってるように見えるけど、実は「見つかるまで頭から(あるいは

    博士の異常なアルゴリズム、または私は如何にして心配するのを止めて線形探索を愛するようになったか : 404 Blog Not Found
    lakehill
    lakehill 2012/02/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

  • OUT OF THEIR MINDS

    OUT OF THEIR MINDS: The Lives and Discoveries of 15 Great Computer Scientists Computer science is one of the most important forces shaping today's society and the future, yet it is one of the least understood. Who made the key breakthroughs and how did they do it? This page has been translated to Russian by Decoded Butter. Into Ukrainian by Lesley Ryan of domyessay. Into Uzbek by StudyCrumb.com. I

  • Good Programmers learn Mathematics

    良いプログラマは数学を学ぶ、方が良いと思う この文章は 2003 年 2 月 28 日(金曜日)に 株式会社 ACCESS の研究開発室のメンバ向けに行われた講義のために準備されたものです。 目次 はじめに アルゴリズム ― 数学によって可能になること 数学とプログラミングの美学 ― (多分)一番たいせつなこと 質問と回答 文献表 はじめに これから何回か皆さんの前で数学の話をさせてもらうことになりましたが、 今回はまず、その手始めとして 「どうして皆さんが数学を学んだ方が良いのか」、 いいえ、「どうして皆さんに数学を学んでほしいと私が思っているのか」 というお話をさせて下さい。 もちろん、それは皆さんに、より良いプログラマになって欲しいからですが、 また、私の経験によれば、 コンピュータサイエンスの教育の現場では、 何故か数学が軽視されることが多いことを残念に思っているからでもあります。

  • 動的計画法とナップサック問題を学びたい人におすすめのサイト - ダウンロードたけし(寅年)の日記

    組み合わせ最適化の手法として「動的計画法」というモノがあります。 wikipediaから抜粋 動的計画法(どうてきけいかくほう、英: Dynamic Programming, DP) コンピュータ科学の分野において、ある最適化問題を複数の部分問題に分割して解く際に、そこまでに求められている以上の最適解が求められないような部分問題を切り捨てながら解いていく手法 一見難しそうですが、実は理解するのは以外と簡単です。いろいろな場面で応用が利く便利な手法ですので、覚えておいて損はないものです。コンピュータ系、情報系のお勉強をする人であれば、おそらく一度は習ったりするかもしれません。 ナップサック問題と動的計画法 動的計画法の一番親しみやすそうな例として「ナップサック問題」というのがよく取り上げられます。 こんな感じの問題です。 今ここに様々な大きさの品物が置いてあるとします。そしてそれらの品物は各

    動的計画法とナップサック問題を学びたい人におすすめのサイト - ダウンロードたけし(寅年)の日記
  • 「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」:最強最速アルゴリズマー養成講座(1/3 ページ) 典型的なアルゴリズムをたくさん知っている人間が最強か――? いいえ、典型的なアルゴリズムを知らなくても、違ったアプローチで答えに迫る方法はいくらでも存在します。短い実行時間で正確な答えを導き出せるかを考える習慣をつけましょう。 アルゴリズマー養成講座と銘打ってスタートした連載。もしかすると読者の方の興味は、はやりのアルゴリズムや汎用的なアルゴリズムを知ることにあるのかもしれません。しかし、今回は、いわゆる「典型的なアルゴリズム」を用いずに進めていきたいと思います。 なぜ典型的なアルゴリズムを用いないのか。それは、典型的なアルゴリズムばかりを先に覚え、それだけでTopCoderなどを戦っていこうとした場合、それに少しでもそぐわない問題が出た場合に、まったく太刀打ちできなくなってしまう

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」
  • アルゴリズム百選 : 404 Blog Not Found

    2013年03月10日23:45 カテゴリアルゴリズム百選Math Algorithm - Ruby 2.0 や Haskell の遅延リストを JavaScript で プロになるためのJavaScript入門 河村嘉之 / 川尻剛 これを書いたら欲が出て来たので。 dankogai/js-list-lazy ・ GitHub ちなみに「プロになるためのJavaScript入門」は参考書にした一冊。この場を借りて献御礼。続きを読む dankogai コメント( 0 )トラックバック( 0 ) 2013年03月08日11:00 カテゴリアルゴリズム百選Math Algorithm - 配列の冪集合、順列、組み合わせを再帰なしで作る C言語による最新アルゴリズム事典 奥村晴彦 ちょっと必要に迫られたので、JavaScript用のやつを作りました。 dankogai/js-combinato

    アルゴリズム百選 : 404 Blog Not Found
  • GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)

    GCアルゴリズム詳細解説 日語の資料がすくないGCアルゴリズムについて詳細に解説します トップページページ一覧メンバー編集 × GC 最終更新: author_nari 2010年03月14日(日) 20:47:11履歴 Tweet このWikiが目指す所 GCとは? GCを学ぶ前に知っておく事 実行時メモリ構造 基アルゴリズム編 Reference Counter Mark&Sweep Copying 応用アルゴリズム編 IncrementalGC 世代別GC スナップショット型GC LazySweep TwoFinger Lisp2 Partial Mark and Sweep -Cycle Collection- Mostly Parallel GC train gc MostlyCopyingGC(Bartlett 1989) TreadmillGC(Barker 1992)

    GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
  • 東京を走る路線のデータを使って、最短経路問題をダイクストラ法で解く - imHo

    ダイクストラ法が小さなサンプルデータで動いたら、実際のデータを使ってみたくなるのが人情。東京を走る地下鉄のデータでやってみたいと思った。 JavaScriptとPrototype.jsとGoogleMapsAPIとすったもんだしたあげく、なんとか動くものができた。 502 Bad Gateway テストアプリはこちら JavaScriptのソースはここのhtmlに 駅や路線のデータは駅データ.jpのものを使わせてもらいました。 使ったのは東京メトロ+都営+山手線 駅(ノード)の数は、同じ駅でも路線ごとで別にカウントして 322 駅同士をつなぐ線路(エッジ)の数は、徒歩や乗換えを含め 912 体感もっさり感じるけど、経路の検索以外のところがかなりかかってる Tips Prototype.js Array.without は超重い、使うな! Hash.keys で返ってくるキーはすべて文字列に

    東京を走る路線のデータを使って、最短経路問題をダイクストラ法で解く - imHo
  • マージ・ソート : 巨大データのソート法

    はじめに まずはともあれ腕試し、この問題を解いてみてくださいな: 【問1】 デタラメな順序で並んだ文字列の集合がテキストファイル「input.txt」に収められています。この文字列群を辞書順(昇順)に並び換えたテキストファイル「sorted.txt」を作りなさい。 ※各文字列は改行で区切られています。 プログラミング教の練習問題、あるいは学校の課題で出てきそうな“お馴染み”の問題です。ソート(整列)アルゴリズムの実装には配列/代入/条件分岐/ループなどなどプログラミングの基中の基となる構文を総動員するため、練習問題としてよく使われますね。 早速解いてみましょう、ソート・アルゴリズムにはこれまたお馴染みのバブル・ソートを使います。C#、VB.NETC++/CLIの3まとめて一気にいきますよ: using System; using System.IO; using System.C

    マージ・ソート : 巨大データのソート法
  • フローチャートの呪い - カレーなる辛口Javaな加齢日記

    http://blog.livedoor.jp/dankogai/archives/51083212.html http://d.hatena.ne.jp/NOV1975/20080719/p2 http://d.hatena.ne.jp/NOV1975/20080719/p4 いまさら議論するのも馬鹿らしいけど,フローチャートなんぞはものの役に立たない. そんなものは作るだけ時間の無駄だし,何かの役にたつこともない. それは何十年も前に結論が出ていると思う. それはあまりに自明であったため,今では話題になることも少なくなった. 人月の神話―狼人間を撃つ銀の弾はない (Professional Computing Series) 作者: フレデリック・P,Jr.ブルックス,Frederick Phillips,Jr. Brooks,滝沢徹,富沢昇,牧野祐子出版社/メーカー: アジソンウェス

    フローチャートの呪い - カレーなる辛口Javaな加齢日記
  • 404 Blog Not Found:フローチャートがダメな3つの理由

    2008年07月19日16:00 カテゴリLightweight Languages フローチャートがダメな3つの理由 というわけで、前世紀の遺物、フローチャートを供養する試み。 フローチャートとFizzBuzz問題 - novtan別館 さて、研修の話だけど、低水準言語ってだけではなく、きちんとフローチャートを書かせて処理の流れを整理し、あるいは効率が悪くないかを考えさせる、ということも重要だと思っています。フローチャートがそんなにいいなら、なんでビジュアルプログラミング言語が現場で使われないの? まずは経験則による終了宣言。ちなみにここで言うビジュアルプログラミング言語の定義は、Wikipediaのそれと同じ。 ビジュアルプログラミング言語 - Wikipedia ビジュアルプログラミング言語(英: Visual programming language、VPL)とは、プログラム要素を

    404 Blog Not Found:フローチャートがダメな3つの理由
  • 力試しにナベアツのような判定をするプログラムを作ろうとしたところ、問題が発生しました。…

    力試しにナベアツのような判定をするプログラムを作ろうとしたところ、問題が発生しました。 3の倍数や5の倍数は考えるまでもないんですが、3のつく数字をどう判定したらいいのかわかりません。 どのように判定させればよいのでしょうか?

  • Spaghetti Source - アトキンのふるい

    ソースコード void sieve_of_atkin() { int n; for (int z = 1; z <= 5; z += 4) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 4*x*x+y*y) <= N; ++x) isprime[n] = !isprime[n]; for (int x = y+1; x <= sqrtN && (n = 3*x*x-y*y) <= N; x += 2) isprime[n] = !isprime[n]; } } for (int z = 2; z <= 4; z += 2) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 3*x*x+y*

  • http://www.ic-net.or.jp/home/takaken/index.html

  • アルゴリズムとデータ構造演習

    演習の目的は、プログラミング言語C及びSchemeの基礎を習得し、 それらの言語を通じて、講義「アルゴリズムとデータ構造」の理解を深めることにあります。 重要なお知らせ 特に重要な連絡事項はここに掲載されます。 課題について 課題には、A課題とB課題があります。(課題番号の末尾が種類を表します。) B課題が基礎的な課題で、A課題が発展的な課題となっています。 B課題を全問解くことが、単位取得の目安です。 C入門第1回(10月10日) C入門第2回(10月17日) C入門第3回(10月24日) C入門第4回(10月31日) C第1回(11月7日) C第2回(11月14日) C第3回(11月21日) C第4回(11月28日) C第5回(12月5日) Scheme第1回(12月12日) Scheme第2回(12月19日) Scheme第3回(1月9日) Scheme第4回(1月16日) C補講

  • SAT ソルバで数独を解く方法 - まめめも

    数独は非常に SAT に変換しやすい問題です。全部参考文献 *1 に載っている内容ですが、なるべくわかりやすく説明してみます。ちょっと長いです。 SAT とは まず SAT をごく簡単に説明します。すでに SAT を知っている人はここは読み飛ばしてください。 命題論理式の形の一つに乗法標準形のというのがあります。変数か変数の否定 (リテラルと言います) を or だけでつないだ式 (節と言います) を and だけでつないだ論理式のことを言います。つまり以下みたいな形です。 ( a1 or !a2 or ... or an) and ( b1 or !b2 or ... or !bn) and ... and (!z1 or z2 or ... or !zn)SAT は「a1 や zn などの変数にうまく true か false を代入して、上の式全体を true にできるか」という問題

    SAT ソルバで数独を解く方法 - まめめも
    lakehill
    lakehill 2008/01/09
    これはいい
  • アルゴリズム百選 - 値と参照 : 404 Blog Not Found

    2007年12月06日15:30 カテゴリアルゴリズム百選 アルゴリズム百選 - 値と参照 今回は値と参照について取り上げます。 突然ですが問題です。以下のJavaScriptプログラムを実行すると、何と表示されるでしょうか? プログラム: var a = [0, 1, 2, 3]; var b = a; b[0] = 'zero'; p(a); 出力: エラー: 答えは、"zero, 1, 2, 3"です。しかし、なぜaを直接変更していないのにaの中身が変わっているのでしょうか? ここで、二行目に注目してみます。ここでは変数bに変数aを代入しています。変数aは配列です。ここだけ見ると、内部で起こっているのは以下のようなことに見えなくもありません。 array b -+ array b -+ | 0 | | 0 | | 1 | = | 1 | | 2 | | 2 | | 3 | | 3 |

    アルゴリズム百選 - 値と参照 : 404 Blog Not Found
  • 404 Blog Not Found:アルゴリズム百選 - 二分探索(binary search)

    2007年12月04日08:30 カテゴリアルゴリズム百選Math アルゴリズム百選 - 二分探索(binary search) 今回は二分探索を取り上げます。 検索:コンピューターの最もよくある利用法 「二分探索って何?」「ググレカス」と言われないためにこの記事は存在するのですが、Webの検索に限らず、「目的のデータを見つけて取り出す」というのは、およそコンピューターの利用法で最もポピュラーなものです。 配列:コンピューターがデータを扱う根的な方法 そのデータはコンピューターのなかでどう置かれているかというと、非常に単純です。デジタル化されたデータ=数値が一定間隔で並んでいるだけです。こういうデータ構造を、配列(array)といい、この数値一個一個のことを要素(element)と言います。 現代のコンピューターでは、最小要素はバイト(byte)と呼ばれています。このバイトの中には0と1

    404 Blog Not Found:アルゴリズム百選 - 二分探索(binary search)
    lakehill
    lakehill 2007/12/04
    さすがに毎日ブログを書いているだけあって、小飼さんはわかりやすく説明するのがうまいな。