タグ

Algorithmとalgorithmに関するtanakaBoxのブックマーク (301)

  • ナンバープレース(数独)

    ナンプレ(NumberPlace)も有名なパズルですので、ルールの説明は割愛します。 ナンプレは、Hand Solution向きのパズルです。ナンプレの問題そのものをコンピュータで解くのは簡単ですので、あまり面白くありません。 ここでは、皆さんも一度は気にされた事があると思われる以下の話題を扱ってみます。 (1) 解法アルゴリズム 一般的な解法は、試行錯誤を用いたアルゴリズムでしょう。 しかし、答えは、ユニークになるのにどうして解法アルゴリズムには試行錯誤が必要なのでしょうか? 確定的な解法アルゴリズム(試行錯誤を用いないで解く方法)は存在しないのでしょうか? (2) 作図問題 枠だけを指定されたとき(枠の数とその位置)、その枠の数字をきめてナンプレの問題を完成させるという問題です。(これがうまくいくと、好みのレイアウトのナンプレ問題が簡単に作れてしまいます) 例えば、以下のような問題は作

    tanakaBox
    tanakaBox 2009/11/05
    解法の解説
  • 日本テレビ東京で学ぶMeCabのコスト計算 | mwSoft

    今回はこの言葉の解析をMeCab+NAIST辞書にお願いして、結果を分析することで、MeCabが行っているコスト計算について勉強してみたいと思います。 とりあえず実行してみる さっそくMeCabに「日テレビ東京」を解析してもらいましょう。 $ echo 日テレビ東京 | mecab 日 名詞,固有名詞,地域,国,*,*,日,ニッポン,ニッポン,, テレビ東京 名詞,固有名詞,組織,*,*,*,テレビ東京,テレビトウキョウ,テレビトーキョー,, EOS 「日 | テレビ東京」と分けていますね。視聴率的には負けていますが、NAIST辞書的には日テレビよりもテレビ東京が優先されたようです。 ちなみに「フジテレビ東京」ではどうなるでしょうか。 $ echo フジテレビ東京 | mecab フジテレビ 名詞,固有名詞,組織,*,*,*,フジテレビ,フジテレビ,フジテレビ,, 東京 名詞,

    tanakaBox
    tanakaBox 2009/11/01
    興味深い
  • Diff algorithm - 枕を欹てて聴く

    id:smoking186 さんの指摘を受け, First Authorの名前などを付加しました. どうもです. 記事内のcodeは最適化などを施しておらず, 冗長に, 定義どおりに書いています. ifがまとめられたりとかしますが, そのあたりはご容赦を... Rubyでlevenshtein距離を見て以来, 個人的にdiffブームが来ていた. 計算量O(ND) / O(NP)のalgorithmなどがあるのは知っていたが, 論文(英語)および, 解説のみ, またはソースコードのみなど分かれているものが多く, algorithmに疎い自分には理解するのに大変時間がかかってしまった. しかしやっとわかったので, 解説+JS実装してみる. 解説とソースコードがセットだと, 多少はわかりやすくなるかと... 自分は正直これくらい細かく言われないとすぐにはわかんない人なので(the O(ND)だけ

    Diff algorithm - 枕を欹てて聴く
  • プログラミングスキルを磨く20のパズルサイト - このブログは証明できない。

    オリオン座流星群が流行ってるみたいですね。ここで、心理テストです。 流星群と聞いて思い出すのは? A. 鬼束ちひろの流星群 B. ペガサス流星拳 この心理テストでは、あなたが流星群と聞いて思い出すものが分かります。Aを選んだあなたは、流星群を見ると鬼束ちひろの流星群を思い出します。しかし、どちらかと言うと「月光」の方を思い出し、しかも月光が明るすぎて流星群がイマイチ見えないタイプです。Bを選んだあなたは、流星群を見てもペガサス流星拳しか思い出せない貧相な思い出の持ち主です。ちなみに、私は高原で家族と過ごしたステキな一夜を思い出します。 さて、題です。プログラミングのパズルを出題するサイトがあります。調べてみると、たくさんあるんですね。プログラミングのパズルを解くと、プログラミングスキルだけでなく、論理的思考や問題解決能力も高まると思います。また、新しいプログラミング言語を練習するときにも

    tanakaBox
    tanakaBox 2009/10/26
    うは。面白そう。
  • ボロノイ図いろいろ - kaisehのブログ

    Webエンジニアバトルロワイヤルでは、平面分割手法としてボロノイ図と「疑似築道法」というものをデモしたんですが、そのとき説明に使った4種類の2次元ボロノイ図を以下に載せます。 通常のボロノイ図 「どの母点が最も近くにあるか」にもとづいて平面を分割します。ボロノイ辺は母点の垂直二等分線になります。 マンハッタン距離にもとづくボロノイ図 ユークリッド距離の代わりにマンハッタン距離を使うと、見た目ががらっと変わって、路線図や天気予報のときの都道府県図っぽくなります。 加法的重み付きボロノイ図 (Additively Weighted Voronoi Diagram) 母点にそれぞれ重みを設定して、ユークリッド距離に重みを加算したものを距離関数としてボロノイ図を作ると、ボロノイ領域を膨らませたり縮ませたりできます。ボロノイ辺は双曲線になります。 加法的重み付きべき乗ボロノイ図 (Additivel

    ボロノイ図いろいろ - kaisehのブログ
    tanakaBox
    tanakaBox 2009/10/20
    ほうほう
  • BLOG::broomie.net: 機械学習の勉強を始めるには

    thriftとかhadoopなど,何やらいろいろと手を出してしまい,ここのところブログの更新が滞ってしまっていますが,今日は前から書きたかったトピックについて自分へのメモの意味も含めて記しておきたいと思います. はじめに 最近,といっても結構前からなのですが,海外のブログなどで「機械学習の勉強を始めるガイドライン」についてのエントリーがいくつか見られ,かつ,議論も少し盛り上がっています.僕は機械学習が好きなだけで,専門というにはほど遠いのですが,僕も一利用者としてはこのトピックに関してはとても興味があります. 機械学習というと,色々な数学的な知識が必要であったり,統計学や人工知能の知識も必要になったりしまったりと,専門的に学ぶ機会が無かった人にとっては興味が湧いてもなかなか始めるには尻込みしてしまうことかと思います.今日紹介するエントリーは,そんな方々にヒントになるような内容になっていると

  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

    tanakaBox
    tanakaBox 2009/10/18
    いろいろ
  • http://1978th.net/tech/promenade.cgi?id=15

    tanakaBox
    tanakaBox 2009/10/17
    お手軽だ。
  • [PDF] SBMの推薦アルゴリズム

    SBMの推薦アルゴリズム 2009/09/13 第3回SBM研究会@東京工業大学 大岡山キャンパス (株)Preferred Infrastructure 岡野原 大輔 発表内容 • 会社紹介 / 自己紹介 • はてブの関連エントリ – Bayesian Sets • 大規模レコメンデーション• 大規模レコメンデーション – Locality Sensitive Hashで2000万件 数ms – エコは大卲だと も思います 会社紹介 (株)Preferred Infrastructure • PFI – 元 Purely Functional Infrastructure • 2006 3月 – メンバーは学厛の同勡、コンテストでの半 • 代表 勽勜 • メンバー 14名 (+ インターン 5名), エンジニア厾92% 代表 勽勜 • メンバー 14名 (+ インターン 5名), エン

  • 「最強最速アルゴリズマー養成講座」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    最強最速アルゴリズマー養成講座: そのアルゴリズム、貪欲につき――貪欲法のススメ アルゴリズムの世界において、欲張りであることはときに有利に働くことがあります。今回は、貪欲法と呼ばれるアルゴリズムを紹介しながら、ハードな問題に挑戦してみましょう。このアルゴリズムが使えるかどうかの見極めができるようになれば、あなたの論理的思考力はかなりのレベルなのです。(2010/9/4) 最強最速アルゴリズマー養成講座: 病みつきになる「動的計画法」、その深淵に迫る 数回にわたって動的計画法・メモ化再帰について解説してきましたが、今回は実践編として、ナップサック問題への挑戦を足がかりに、その長所と短所の紹介、理解度チェックシートなどを用意しました。特に、動的計画法について深く掘り下げ、皆さんを動的計画法マスターの道にご案内します。(2010/5/15) 最強最速アルゴリズマー養成講座: アルゴリズマーの登

    tanakaBox
    tanakaBox 2009/10/11
    連載目次
  • 編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー

    昨日 最長共通部分列問題 (LCS) について触れました。ついでなので編集距離のアルゴリズムについても整理してみます。 編集距離 (レーベンシュタイン距離, Levenshtein Distance) は二つの文字列の類似度 (異なり具合) を定量化するための数値です。文字の挿入/削除/置換で一方を他方に変形するための最小手順回数を数えたものが編集距離です。 例えば 伊藤直哉と伊藤直也 … 編集距離 1 伊藤直と伊藤直也 … 編集距離 1 佐藤直哉と伊藤直也 … 編集距離 2 佐藤B作と伊藤直也 … 編集距離 3 という具合です。 編集距離はスペルミスを修正するプログラムや、近似文字列照合 (検索対象の文書から入力文字にある程度近い部分文字列を探し出す全文検索) などで利用されます。 編集距離算出は動的計画法 (Dynamic Programming, DP) で計算することができることが

    編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー
  • Python: 画像で与えられた迷路に対し2点間の最短経路を求める

    迷路の描かれた画像に対して、ピクセルの座標で指定したスタート地点とゴール地点の最短経路を求めるプログラムをPython+PILで書いてみた。使用する画像は、デジカメで撮ったものでも、ウェブから拾ってきたものでも、ペイントソフトで自作したものでも構わない。 まずは使用例を見て欲しい。この画像は携帯カメラで撮った自作の簡単な迷路だ(画像上)。それに対して指定した2点間の最短経路を赤線で示してみた(画像下)。ピクセル単位で計測しているので赤線が若干ガタガタしていて完全な最短経路ではないがほぼ最短と考えていいだろう。迷路画像(画像上)をmaze01.jpgとし、スタート地点の座標が(240, 160)、ゴール地点の座標が(210, 400)の場合、コマンドラインで以下のように実行する。 maze_solver.py maze01.jpg -s 240 160 -g 210 400 これで最短経路を

    Python: 画像で与えられた迷路に対し2点間の最短経路を求める
    tanakaBox
    tanakaBox 2009/10/07
    よく考えれば、ドットの集まり。つまり、2階調化して2次元配列と考えれば解けるな。面白い。
  • ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室

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

    ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
    tanakaBox
    tanakaBox 2009/10/06
    読んだ資料も多いが、良いまとめ。パズル系はおもろい。
  • MySQL FULLTEXT Ngram : LIKE検索より数十倍高速な、お手軽 日本語全文検索 について|blog|たたみラボ

    tatamilab.jp

    tanakaBox
    tanakaBox 2009/09/22
    日本語の全文検索
  • [を] 転置インデックスによる検索システムを作ってみよう!

    転置インデックスによる検索システムを作ってみよう! 2007-11-26-5 [Algorithm][Programming] 転置インデックス[2007-06-17-6]による検索システムの実装は パフォーマンスを無視すれば意外と簡単です。 それを示すために Perl で簡単な検索システムを作ってみました。 検索方式は転置インデックス(Inverted Index)、 ランキングには TF-IDF[2005-10-12-1] を用いました。 検索対象ファイルは一行一記事で以下のフォーマットとします。 [記事ID][SPC][記事内容]\n 記事IDは数字、記事内容は UTF-8 の文字で構成されるものとします。 以下のようなサンプル test.txt を用意しました。 1 これはペンです 2 最近はどうですか? 3 ペンギン大好き 4 こんにちは。いかがおすごしですか? 5 ここ最近疲れ

    [を] 転置インデックスによる検索システムを作ってみよう!
    tanakaBox
    tanakaBox 2009/09/22
    サンプルが短くてステキ。
  • ベイズを学びたい人におすすめのサイト - download_takeshi’s diary

    ベイジアンフィルタとかベイズ理論とかを勉強するにあたって、最初はなんだかよくわからないと思うので、 そんな人にお勧めのサイトを書き残しておきます。 @IT スパム対策の基技術解説(前編)綱引きに蛇口当てゲーム?!楽しく学ぶベイズフィルターの仕組み http://www.atmarkit.co.jp/fsecurity/special/107bayes/bayes01.html いくつかの絵でわかりやすく解説してあります。 自分がしるかぎり、最もわかりやすく親切に解説してる記事です。数学とかさっぱりわからない人はまずここから読み始めるといいでしょう。 茨城大学情報工学科の教授のページから http://jubilo.cis.ibaraki.ac.jp/~isemba/KAKURITU/221.pdf PDFですが、これもわかりやすくまとまってます。 初心者でも理解しやすいし例題がいくつかあ

    ベイズを学びたい人におすすめのサイト - download_takeshi’s diary
  • ベジエ曲線の仕組み (1) - 昔話 - てっく煮ブログ

    asドローソフトなどでもお世話になることが多いベジエ曲線について解説していくシリーズ。小学生のころ、BASIC でのサンプルを入力して遊んでいたのですが、あまりのきれいさに衝撃を受けたプログラムがありました。それはこんな絵を出力するプログラムでした。左上と左下の点をそれぞれの x 座標、y 座標を少しずつ増やしながら、直線を引いています。いくつもの四角形が端に行くにしたがって変形していくところが、いかにも近未来風の CG に見えました(当時は)。しかも、この絵は直線だけで構成されているのに、カーブして見えるところが不思議でなりませんでした。さて、15年のときを経て、このプログラムを ActionScript で実装してみました。点をドラッグして曲線の変化を楽しんでみてください。前置きが長くなりましたが、実はこのカーブして見える曲線の部分は2次ベジエ曲線になっています。3つの黒い点がベジエ

    tanakaBox
    tanakaBox 2009/09/19
    へぇぇぇ。
  • Delphiアルゴリズムトレーニング - @IT

    TListの実装と性能 Delphiアルゴリズムトレーニング(1) オブジェクト指向により、アルゴリズムは隠ぺいされることが多くなった。しかし、「用意されていない処理」が求められたときに対応できるか

    tanakaBox
    tanakaBox 2009/09/19
    リスト系アルゴリズム
  • [ActionScript 3.0] 四分木│miscellaneous

    四分木とは 領域を必要に応じて再帰的に4分割していきながら領域を分割する方法 下のデモでは赤い円を障害物と見立て、四分木を構築しています。 赤い円はマウスで移動できます。移動するごとに四分木は再構築されます。 赤い円がない部分は粗く、赤い円の境界の部分は細かく分割されているのがわかるかと思います。 次のデモでは勝手に動く円の位置を元に四分木を構築しています。

    tanakaBox
    tanakaBox 2009/09/19
    4分木。デモあり。
  • すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog

    みなさん、こんにちは、今回は乱数の話です。 特に複数機種でのコンシューマ機でゲームを開発をしていると、機種間で乱数値を統一するために乱数生成アルゴリズムを自作しますよね。 そこでよく使われるアルゴリズムが「線形合同法」です、内容は至って簡単で、以下の漸化式を使います。 A,B,Mは定数で、どの値が入るかは処理系依存です。 例えばUnixなどの処理系ではA=1103515245,B=12345,M=2147483647などが入ります。 C言語ですと以下のようになります。 static unsigned int x=1; void srand(unsigned int s) { x=s; } unsigned int rand() { x=x*1103515245UL+12345UL; return x&2147483647UL; } この「線形合同法」は計算が簡単で高速ですから、いろいろな環

    すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog
    tanakaBox
    tanakaBox 2009/09/19
    軽い!