1/10 レコードとオブジェクト,その他


補足


試験について


前回の感想,質問より

Q.
二つ以上の解が存在する時も機械的にただひとつの解が優先されるが、参考としてほかの解も示し得るものだとより便利だと思う。
A.
そのようなプログラムを作成するのにチャレンジしてみるのも良いと思います。ただ、解の数が問題のサイズの指数のオーダになることがあるので、そのような入力を与えるといつまでたっても答えが得られないということはあるはずです。
Q
alignの穴埋めの答えはv0,v1,v2をあらかじめ用意した後でmaxに代入していましたが、maxでそのまま入れては何か問題があるのでしょうか。
A(TA前川さん).
プログラムの見やすさのためにv0, v1, v2と置いていますが、変数に代入せずにmaxに式を直接入力しても同様の動作になります。
Q.
tracebackはどのような場面で使われるのだろうかと思いました。
A.
扱う問題にもよりますが,近い2つの種の遺伝子配列のアラインメントを取った場合,どのような遺伝子変異があったのかを推測するためには,ギャップの情報は役にたつと思われます.
Q.
最後の手書き文字認識の話で、あえて書き順とか線を引く向きを逆にしたらいくら綺麗に書いても判別できないのかなと思った。そうだったら面白い。
A.
はい.初期の文字認識ソフトでは「認識させるためには正しい書き順を覚える必要がある」という特性があるものもありました.ただし,最近は「多くの人がやる書き順の誤りに対応する」ように進化しているはずです.
Q.
機械学習からディープラーニングに移ったように、人間の脳の仕組みが解明されていくにつれ新たな手法が開発されると思うと楽しみです。
A.
前回の講義のスライドで,「活性化関数φとしては実際の神経細胞をモデル化したものが使われたが,次第に都合の良さを優先」と書いたように,現在のディープラーニングは,「人間の脳の仕組み」がどうなっているかによらず,「役に立てば何でも入れる」という形で進歩しています.この点を誤解すると,ディープラーニングに過度の期待をしてしまうおそれもあるので,一応指摘しておきます.
Q.
Sセメの授業で遺伝子やアミノ酸をアライメントすることがあったが、その時に使ったサイトでも同じように動的計画法を使っているのかなと思った。
A.
この講義で扱った,長さnの2つのシンボル列のアラインメントを O(n**2)のメモリを使用して,O(n**2)の計算時間で計算する動的計画法は,この問題に対して基本的に使われるアルゴリズムになっています.一方で,「差分がnに比べて非常に小さい」ケースなどを対象にしたよりメモリ使用量,計算時間の小さいアルゴリズムも知られているので,それらも使われていた可能性はあります.

授業アンケート


前回の課題について


今日の練習,投票


投票システム

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

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


テキストの補足


今日の課題


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

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