【8日目】bit全探索に感動する【pythonで音楽系人工知能を作るまでの日記】

2023年2月12日

最近は「ゼロから作るDeepLearning」、友達とkaggle、Atcoderと色々学んでいる。
Atcoderとか機械学習を学んでて感動したものを記録しておこうと思って残す。

bit全探索

Q, 赤、緑、青から好きなだけ選んで色を作る場合、何色作れますか?
A, それぞれ使う使わないの2択、それが3色だから2^3。でも、何も選ばない場合は色にならないので   2^3-1=7色

これをプログラムで実装しやすくしたのがbit全探索。

1~7を二進数で表すと

1 [001]
2 [010]
3 [011]
4 [100]
5 [101]
6 [110]
7 [111]

更にこれに赤緑青をそれぞれ順番に、0は選ばない、1は選ぶで当てはめると
1 [001] 無無青
2 [010] 無緑無
3 [011] 無緑青
4 [100] 赤無無
5 [101] 赤無青
6 [110] 赤緑無
7 [111] 赤緑青
と、一つもかぶらずに全ての選び方を表現することができる。

これが! bit! 全探索!

滅茶苦茶シンプルだし理解してしまえば当たり前なんだけど、最初見たときは天才かと思った。
色の組み合わせの場合はこのbit全探索使う必要ないかもだけど、商品の値段の組み合わせで、1,000円以上になる組み合わせは何通りか? 的な問題が出てきたら比較的簡単に実装できる。

ニュートン法で√2を求める

正直、ニュートン法に感動したというより、y=x^2とy=2の交点のx座標は√2になるという私は今まで持ってなかった視点に感動しただけである。
数学を学んでるとこういう今までなかった視点が出てくるから、その度に感動してる。

とりあえずこの調子で学んでいこう。