思いのほか不安定なブログ

テキトーなことを書いていきます.

学習記録2/15

  1. アルゴリズムとデータ構造
  2. C++

1は主に連結リストについて。連結リストにはいくつか種類があって、単なる連結リスト、循環リスト、双方向リストなどが存在し、循環リストと双方向リストは組み合わされることも多いらしい。各種連結リストの挿入、削除のところで一つ疑問があった。

例えば一番シンプルな連結リストを考える。各セルが値(value)と次のセルを指すポインタ(next)のみを持っている。この連結リストに新しいセルを挿入しようとするとき、連結リストの先頭に挿入する場合と途中に挿入する場合とで、場合分けして処理をしなければないらしい。この時、headというポインタが連結リストの先頭をさしているという条件だったのだが、headを単にセルとして定義すると場合分けしなくてよいのだという。この理屈がしばらく理解できなかった。

xというセルの後にpという新しいセルを挿入したいとき、

p->next = x->next;

x->next = p;

とするのはわかる。が、場合分けしなければならない理由がわからなかった。読んでいた本ではheadをセルとして定義すれば、x=&headとすれば場合分けせずに同じ処理で済むと言っているのだが、そんなのheadがポインタでもx=headとすれば同じじゃん、と思ってなんでわざわざheadをセルとして定義するのかわからなかった。

しかし今思うと、普通に考えてheadがポインタの場合、headは値もnextというポインタも持っていないので、x=headとすれば当然上記の処理は成り立たない。なんでこんな簡単なことに気づかずめちゃくちゃ悩んでいたのだろうか。。。自戒も込めてここに記しておく。

 

2はnewとdelete、参照についてやった。参照はやっていて基礎知識があいまいだと感じたので一度復習をしたい。がその他ではとくに躓くところもなかった。

学習記録をつけてみる

今日から学習記録をつけていこうと思う。なぜこんなことをするのかというと、半年計画で勉強をしていくとなると、必ずその途中でダレる時期が来るからだ。

ダレること自体はしょうがないにしても、一番よくないのはダレたことを実感せず、ダラダラとダレること。こうなるともはやその「ダレ」から抜け出すのは難しい。ヘタをすれば一ヶ月近い時間を無駄にすることもあるし、ダレてしまったこと自体が、その後の勉強のやる気を削ぐこともある。

学習記録をつけておけば、もしダレた時にも、「あ、今おれダレてんなー」とわかるから対処しやすい。つまり自己制御のために記録をつけていくということ。だから毎日つける必要はないので、週に2,3回のペースでもいいかなーと思う。気が向けばもっと頻繁に記録していってもいい。というわけで本日より記録スタート。

大学院の試験勉強

外部の大学院へ行くことに決めたので、ぼちぼち大学院入試の勉強についても考えなきゃと思ってるけど、ひとつ悩みがあった。

すこし違う分野の研究室を考えているので、試験科目も当然学部の専攻とは違うかとおもいきや、試験科目は選択制で、学部の専攻科目でも受験できるっぽい。高得点を目指すならそっちを受けたほうが絶対いいのだけど、目指している研究室を考えるとアルゴリズムとかオートマトンだとかの科目を取るのが自然だし、どうせ入ってから必要になる。でもそっち選択して大学院入れないのも嫌だし、、、とか思ってた。ちなみにアルゴリズムとかオートマトンとかは全く触れたことがない。

 

大学院へ行く本来の目的を考えれば、目指している研究室に関する科目を勉強するべきだと思う。それなのにどっちを選ぶべきかを迷っている自分を見てたらめちゃくちゃ恥ずかしくなってきた。迷うくらいならその研究への興味もその程度だ。どうしても行きたい研究室があって、それに必要な勉強があるなら迷わずただ勉強すればいい。幸い、大学院入試まであと半年くらいある。それだけの時間があるのなら、本気でやればだいたいどんな科目でもどうにかなる。

 

大学院に行けばもっと勉強しなくちゃならないこともあるだろうし、その時に迷っていたら話にならない。必要なことがあれば勉強する、という気持ちが重要。

忘れないようにこれからしばらくの読書のテーマを書いておく。

研究テーマが自然言語処理系なので、それ系の本をいくつか読んどこうかなと。自然言語処理人工知能の一分野なので、人工知能の中でも他分野のパターン認識なんかについても軽くは知っておきたい。人工知能の概要について知れば、その特徴がどのようなもので、将来人間とはどんな関係になるのかをある程度想像できるようになるんじゃないかな。まあ未来予測なんてのは外れるもんだけど。