lynx   »   [go: up one dir, main page]

タグ

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

  • アルゴリズムを学ぼう

    関連サイト出版社による関連ページが公開されています。 アルゴリズムを学ぼう (KADOKAWA/アスキー・メディアワークス) 関連書籍書の続編『続・アルゴリズムを学ぼう』も好評発売中です。 内容紹介書のテーマは、ガチのアルゴリズムとデータ構造、そして計算量です。 いや、確かに書は女の子がいろいろでてきたり、小話が入っていたりと、ゆるふわなオーラが漂っています。しかし、あえていいましょう。それは、見かけだけである、と。 プログラミングを学ぶにあたって、アルゴリズムとデータ構造は、どの言語を用いるにしてもすべての基礎であり、避けて通ることはできない道です。アルゴリズムとデータ構造を知らずにプログラムを書くことは、無免許で車を運転するぐらいに危険な行為です。 しかし、アルゴリズムとデータ構造をきちんと理解せずに、プログラムを書いているプログラマーが多数いるのも事実です。それは、アルゴリズム

    アルゴリズムを学ぼう
  • エンジニアの面接でアルゴリズムを組ませる理由 | quipped

    @shibataismさんが、日経Bizアカデミーに「日エンジニアはシリコンバレーで通用するのか?」という記事を書いている。 「僕は文系だけど、エンジニアとして一流だ」と自己主張する人がいますが、採用側から見て実際にそうであることは稀です。シリコンバレーの企業では、採用面接の際に「 ○○アルゴリズムを書いてみてください」といったように、具体的かつ実践的な課題が出されます。こうした面接で、文系の人は(そもそも大学できちんと勉強したことがないので)適切な回答をするのが難しい場合が多いのです。 とあるのだが、アメリカの大学で数学を勉強し、プログラミングは独習したソフトウェアエンジニアとして1、少し補足してみたいと思う。 「文系」だからといって諦める必要はない これはまあその人の経験によるのだろうけど、文系出身のエンジニアだからといって諦める必要はない。[平林さん](https://falla

  • Project Eulerに挑戦

    Project Eulerは,数学的なプログラムの問題集である. 2014年1月時点で,450問以上の問題があり,簡単なものから難しいものまである. 25問正解するとレベル1になり, 50問でレベル2,75問でレベル3,100問でレベル4などレベル17まである. 2014年1月現在で,レベル17は全世界で63名しかいない.うち日人は6名だけ. プログラミング言語は何を使っても良い.手で解くのでも良い. 回答を提出するには,ユーザ登録をする必要がある. ちなみに レオンハルト・オイラー (Leonhard Euler)は18世紀の有名な数学者の名前.

  • PHPで二分探索木やってみた - よしだ’s diary

    二分木構造で二分探索を行う。 多分こんな感じ。 削除が面倒臭いなぁ。 ソース <?php class BinaryNode { public $data; public $left; public $right; public function __construct($data) { $this->data = $data; $this->left = null; $this->right = null; } } class BinaryTree { private $_root; // コンストラクタ public function __construct() { $this->_root = null; } // 要素を追加 public function add($data) { $node = new BinaryNode($data); $p =& $this->_root;

    PHPで二分探索木やってみた - よしだ’s diary
    kyohei_hamada
    kyohei_hamada 2011/11/09
    僕のコードと超近い。参考にする。
  • 図解!二分探索のプログラミング

    二分木(Binary Tree) 「第1回:サーチのアルゴリズムを学ぶ」は、動的に増減する要素をリンクトリストで管理する方法を紹介しました。 リンクトリストでは要素を探索する場合、リンク(ポインタ)を順にたどるしかないため、線形探索と等しい時間がかかってしまいます。今回は、リストと同様にポインタでつながった構造でありながら、探索時間は二分探索と同じ性能の構造である二分木(Binary Tree)を紹介します。これはB-Tree や Balanced Tree(バランス木)と言葉も機能も似ていますが、少し違います。今回は、探索目的に使う二分木である二分探索木(Binary Search Tree)と呼ぶものを扱います。 図1-1に二分探索木を示します。 全体を木だと思ってください。丸をノード(node;節)と呼びます。また、ノードから出ている線は木の枝(branch)に相当します。各ノードか

    kyohei_hamada
    kyohei_hamada 2011/11/09
    書き方が僕とやや違う。
  • プログラムの理論とはなにか - きしだのHatena

    プログラムには、手続きを記述するという側面と、式を記述するという2つの側面があります。 そして、それぞれの基礎理論としては、チューリングマシンとラムダ計算があるので、プログラムの理論としては、この2系統を勉強する必要があると思います。 ラムダ計算というのは、式によってどのような計算ができるかという理論です。式による条件分岐はそれほど難しくなく、Yコンビネータなどの不動点定理で、式によって繰り返し処理が行えるということが証明されたので、どのような計算でもできるということになっています。 チューリングマシンの理論とは、どのような手続きがどのような性質をもつかという理論です。プログラムの性質というのは、ある出力を行うプログラムが、入力に対してどのように時間がかかるか、どのようにメモリを使うかというものです。そしてこれがアルゴリズムの理論になります。 ところで、ぼくはブログで「アルゴリズムを勉強す

    プログラムの理論とはなにか - きしだのHatena
    kyohei_hamada
    kyohei_hamada 2011/09/23
    アルゴリズム勉強したくなった。
  • アルゴリズムの勉強のしかた - きしだのHatena

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

    アルゴリズムの勉強のしかた - きしだのHatena
    kyohei_hamada
    kyohei_hamada 2011/09/23
    書籍の紹介が豊富。何冊かポチりそうになった。
  • Sign in - Google Accounts

    kyohei_hamada
    kyohei_hamada 2011/09/20
    こんなものがあったのか。予選は10月1日。
  • 知れば天国、知らねば地獄――「探索」虎の巻

    いよいよ今回から、具体的なアルゴリズムの紹介に入っていきます。今回は、プログラミングにおける重要な概念である「探索」について考えます。グラフに変換し、探索する、という流れを知るとともに、そのグラフを効率よく探索する方法について紹介します。 今後紹介していくアルゴリズムについて お待たせしました! 「最強最速アルゴリズマー養成講座」という連載タイトルのとおり、今回の連載からいよいよ具体的なアルゴリズムの紹介に入っていきたいと思います。 しかし、それを読んでいただく前に、1つ注意してもらいたいことがあります。連載第3回でもお伝えしたように、「問題を、既存の適当なアルゴリズムに当てはめる」という考え方は、非常に危険である、ということです。 筆者の経験上、TopCoderでRedCoder以上を目指すのであれば、回答時間短縮のために、いままでのパターンを利用するのも方法の1つなのですが、連載では

    知れば天国、知らねば地獄――「探索」虎の巻
    kyohei_hamada
    kyohei_hamada 2011/09/04
    これがわかりやすそうだが図が見れないという悲劇。
  • ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室

    ゲームの作り方とアルゴリズムをジャンル別にまとめてみました。ゲーム制作や、プログラミングの勉強用にご活用ください。言語別ゲームプログラミング制作講座一覧もあわせてお読みください。 リンク切れがおきていたものは、URLを表示しておくので、Internet Archiveなどでキャッシュを表示させてみてください。 RPG ゲームの乱数解析 乱数を利用した敵出現アルゴリズムの解説 各種ゲームプログラム解析 FF、ドラクエ、ロマサガのプログラムの解析。乱数の計算など ダメージ計算あれこれ(http://ysfactory.nobody.jp/ys/prg/calculation_public.html) ダメージの計算式 エンカウントについて考えてみる エンカウント(マップでの敵との遭遇)の処理方法いろいろ RPGの作り方 - ゲームヘル2000 RPGのアルゴリズム ドルアーガの塔 乱数の工夫の

    ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
  • Toriumi Lab.

    2024年3月26日 「情報的健康プロジェクト:アテンションエコノミーの暗翳と『情報的健康』−総合知で創出する健全な言論空間」を慶應義塾大&オンラインで開催されました. https://www.kgri.keio.ac.jp/news-event/156808.html 査読付き論文が出版されました.Chujyo, M., Toriumi, F. "Link-limited bypass rewiring for enhancing the robustness of complex networks". Appl Network Science Vol.9, No.17 (2024).  (2024年5月) 査読付き論文が出版されました.Lai, C., Toriumi, F. & Yoshida, M. ”A multilingual analysis of pro Russian m

    Toriumi Lab.
  • クラスタリングの定番アルゴリズム「K-means法」をビジュアライズしてみた - てっく煮ブログ

    集合知プログラミング を読んでいたら、K-means 法(K平均法)の説明が出てきました。K-means 法はクラスタリングを行うための定番のアルゴリズムらしいです。存在は知っていたんだけどいまいちピンときていなかったので、動作を理解するためにサンプルを作ってみました。クリックすると1ステップずつ動かすことができます。クラスタの数や点の数を変更して、RESET を押すと好きなパラメータで試すことができます。こうやって1ステップずつ確認しながら動かしてみると、意外に単純な仕組みなのが実感できました。K-means 法とはK平均法 - Wikipedia に詳しく書いてあるけど、もうすこしザックリと書くとこんなイメージになります。各点にランダムにクラスタを割り当てるクラスタの重心を計算する。点のクラスタを、一番近い重心のクラスタに変更する変化がなければ終了。変化がある限りは 2. に戻る。これ

    kyohei_hamada
    kyohei_hamada 2010/10/26
    すごくわかりやすい.こういうのサクッと作りたいな.
  • 第3回 ベイジアンフィルタを実装してみよう | gihyo.jp

    さらに詳細な利用方法が知りたい方は、Yahoo!デベロッパーズネットワークのマニュアルを参照してください。 ベイジアンフィルタの実装 ここから格的にベイジアンフィルタの実装に入っていきます。 その前に、まずは先程のリスト1のコードを利用して入力された文章をわかち書きし、単語の集合を返す関数を作成しnaivebayes.pyとして保存しましょう。こちらも先程のmorphological.pyと同様にutf-8で保存してください。 リスト2 文章の分割をする関数(naivebayes.py) # -*- coding: utf-8 -*- import math import sys #yahoo!形態素解析 import morphological def getwords(doc): words = [s.lower() for s in morphological.split(doc)

    第3回 ベイジアンフィルタを実装してみよう | gihyo.jp
  • ライフゲームでプログラミングできる「Lifef*ck」!? - このブログは証明できない。

    KPF(熊プログラミングフリークス)で発表してきました。ライフゲーム(Conway's Game of Life)はチューリング完全らしいので、これを使ってプログラムを書けるのか?というテーマです。 第5回KPF(熊プログラミングフリークス)勉強会に参加&発表してきました。 - このブログは証明できない。 まずは、発表スライドをどうぞ。 簡単に説明します。ライフゲームはチューリング完全ですから、計算機で実行可能な全てのアルゴリズムを作ることができるらしいです。どうやってアルゴリズムを表現するのか分からなかったので、Brainf*ckを使うことにしました。Brainf*ckの命令は8個なので、1命令は3ビットで表現できます。これを、ライフゲームの3つのセルと対応付けます。 Brainf*ckのプログラムを逆にたどっていけば、そのプログラムを生成するライフゲームのパターンを見つけ出すことが

  • 404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10

    2007年11月26日18:15 カテゴリMathLightweight Languages プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10 ぎくっ あなたが一番好きなアルゴリズムを教えてください。 また、その理由やどんな点が好きなのかも教えてください。 - 人力検索はてな なぜぎくってしているかというと、実はすでにアルゴリズムの発注を受けているからなのだ。いつまでも伏せておくのもなんなので、ここにえいやっとdiscloseしてしまうことにする。 アルゴリズム大募集! C&R研究所 - トップページ その下書きもかねて、そこでも紹介しないわけに行かないメジャーなアルゴリズムをとりあえず10個紹介しておくことにする。 ユークリッドの互除法(Euclidean algorithm) その昔(数百年ほど前)は「アルゴリズム」といえば、「手順一般」を指すのではなく、この「互除法

    404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10
  • ダイクストラ法(最短経路問題)

    ダイクストラ法 (Dijkstra's Algorithm) は最短経路問題を効率的に解くグラフ理論におけるアルゴリズムです。 スタートノードからゴールノードまでの最短距離とその経路を求めることができます。 アルゴリズム 以下のグラフを例にダイクストラのアルゴリズムを解説します。 円がノード,線がエッジで,sがスタートノード,gがゴールノードを表しています。 エッジの近くに書かれている数字はそのエッジを通るのに必要なコスト(たいてい距離または時間)です。 ここではエッジに向きが存在しない(=どちらからでも通れる)無向グラフだとして扱っていますが, ダイクストラ法の場合はそれほど無向グラフと有向グラフを区別して考える必要はありません。 ダイクストラ法はDP(動的計画法)的なアルゴリズムです。 つまり,「手近で明らかなことから順次確定していき,その確定した情報をもとにさらに遠くまで確定していく

  • 1
Лучший частный хостинг