実装者のための計算量のはなし - O(logN)などをわかり易く説明しました -
計算量の授業は苦手なものの一つでした。でも、NoSQLのRedisやPythonなどのマニュアルを読んでいると、こんな感じのデータ構造なのか、などとイメージできていました。
とはいえ、苦手な分野だったので若い人には自分で調べる様に言っていたのですが、どうもわかっていない。開発の際は性能試験をするので品質には問題ないのですが、設計する際にきちんとイメージできるのか不安になりました。
私がなぜイメージできるかを考えると、アセンブリ言語の処理時間をクロック数で数えたり、アルゴリズムを学んだりと昔ながらの勉強法で、計算量と実装が結びついていたからだと思いました。
そこで若い人たちに、アルゴリズム+データ構造と計算量の関係を説明したところ予想外に好評で、ある程度はイメージできる様になった様ですので、スライドを公開します。RDB処理のようになるべくDBMSに任せて遅いところをチューニングすれば良い、といった単純な考えでは不十分である事がわかっていただけると思います。
そして、単に呼び出すメソッドの計算量だけでなく、呼び出す側の計算量も考えないといけない事。アルゴリズム+データ構造がイメージできれば、こんなメソッドがあるはずだとか、ハッシュの苦手な処理を速くするようにセッターをラップすれば最大値をO(1)で得られる、ということも理解していただけるでしょう。
計算量のはなし from Makoto SAKAI
« 意外と難しい進捗報告 - 進捗報告で気をつける事 - | トップページ | チームを守り育てる - セクシーな中間管理職 - »
「ソフトウェア」カテゴリの記事
- One fact in one placeとチケット駆動開発 - Software Processes are Software, Too -(2021.12.21)
- マルチスレッド処理と進捗管理・配員・作業分割/割り当て- Software Processes are Software, Too -(2021.12.20)
- カプセル化と組織パターン - Software Processes are Software, Too -(2021.12.20)
- 論文研修会(導入編)- 論理的思考のすすめ -(2019.12.01)
- デブサミ関西でNode-REDとペンギンと勇気の話をしました #devsumiB(2018.10.28)
この記事へのコメントは終了しました。
コメント