7ch

読書記録 2024-04

はじめに

今年は読書記録をつけることに挑戦しようと思います。2016年から2017年にかけては、経済学部への編入学を志していたこともあって、ミクロ経済学やマクロ経済学の本をよく読んでいました。しかし、興味関心が社会工学や情報工学へと移っていったことや、ライフステージの変化などによって、年々読書量が減ってきた感覚がありました。そこで本年は、読書記録を公開して、何をどのくらい読んだのかを明らかにすることにしました。

なお私は業務中はPythonを書いたり論文を読んだりすることが多いため、以降に紹介する書籍たちはプライベートの時間を使って読んだものになります。

また、今年度の目標は主に4つ設定しており、

  1. 数理最適化に関するスキルをもっともっと磨く
  2. 競技プログラミングに参加しレーティング800に到達する
  3. 強化学習について理論の概要を理解し、実装スキルを身につける
  4. Rustを読み書きできるようにして、あわよくば業務で使用する

各文献の後ろには、それぞれに対応したハッシュタグをつけています。

Combinatorial optimisation for telecommunications Lecture notes #1OPT

http://www-sop.inria.fr/members/Frederic.Giroire/teaching/ubinet/pdfs/ubinet.pdf

大規模な整数計画問題を効率よく解くためのアプローチの1つであるLagrange緩和法についてきちんと理解したいなと思って読んだ文献です。12章のLagrange緩和法の部分だけ出回っていて長らく大元のファイルを見つけられなかったのですが、この記事を書いている際に見つけることができました。

[進捗状況]

2024/03/29〜

12章を読んでいます。あまり時間が取れず、すこし放置気味になっています。

組合せ最適化 第2版 #1OPT

リンク先が原書6版のものしかなかったのですが、原書4版までを翻訳された第2版を読んでいます。研究室の輪読会でこちらを扱ったこともあって、第6章から引き続き読んでいます。行間が広いので読み進めるのがかなり大変で、こちらの進捗状況は悪くなりそうです。

[進捗状況]

 

競技プログラミングの鉄則 #2CP

競技プログラミング(=AtCoder)については大学院生のころから力を入れようと思っていたのですが、他者と競うことがどうにも好きになれないことと、Atcoderユーザーたちのノリがどうにも好きになれないのであまり手をつけていませんでした。とはいえ、基礎的なアルゴリズムについて理論だけを知っていても実装できなければ意味がないし、そのアルゴリズムがいつどのような場面で使用できるのか見極めることができなければ意味がないので、そのような2つの力を養うために競技プログラミングを始めることにしました。

以前こちらの「問題解決力を鍛える!アルゴリズムとデータ構造」という本を1冊通しで読んだことがあるのですが、こちらはB問題やC問題に関する解き方の本ではないようで、まずはレーティング400や800になる人向けの本を読んでみることにしました。

[進捗状況]

2024/03/24

1章を読みました。全探索に関する内容でした。

2024/04/12

2章を読みました。実務の場面で、特定の秒間における計測値の和を求めるクエリが大量に飛んでくるだろうなという想定のもと、データの出力形式を累積和としたことがあり、単純な1次元の累積和については馴染み深かったです。また、2次元の累積和に対するテクニックが面白かったです。問題A10もおもしろかったです。累積和以外にも、下処理をしておけば後から高速にクエリに応えることができるものがあるんだぞ!ということを学びました。

2024/04/14〜2024/04/16

3章を読みました。答えで二分探索するという考え方自体は、NP困難とNP完全の関係と全く同じなのですんなり理解できました。二分探索法の実装はめぐる式二分探索法を、しゃくとり法の実装はwhile1重尺取り法を参考にしました。しゃくとり法はアルゴリズムの理解はできても、実装をバグらせがちなのであまり好きになれませんでした。他の練習問題を解くことで苦手意識を払拭しようと思います。問題B14はbit全探索を絡めた問題で非常に面白かったです。文中の日本語が伝わりにくく、問題を理解する部分でつまづいた箇所がいくつかあったので、文章がより洗練されたらいいなと思いました。

Pythonで学ぶ強化学習[改訂第2版] #3RL

これまで機械学習のうち、クラスタリングなどの教師なし学習と、教師あり学習には触れたことがあったものの、強化学習については「なんか難しそう」という思いからこれまでスルーしていました。しかし、将来どのような機械学習関連のタスクが降ってくるかわからないので、とりあえず概要の把握とさっと実装できるくらいのスキルは身につけておこうと思いました。

同じ機械学習シリーズの強化学習は、本分野に入門する人が最初に選ぶべき本ではないように感じたので、ひとまずやさしめの本を選択しました。

[進捗状況]

2024/04/07 1章を読みました。

Rustの練習帳 #4RUST

私は普段プログラミング言語には主にPythonを採用しています。しかし、pandasよりもpolars、blackやflake8、isortよりもruffという最近の風潮から、Rustについても最低限読み書きできるようにならなければならないな、と思って読み始めました。本書はLinuxやmacOSでよく使用するコマンド(たとえばcatやlsなど)をRustで実装しながら、Rustの機能について学ぼうといった趣旨の本です。またテスト駆動開発(TDD)の方法をとっているため、これまでテストを書くという習慣があまりなかったのですが、必要性を理解することができました。Rustの詳しい部分は自分で補ってね、というスタンスのように感じたので、TRPLrustlingsで補強してあげるとよいのではないかと感じています。Rustは入門者に向けた文献が充実していてとてもありがたいです。

[進捗状況]

2024/04/06 2章を読みました。