12/22 数値計算(3), パターン認識(1)
前回までの補足
試験について
- 2/10(木) 2限(10:55-12:25)になりそう
- 共通試験のみ
- 試験時間: 90分
- 持ち込み: 不可
- 出題範囲: 教科書1~7章(目次で「*」がついている部分は除く)
- 問題形式: 記述式、プログラムを解答するものを含む
前回の感想,質問より
- Q.
- 単精度から難しくなり誤差になると難しくてわかりませんでした。
- 単精度法や丸め誤差など、複雑な概念が多く出てきて期末テストが不安です。
- 0.1などの2進数表記のところは難しかったので、教科書を読むなどしてしっかりと復習して、理解できるようにした
い。丸め誤差はさっぱりだったので、特に頑張ります。
- 今日の精度の話よくわかりませんでした。
0と1の羅列を見ていると何を言っているのかが分からなくなってしまいます。
- 2進法の四則演算がよく分からなかった。
- A.
- 2進小数の計算が分かりにくいと感じた人が多いようですね.実際のところは,
「すべての計算を2進小数表現に直した上で計算できるように求めている」わけで
はなく,「0.1のように10進小数表現で丸め誤差なく表現できる数でも2進小数表現では丸め誤差が生じてしまうことがある.」ことが分かれば,桁落ち,情報落ち誤差に関し
ては頭の中では10進小数表現で考えて理解しても構いません.
- Q.
- 簡単にすぐ作れるので問題ありませんが、allcodeの中にabs.rbが入っていないのが気になりました。
- cancellationのプログラム中のabs.rbというファイルがallcodeの中になかったため、cancellationのプログラムを動かすことができなかったのですが・・・。
- A.
- abs.rbは教科書34ページの練習3.1で定義することになっているので,allcodeには含まれていないようですね.第6章の練習,投票の中には入れてあります.
- Q.
-
10進数の0.5を2進数で表そうとすると、0.1(2)または0.01111111...(2)という二通りの書き方が可能だ、という話
を聞いたことがあります。実際にパソコンに数値を覚えさせるときは有限の桁しか覚えさせられないので、そういう
ところからも誤差が出るんのかなぁ、と思いました。
- A.
- 10進法で1を0.999999999... が同じなのと一緒ですね.
- Q.
-
この前先生をテレビで拝見しました。
例の将棋の話やってました。
東大ぱねーって思いましたとさ。
- A.
- 昨年 「どうぶつしょうぎ」の完全解析 という研究発表をしたのですが,「とくダネ」という番組の取材を受け,12/14の「どうぶつしょうぎ」特集に30秒ほど出ました.
- 解析の結果,初期局面から到達可能な局面数は約2億5千万で,解析には5時間半かかった.
- 勝ちに要する手数が173手もある局面がある.
- 初期配置の後手勝ちの証明木のサイズが数百万
- 引き分けとなる局面が少なく,勝ち局面でも勝てる手が一手しかないことが多い.
- 「敵陣へのひよこ打ち」など一見無意味な手が有効であることもある.
などの理由で「奥が深いゲーム」だとコメントしたのですが,間をカットされて,「局面数が2億5千万だから奥が深い」と言っているように編集されていましたね.
- Q.
- いろんな誤差を検討しなければならないのは面倒だと思った。
式変形による桁落ちの回避は応用しづらいと思うのですが、実用性はあるのですか?
- A.
- ライブラリ等の何度も使われるようなプログラムではこのあたりは考えてお
く必要がありますね.
- Q.
- いい加減教科書を買わないといけないと思うが、まだ売っているのかが不安だ・・・
- 教科書買えば今からでも挽回できますか?
- A.
- 教科書は買った方が良いと思います.「今から挽回」は試験までに教科書をある程度理解できれば可能です.
投票システム
vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.
今日の練習,投票
関連リンク
教科書の補足
- 情報科学入門: Rubyを使って学ぶ / 配付プログラムにあるプログラムは一括ダウンロードできます.allcode.zipをダウンロードして,ファインダーからダブルクリックするとallcodeというフォルダーができます.その下にすべてのファイルが入っています.そこのファイルをすべて,講義用のフォルダーにコピーすると良いでしょう.
- 講義に関連したファイルはホームフォルダ直下に置くのではなく,講義専用のフォルダ(たとえば is10 という名前で)を作って置くのが良いでしょう.ターミナルでフォルダを作るには,
mkdir is10
のようにしてください.そして,ターミナルを開くたびに
cd is10
と入力してからirbを動かすと良いでしょう.詳しくは,はいぱーワークブック「13.4 コマンドを使ったファイル操作」を参照してください.
- 情報科学入門: Rubyを使って学ぶ / 配付プログラムの中には練習問題のチェックプログラムが含まれています.たとえば,第1章の練習問題をテストする時には,同じディレクトリに,練習問題で作成したプログラムを教科書で指定されたファイル名で置いて,
ruby check.rb ex01.rb
と実行すると,関数を与えた時の入力と出力があっていることが確認できます.
今日の課題
- 講義中に投票を求められるので,投票システムを使って投票をする.
- 講義で用いた練習問題で自分が解いたプログラムとその説明,今回の講義の感想,改善意見等(100文字以上)をCFIVEの掲示板CFIVEの掲示板12/22の課題,質問に書き込んでください.