蛇使いな彼女BLOG
【第77回】 アルゴリズムを学ぼう!ー#1.探索編
2023.01.20
皆様こんにちは。
冒頭突然ですが、年末年始に念願の90cmレプタイルゲージと用品レイアウト用の棚を設置しました\(^o^)/
Pythonの影響か最近蛇ですら可愛く思えるほど爬虫類熱がキているモトハシです。
こちらのゲージ、フトアゴ用に購入したドイツのエーハイムから出ているオールガラスの製品です。
W90×D45×H50(cm)あるので大迫力です!(そしてスペースも取ります)
フレームのない見栄えも素敵ですがスライド開閉窓の接地面のクッションもこだわりが詰まっていて、ガラスに馴染むよう透明シリコンで処理されていて美しいです。
個人的にドイツ製は日本に負けないものづくりへのこだわりと実直さが伝わってきて感心します。
タイミングのせいかECショップだとどこも入荷未定で円安も相まって手に入らないかと思いました。
そもそも専門店ですら取り扱いしている店が圧倒的に少ないような・・。
このサイズならモニターや大型のイグアナ、ボールパイソンなどフルアダルトで1m超えの生体以外なら大抵何でも飼えると我が家一同歓喜しております。
そういうことでモトハシ的嬉しい&マニアックな話失礼致しました(笑)
さて、年明けの慌ただしさや高揚感も徐々に落ち着いてきた頃でしょうか。
毎年新春のこの時期はヘビカノ関連のスケジュールが割合多くなるので何を書こうかな~?と考えていたのですが、ふと大学入学前にやっていたeラーニングの課題を思い出しました。
現在も同じ課題が導入されているのか分かりませんが、当時は英語と理数系の基礎問題から、学部が生物系だったのでDNAアレイがどうのこうのという話や探索アルゴリズムまで深いテーマを学習していました。(それ以外の科目ってあったのかな?覚えてないです)
当時は「ふーん」くらいで適当に流していたのですが、今実際にプログラミングをしていると、あの時の課題って10代では高度な内容だったんだなあ・・と実感します。
そこで、今回は基本的なアルゴリズムとして、線形探索と二分探索を例に、実際にPythonでコーディングしてみたいと思います。
正直、モトハシ普段仕事でプログラミングをしていてアルゴリズムを意識したことがないので(おい。)
理論的な説明は自信ないですが、以下広い心でご覧ください🤗
【線形探索】
探索する配列の先頭から最後まで順番に1つ1つ探索を行うアルゴリズムです。
探索配列は0~20までのランダムな整数を30個用意しました。
今回は「5」の数値を探索するために、配列の先頭から順番に真偽を問います。
このコードを実行すると、3箇所で「5」が発見できました。
Numpyのarray配列と繰り返し構文のrange(30)は暗黙的にrange(0,30)となり、0から数えて30回繰り返しの意味なので、インデックスは必ず0から始まります。
なので、実際に数えたときは位置が1つズレます。
このアルゴリズムの身近な作業での使い道ですが、例えばデータを整理するときにファイルサイズが○KB以下のデータは除外したり、バラバラなファイルを同じ日付でまとめたいときなどに活躍します。
プログラミングの知識がない時にアルゴリズムを学んだ身からすると、どこで使うんだろう??と困惑していましたが、要領よく作業しようと心掛けていると意外と無意識にアルゴリズム的な考え方や行動しているもんだなあと、今になって思います。
(次回に続く!)