タグ

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

  • 動的SQLによる数独の超高速解法

    Pinskiさんの記事は、「SQLで数独を解ける」ことを示したという点で評価できます。しかしながら、そのためのコードと実行時間が共に長大であるため、「SQLは面倒で遅い」という誤解を読者に与えかねません。稿で紹介する方法で、誤解が払拭されることを期待します。 第1、2部と第3部の手法を簡単にまとめておきましょう。 第1、2部では、手続き的な記述、つまり、どうすれば数独の解が得られるかの具体的な記述によって数独を解いています。手続き的とは言っても、せっかく宣言型言語であるSQLを使うので、手順の各ステップはなるべく宣言的に記述するように心がけています。 第3部(稿)の方法の質はたった1行のSELECT文です。このSELECT文には「数独の解とはどういうものか」だけが記述してあり、その解を得るための具体的な方法はコンピュータが考えます。ただし、このSELECT文は人間が手で簡単に書けるよ

    動的SQLによる数独の超高速解法
  • レーベンシュタイン距離 - Wikipedia

    レーベンシュタイン距離(レーベンシュタインきょり、英: Levenshtein distance)は、二つの文字列がどの程度異なっているかを示す距離の一種である。編集距離(へんしゅうきょり、英: edit distance)とも呼ばれる。具体的には、1文字の挿入・削除・置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される[1]。名称は、1965年にこれを考案したロシアの学者ウラジーミル・レーベンシュタイン (露: Влади́мир Левенште́йн) にちなむ。 レーベンシュタイン距離は、同じ文字数の単語に対する置換編集に使われているハミング距離の一般化であると見なすことが可能である。レーベンシュタイン距離の更なる一般化として、例えば一回の操作で二文字を変換する等の方法が考えられる。 実際的な距離の求め方を例示すれば、「kitten」を「s

  • K-means法

    クラスター分析の手法は2種類に大別される.一つはグループの数(クラスター数)を徐々に増やしていく(もしくは減らしていく)階層的な手法.もう一つはあらかじめクラスター数を固定して分類を行う非階層的な手法である.ここでは両者の違いとともに,非階層的な手法の代表例であるK-means法について概説する. 階層的なクラスタリング手法では,クラスター数を徐々に減らす場合,初めはすべての個体を要素一つからなるクラスターと考え,互いの距離の近いものから順にクラスターを融合していくことにより,適当な数のグループに分割する.そのため,クラスター間の融合の順序とその類似度を表すデンドログラム(樹状図)が形成されるという特徴がある. 非階層的な手法の代表例であるK-means法では,あらかじめ固定された数(例えば,K個)のクラスターのおのおのにその代表であるプロトタイプを与え,それぞれの個体を最も近いプロトタイ

  • 1