プログラマの数学
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/03/24
- メディア: 大型本
- 購入: 41人 クリック: 707回
- この商品を含むブログ (396件) を見る
結城浩さんの本はほんとうにおもしろい。簡単な文章で高度な概念をわかりやすく説明してくれる。なるほど!という感動が次々でてくるので、とても楽しく読むことができる。現在読んでいる「Java言語で学ぶデザインパターン入門」もおもしろいが、この「プログラマの数学」も名著だとおもう。次は「数学ガール」にもいってみたい。
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%B9%C0" class="keyword">結城浩</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6" class="keyword">ソフトバンククリエイティブ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2004/06/19</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 大型本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 51人 <span class="hatena-asin-detail-label">クリック</span>: 762回</li>
<li><a href="http://d.hatena.ne.jp/asin/4797327030" target="_blank">この商品を含むブログ (399件) を見る</a></li>
</ul>
- 作者: 結城浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2007/06/27
- メディア: 単行本
- 購入: 58人 クリック: 1,055回
- この商品を含むブログ (966件) を見る
問題を解くときには、複雑な問題をそのままにしておいてはいけない。問題をよく調べることで、構造を見抜く、グループに分ける、周期性を見つけることができる。問題がわかると、複雑な問題をより簡単な小さな問題に分割することができる。あとは小さな問題をそれぞれ解くことで、問題全体を解くことができる。
問題を調べたり、分割したり、分割したそれぞれの小問題を解くときには、数学が便利なツールとして使える。
ゼロ
存在しないものを、「ないという状態がある」と定義することで、一貫性のあるシンプルなルールを作ることができる。
論理
論理を使うことで、問題をtrueとfalseの2つへ分解できる。組み合わせることで複雑な分解も可能。逆に複雑に分解された問題を考えやすくするためのツールもある(論理式、真理値表、ベン図、カルノー図)。
剰余
周期性のある解は、剰余でグループ分けできる。
数学的帰納法
ループを考える際の基礎となる。N回のループは、問題をN分割しているのと同じこと。Nこの問題すべてをきちんと回りきるためには、ループは有効。
順列・組み合わせ
問題の構造を見抜くことで、大きな数も数えることができる。大切なのは、問題の性質を考え、小さい数で考えて見て、それを一般化し全体に適用すること。
再帰
繰り返し構造の中にも、周期的に値が変化するものだけではなく、性質は同じで大きさだけ違うというものもある。このような再帰的構造は、様々な問題の中にあらわれる。
指数爆発
指数的な特徴をもつ問題には注意する。逆に指数的な性質を持つ、バイナリサーチなどのアルゴリズムは強力だ。
計算不可能な問題
計算機では絶対に解けない問題が存在する。この章は少し難しいが、興味深い内容。