タグ

algorithmに関するsawatのブックマーク (21)

  • アルゴリズム講座/実践編/バックトラック

    バックトラック(バックトラッキング)は思考アルゴリズムの王様と言っても過言ではありません。私の知る限り思考プログラムの約90%はバックトラックを使っていると思います。 1.バックトラックの考え 人が行う「試行錯誤という行為」を忠実に実行するように考え出されたアルゴリズムで利用範囲は 広範です。もちろん不得意分野もあります。 複数の未知のものを上手く組み合わせて、ある条件を満たす全体を得るのに、その未知のものを ひとつずつ許される範囲内で「もし、こう仮定して」さらにこの状態から「次に、こう仮定して」 というように仮定から仮定へと強引に突き進みます。 そんなことをすれば大抵は途中で行き詰ってしまいます。その時は1歩戻って(バックトラッキング) 仮定を立て直して、また、突き進みます。総ての仮定に失敗したら、そこからまた1歩戻って新たな仮定 を立て直して同様に進行すれば、やがては解に到達することに

    sawat
    sawat 2010/10/17
    『バックトラックは思考アルゴリズムの王様』
  • 2009-05-12

    → http://b.hatena.ne.jp/hasegawayosuke/20071003#bookmark-6060082 伊:たしざんのしかたならならったよ 呂:ぼくしょうがくせいだからわかんない 波:えりん、かわいくね? 伊:ふーん 呂:ぼくしょうがくせいだからわかんない 波:ね? ゲーム 私が雪国の小学生のころ、廊下や階段でみんなで遊んだゲーム。冬ってやることないんだよねぇ。ジャンケンをして勝った者が、その勝ち方によって決められた歩数分、歩く。これを繰り返し、先にゴールラインに達した者が優勝。ただし、ゴールラインは十分に遠いものとします。 歩数の決定は以下の通り。 グーで勝ち:「グ・リ・コ」と言いながら3歩 チョキで勝ち:「チョ・コ・レ・イ・ト」で5歩 パーで勝ち:「パ・イ・ナ・ツ・プ・ル」で6歩 小学生だから身長や筋力がまちまちなので割りと常勝している仲間もいたような気がしま

    2009-05-12
    sawat
    sawat 2009/05/13
    「期待値は最大」は「不敗ロジック」とは言わない気が…。あと、相手がこちらの戦略を知っていたら不利になるのでは?(相手が多く出す手に勝つ手を多くする)それも考慮した配分?
  • 画像同士の距離がとれたら近い画像マップができるよね - きしだのHatena

    CCVで画像同士の距離が取れたってことは、画像同士どれが近いかというマップができるよね。 ソースはこんな感じで import java.awt.*; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; import java.io.*; import java.util.*; import java.util.List; import javax.imageio.ImageIO; import javax.swing.*; public class ColorCoherenceVectorMap extends javax.swing.JFrame { /** Creates new form ColorCoherenceVectorMap */ public ColorCoherenceVectorMap(

    画像同士の距離がとれたら近い画像マップができるよね - きしだのHatena
    sawat
    sawat 2008/10/09
    イメージクラウドって感じかな。何に使えるかな?
  • パーセプトロンで手書き数字認識(失敗) - きしだのHatena

    適当にやってみたのですが、うまく学習できません・・・ ちゃんと調べてやるべきか。 画面にマウスなんかで数字を書いて、下の数字ボタンで学習します。上の判定ボタンを押すと、標準出力に判定結果を表示します。 3文字くらいまでなら認識できるようになるんだけど。 import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.swing.*; public class Perceptron extends JComponent implements ActionListener, MouseMotionListener{ Image img = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB); Graphics b

    パーセプトロンで手書き数字認識(失敗) - きしだのHatena
  • Program | 速くないクイックソート

    Index of /diary/index.php/2004/07/19 NameLast modifiedSizeDescription Parent Directory  - 0/2016-01-06 09:45 - Apache/2.4.10 (Debian) Server at www.jmuk.org Port 80

  • vectorとlistのメモリ効率 - 神様なんて信じない僕らのために

    元々は、LinkedListとArrayListのメモリ効率のお話。 ArrayListとLinkedListのメモリ効率 - ori’s diary 404 Not Found メモリ効率というと通常、「メモリ空間をどれだけ占有するか?」というイメージで捉えられると考えられるため、 ArrayListが効率が良い筈。 (LinkedListはprevや、nextを持ち、要素を指すための新たなクラスをnewしているため) で、 問題は、odzさんが ArrayList より LinkedList のほうがメモリ効率が良いなんてことは多分ない。 STL の vector と list なら list のほうが効率が良いこともあるかもしれないけど。 なぜかはちょっと考えてみると良い。 ArrayList と LinkedList - odz buffer なんておっしゃっていること。 いやあ、

    vectorとlistのメモリ効率 - 神様なんて信じない僕らのために
    sawat
    sawat 2008/03/11
    コメントした。(→レスポンスあり)
  • 凸包を求める - きしだのHatena

    前回のようなランダムな点があったとき、その点を全部含んでへこみのない多角形を作成するという問題。 アルゴリズムとしては、「他の点でできる三角形に含まれてたら凸包上の点じゃない」という考え方で、全部の組み合わせの三角形について全部の点を走査します。最適なアルゴリズムではないですが、とりあえず今回はこれで。 で、点Pが三角形ABCに含まれるかどうかは、三角形ABCが時計周りだとしたら、三角形ABP、BCP、CAPも時計回りだということを使います。 点Pが三角形ABCの外にある場合は、三角形ABP、BCP、CAPのどれかが三角形ABCと逆周りになります。 三角形の向きは符号付面積を使うのですが、三角形の座標をそれぞれ(x1, y1)(x2, y2)(x3, y3)とすると(x1 - x2)(y1-y3)-(x1-x3)(y1-y2)で得られます。 そうやって凸包上に乗らない点を削除したら、隣り合

    凸包を求める - きしだのHatena
    sawat
    sawat 2008/03/03
    大学の計算幾何学でやった。なつかすぃ。そのときはxかyが最小の点をスタートにして、他の全ての点に対して内積を使ってやった気がする(よく覚えていない)。
  • あなたが一番好きなアルゴリズムを教えてください。 また、その理由やどんな点が好きなのかも教えてください。 - 人力検索はてな

    あなたが一番好きなアルゴリズムを教えてください。 また、その理由やどんな点が好きなのかも教えてください。

    sawat
    sawat 2007/11/27
    勉強になる/回答3の「再帰」はアルゴリズムじゃないね。「ハノイの塔を解く」はアルゴリズムだ。
  • 404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10

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

    404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10
    sawat
    sawat 2007/11/27
    いちおう全部知ってる。2,9,10以外は実装したことがある。
  • パワー法による固有値と固有ベクトルの求め方

    パワー法による固有値と固有ベクトルの求め方     Last modified: May 16, 2002 固有値・固有ベクトルを求める簡単な方法としてはパワー法がある(パワー法は,あくまでも簡便法である。より一般的で精度も十分で計算速度も速いアルゴリズムは数多くある)。 例題: 「行列 $\mathbf{A}$ の,固有値と固有ベクトルを求めなさい。」 \[ \mathbf{A} = \left ( \begin{array}{rrr} 1.0 & 0.5 & 0.3 \\ 0.5 & 1.0 & 0.6 \\ 0.3 & 0.6 & 1.0 \end{array} \right ) \] 固有値・固有ベクトルを求めたい行列を $\mathbf{A}$ とする。 > ( A <- matrix(c(1, 0.5, 0.3, 0.5, 1.0, 0.6, 0.3, 0.6, 1.0), b

  • Javascriptでdiffる ( with 形態素解析 ) (nakatani @ cybozu labs)

    Javascript で diff というのはいくつか試された例はあるようですが、まだこれといった決定打は出ていない様子です。 実は diff は見た目ほど軽い処理ではないので、Javascript にやらせるのはこれが結構大変…… diff の計算量は、おおざっぱに言うと比較対象の要素数の二乗に比例し(実際にはそれより小さくすることができるのですが、まあ話のイメージとして)、かつメモリを大量に消費するので、バッチ的な処理に最適化されていない Javascript にはどうしても荷が重いものとなってしまいます。 比較対象の要素数を減らせば当然計算量は減りますが、行単位で比較してもあまり嬉しくない(わざわざ Javascript で処理するということは自然文が対象と思って良いでしょう)。最小の文字単位だとギブアップ。 ということは形態素解析で分かち書きして、単語単位で diff するのが J

    sawat
    sawat 2007/07/02
    O(NP)のアルゴリズムは共通箇所がほとんど無い場合にクソ重くなるので、googleの方は精度を落としてその辺に対応しているのではないかと思う。(憶測)
  • てっく煮ブログ - 四則演算を JavaScript で実装する

    aki noteGoogle 電話面接を受けました orz (いまは消えてるけど)にて割り算が壊れました。自分で実装してみてくださいという質問が紹介されていた。せっかく(?)の機会なので、割り算だけでなく、四則演算を全部壊してみて、JavaScript で実装して見ることにした。JavaScript を選んだのは、コンパイル不要、ビット演算がある、Firebug で手軽に確認できる、という理由から。それ以上の深い意味はない。ということで、次のような問題に一般化してみた。問い四則演算を JavaScript で実装しなさい。演算子は ==、!= およびビット演算子のみ使ってよいものとします。補足例えば、for 文で for(var i = 0; i { // ... } と書くためには、++ 演算子は次のように定義できる。 function increment(i){ var c =

  • Subsetの生成

    sawat
    sawat 2007/06/25
    なるほど。すごい。
  • 第11回 プログラム同士の対戦ゲーム

    あなたは魔法使い。もちろんプログラミングの腕もウィザード級です。そんなあなたがライバルと対決することになりました。マップ上にある「魔法の要素」をうまく集めてライバルを倒すプログラムを作成してください。今回は,カコミ記事「ゲームのルール」に従って移動ができるまでとします。 キャラクタを移動させるアルゴリズム アルゴリズムを作っていて一番うれしいと感じるのは,「自分で作ったアルゴリズムが動くところを見る」ときではないでしょうか? 日IBM主催で大会が開かれた「Robocode」がその代表的なものでしょう。Javaで仮想的なロボットを制御するアルゴリズムを記述し,対戦させるゲームです。アルゴリズムを組み立てたら,さっそくその内容を試せますし,アルゴリズムが悪ければゲームに負けてしまいます。こうして楽しみながらトライ&エラーでアルゴリズムを組み立てられるところから,新人研修などで最近よく使われて

    第11回 プログラム同士の対戦ゲーム
  • Information Mathematics

    最終修正2005/07/05 講義資料ページへ 情報数理学2005 情報数理学ノート 情報数理学レポート 提示:2004/05/24(Thu.) 提出:2005/07/26(Thu.) 第1回オートマトンと正規言語 (ppt) 第2回オートマトンと正規言語の等価性 (ppt) 第3回プッシュダウンオートマトンと文脈自由文法 (ppt) 第4回PDAとCFLの等価性 (ppt) 第5回チューリングマシンと計算 (ppt) 第6回チユーリングマシンの符号化と計算不可能性 (ppt) 第7回時間限定チューリングマシンとクラスP (ppt) 第8回クラスNPと多項式時間帰着 (ppt) 第9回NP完全とNP困難 (ppt) 第10回PとNP完全問題との境界 (ppt) 第11回擬多項式時間アルゴリズムと 動的計画法 (ppt) 第12回緩和法と分枝限定法 (ppt) 第13回近似アルゴリズ

  • 地球にやさしいアルゴリズム---目次 - 地球にやさしいアルゴリズム:ITpro

    アルゴリズムを構成している楽しい仕組みを紹介しながら,あなたに「おおっ」と言わせることが,連載の最初の目的です。興味を持てたなら,アルゴリズムに関する文献や情報を抵抗なく読めるようになるはずです。アルゴリズムを使いこなしたり,作ることも無理なくできるようになるでしょう。 まずはいろいろなアルゴリズムの面白いところを見て,楽しんでみましょう 第1回 ナンプレを解いてみよう 第2回 パズルみたいに楽しいデータ圧縮 第3回 「場面」の移り変わりに注目する 第4回 できるだけ短いルートでゴールに到達する 第5回 隣の区画と異なる色で地図を四色に塗り分ける 第6回 上手なアルゴリズムの見つけ方 第7回 多対多の関係を賢く扱う 第8回 倉庫番を解くアルゴリズム 第9回 プロトコルを実現するアルゴリズム 第10回 麻雀の役を判定する 第11回 プログラム同士の対戦ゲーム 第12回 対戦ゲームの戦略を考

    地球にやさしいアルゴリズム---目次 - 地球にやさしいアルゴリズム:ITpro
  • AVL tree applet

    The inset below illustrates the behaviour of binary search trees. Donald Knuth. "The Art of Computer Programming": Searching and Sorting Algorithms. G.M. Adelson-Velskii and E.M. Landis. "An algorithm for the organization of information", 1962 D. Sleator and R. Tarjan. "Self-adjusting Binary Search Trees", 1985 "Symmetric binary B-trees.  Data structure and maintenance algorithms.":  R

  • 「安定な」クイックソート - 飲み物だから太らない

    id:sawat:20061123の記述に関して。 クイックソートとマージソートの話で、クイックソートは安定でないということが書かれているが、そういう風に書くとさすがに嘘じゃないか?と思ったので。安定と言うのはこの場合、リスト中に同じ大きさの要素があった場合に、その順序が入れ替わらないことを言う。 クイックソートで第一に重要になるのはピボット選択(つまり、比較対象の選択)だが、これをもし仮にリスト(or配列)の中から取ってくるとすると、その値をどこに入れるのか。その作業で不安定になることがある。しかし、クイックソートはリストの対象を二つに分割するわけだが、その操作においては安定であるようにすることが可能である。例えばHaskellなどでよく使われるクイックソートは、 quicksort :: Ord a => [a] -> [a] quicksort = quicksort (x:xs)

    「安定な」クイックソート - 飲み物だから太らない
    sawat
    sawat 2006/11/25
    Haskellを勉強してみたくなった。
  • stable quick sort - odz buffer

    ref:落ちてないけど堕ちている - 「安定」なクイックソート stable な quick sort もあるよ、という話なのだが。 quicksort :: Ord a => [a] -> [a] quicksort [] = [] quicksort (x:xs) = quicksort [ y | y <- xs, y < x ] ++ [x] ++ quicksort [ y | y <- xs, y >= x ]これは遅そうだなぁ。in-place にはできないのか?じゃないとメモリ消費量がすごそう。 ただし、このようなことをする場合には内部的にmallocが必要となる(リストだし・・・)。 連結リストだからといって毎回動的メモリ確保が必要かといえばそうでもない。必要なサイズがあらかじめ分かれば1度大きな配列を作ってインデックスをポインタ代わりに使えば済む。 そもそも、問題は m

    stable quick sort - odz buffer
  • 404 Blog Not Found:javascript - Array#sortがオレquicksortより遅い!?

    2006年11月23日14:45 カテゴリLightweight Languages javascript - Array#sortがオレquicksortより遅い!? な、なんだってー!? ごっつええブログ - JavaScriptによるソートアルゴリズムの比較実験 『JavaScriptを使って一定以上の数量をもった数値配列をソートする場合は、組み込みメソッドよりもクイックソートを使用したほうが高速である』 自分でも検証してみた。 どうやらMozilla系列のJavaScript実装に関しては嘘ではないらしい。以下で確認してほしい。 Firefox 2に関してはほぼ同等だが、Mac IE 5, Safari 2.0.4, Opera 9.02ではbuiltinの方が速かった。しかしその差は最も大きかったSafariでも3倍程度で、builtinとしてはやはり遅いように見える。 # of

    404 Blog Not Found:javascript - Array#sortがオレquicksortより遅い!?
    sawat
    sawat 2006/11/23
    トラバした。