12/21 パターン認識(2)


補足


前回の感想,質問より

Q.
当初は、a.lengthのあとに()をつけていなかったのですが、それだとエラーが出ていました。エラーメッセージは、
ArgumentError: wrong number of arguments (given 1, expected 0)
from /home/5073280264/algo16/gjp.rb:6:in `length'
from /home/5073280264/algo16/gjp.rb:6:in `maxrow'
from (irb):27
from /usr/local/bin/irb:11:in `<main>'
このようなものでした。つまり、lengthの引数が0であるべきところが1であるというエラーでした。a.lengthのあとの-1が引数として認識されてしまったようです。
A.
Ruby言語では、いろいろなところで、括弧を省略できるのですが、意図に反した解釈をされることもよくありますね。それもあって、教科書では括弧を省略しない書き方に徹底しているようです。 なお,スペースをどこにも入れずに,
a.length-1
と書いたり,「-」の両側に入れて
a.length - 1
とした場合,どちらでも
a.length()-1
と解釈されるようですね.
a.length -1
のように,「-」の前に空白を入れて,後ろには入れない場合のみにこの問題が発生するようです.
Q.
スライドの12p13pの表の数字で、一番上の横向きが0000、一番左の縦向きが111となっているのがよくわからなかった。
A.
表の一番上の行は, j = 0 の場合のAから見た勝率になります.j = 0 ということは「Bがあと0勝でシリーズに勝つ」すなわち,「Bは既にシリーズの勝ちを決めている状態」なので,Aからみた勝率は0になります.

表の一番左の列は,i = 0 の場合のAから見た勝率になります.i = 0 ということは「Aがあと0勝でシリーズに勝つ」すなわち,「Aは既にシリーズの勝ちを決めている状態」なので,Aからみた勝率は1になります.

「あと0勝」という状況を考えないで求めることもできますが,考えた方が簡潔になるので,教科書ではそのようにしています.


Q.
はじめコーディングiso-2022-7bitになってしまっていて、読み込めなくなかった。 TAの方に手伝っていただき、新しいファイルを作成することで問題を回避できたが原因は不明。
A. (TA樋口さん)
私自身が普段使いのエディタとしてEmacsを使用していないため、ひとまず新しいファイルを作成することで解決しました。念のためにEmacsの設定(.emacs.d/init.el内のset-default-coding-systemsなど)を見直してみてください。 また、この時自動挿入された"# coding: hogehoge"(マジックコメントといいます)はRuby 2.0以降では不要になっています(デフォルトがUTF-8になったため)。「emacs マジックコメント」などと検索するとマジックコメントの自動挿入を停止する方法がいくつか出てきますので、確認してみてください。
Q.
これらのプログラミングだけで面倒くさい方程式が解けるならば試験中に持ち込みたい。
A.
コンピュータの持ち込みを許す試験は多くないと思いますが,レポートの作成の時は手計算ではなくコンピュータを使って答えを出すことを許す科目は多いと思います.
Q.
最良のアラインメントを採用する方法として、一致、ギャップ、不一致それぞれに対し、2,-2,-1点を割り当てているが、なぜこのような点の割り当て方なのかが気になった。(「不一致2個とギャップ1個は等価値なのか」など)
A.
どのようなスコアを割り当てるかは問題の種類(DNAのアラインメントか,タンパクノアラインメントか)によって変わります. http://www.ddbj.nig.ac.jp/search/help/clustalwhelp-e.html などで,実際の問題を解く際のスコアを見ることができるようですね.
Q.
rubyではアルファベットの順番は判定できたりしますか?
A. (TA 森永さん)
通常の<, > などの演算子で可能です。rubyの2項演算子< は文字列に対しても定義されていて、2つの文字列のバイト列の比較を行います。 一般の文字コードはアルファベット順に文字をバイト列へ割り当てるので、その比較が自動的に辞書順の比較になります。 (が、アルファベット以外の記号を含めて考えると文字コードによって結果が違ったりもするようです)

前回の課題について


今日の練習,投票

講義資料


講義フォルダの作成


配付プログラムのダウンロード


投票システム

vote.rbをダウンロードして(「リンク先のファイルを別名で保存」で,ホームフォルダの下のalgo16を選択(なければ作る).".txt"を「追加しない」を選ぶ),ホームディレクトリに保存します.ドックからターミナルを起動して,
cd algo16
を済ませてから,
ruby vote.rb 選択肢番号
のように使います.

irbを使いながら(一旦終了せずに),投票システムも使うには,ターミナルのメニューバーの「シェル」->「新規タブ」を選ぶか,[Command]+[T]で別のタブを開いて(あるいは[Command]+[N]で別のウィンドウを開いて),投票システムを使うことをお勧めします.このあたりのことは,「はいぱーワークブック」15.4 ターミナルの便利な使い方に書いてあるので参考にしてください.


テキストの補足


今日の課題



自宅で自習をする人のために

アルゴリズム入門共通資料の中に講義で使うRuby言語の処理系のインストール法があります.