作成日 2013/10/5
最終更新日 2013/11/24

公式を導き出す

 このページでは情報処理技術者試験対策の計算問題の対策として、公式の導出方法を解説します。


1.単位に着目する
2.簡単な例で考えてみる
3.図やグラフを描く


1.単位に着目する

 単位に着目すると、公式をある程度導き出せる場合があります。
 まずは、例を示します。

■問題:データをv[Byte/sec]の速度で転送しているとする。S[Byte]転送するのにかかる時間[sec]はどれくらいか?

■正答:S/v
■解説:
 「S[Byte]転送するのにかかる時間[sec]」ですから、単位は[sec]となります。
 なので、v[Byte/sec]の「[Byte/sec]」とS[Byte]の「[Byte]」を使って、「[sec]」を作れないか考えます。
 まず、[sec]が分子に来ないといけないから、
  1/v
 となります。単位も一緒に書くと、1/v[sec/Byte]です。
 すると単位の[/Byte]部分が邪魔であることが分かります。
 なので、S[Byte]をかけて、単位の[/Byte]部分を消すわけです。
 すると、
  1/v*S = S/v
 となります。

 今回は、文字式が2つ(すなわちvとS)しかないので、こんな方法を取らなくても何とかなります。いまいちメリットが分かりません。
 ということで、メリットをあげると以下となります。
  1. 単位を意識せずに考えるよりも、単位も一緒に考えた方が間違いが少なくなります。
  2. 機械的に公式を導き出せるのは大きなメリットです。試験中はあせったりして考えられなくなることがあります。このようなときに、役に立ちます。
  3. 多少、複雑な式でも対応できます。
    だるまは、小学生のころ、「はじき」と言う方法で考えることを教わったことがあります。
    「はじき」方法は良いのですが、情報処理技術者試験で出てくる式はもっと複雑であり、「はじき」方法では通用しないことが多いです。

 単位に着目する際、以下を意識してください。
  1. 足し算、引き算、比較(>,<,=)する場合は、単位があっていなければなりません。
  2. 掛け算・割り算(※厳密には積分・微分です)を行うと、単位もそれにあわせて変わります。
  3. サンプリング周波数の単位で使われる[Hz](ヘルツ)は[回/sec]と考えてください(1秒間に何回か)。
  4. 確率は単位なしです。
 3の「確率は単位なしです。」は、この方法では対策が取れないことを意味しています。注意してください。

 この方法のデメリットは以下のとなります。
  1. 単位を間違えると、間違った公式が導出されてしまいます。
    例えば、「1[sec]あたり転送できるデータ量[Byte]を求めよ」とある場合、最終結果の単位は[Byte/sec]なのですが、[Byte]と混同しやすいです。
    他にも、1[mol]で何個の分子があるかとかと言う場合(※molは化学でよく使う単位。情報処理技術者試験では出てこない)、 正確な単位は[個/mol]なのだが、[/mol]と混同しやすいです。
  2. 単位が無いもの(※厳密には無次元数といわれるもので、比率や確立、角度など)が出てくると、対処できないです。
  3. 常に正しい公式が得られる保証は無いです。掛け算・割り算ではなく、積分・微分にすれば、正しい公式が得られる可能性が上がりますが、それでももちろん、正しい公式が得られる保証はありません。
    簡単な例だと、三角形の面積の公式がそうです。底辺と高さが与えられたとき、その三角形の面積は、
     底辺 * 高さ / 2
    ですが、この方法では、「底辺 * 高さ」という式しか出てきません。しかも、他の長さが与えられた場合、どれを使えば良いかすらも分かりません。

 最後にですが、これは、次元解析とほぼ同じようなことを行っています。興味がある方は覗いてみてください。  
このページのトップへ

2.簡単な例で考えてみる

 簡単な例で考えてみると、公式を導き出せることがあります。
 まずは、例を示します。

■問題:あるPCから別のPCへバイナリ形式でデータを送る。送るデータの種類には以下がある。
  bool型のデータ。データ量は1[Byte]。
  int型のデータ。データ量は4[Byte]。
  long型のデータ。データ量は8[Byte]。
  double型のデータ。データ量は8[Byte]。
 データを送る際の順番は決まっており、データ以外の余分なデータ(例えばデータ名など)は送らないとする。
 bool型データが40%、int型のデータが50%、long型のデータが5%、double型のデータが5%ある場合、1つのデータあたり、何[Byte]のデータ量になるか?

■正答:3.2[Byte]
■解説:
 これを導き出すための式は、
  bool型のバイト数 * bool型データの出現確率
   + int型のバイト数 * int型データの出現確率
   + long型のバイト数 * long型データの出現確率
   + double型のバイト数 * double型データの出現確率
 となります。
 
 今回は、上記の式を出す方法を考えます。
 上記の式は、期待値の算出式そのままですが、それに当てはめて考えるのではなく、それをどうやって出すのかを考えます。
 これを読んでいる人は、「いやいや、それくらい暗記するだろう」と思っているかもしれない。
 申し訳ないのですが、これは、例であることを忘れないで欲しいです。
 そして、暗記した公式は、試験時に少しでも忘れていたら、正答にたどり着けなくなります。
 じゃあ、どうするか?
 簡単な例を考えて、導き出しましょう。

 今回の場合、int型のデータが50%、long型のデータが50%だったらどうなるかを考えます。
 答えは、4[Byte]と8[Byte]の中間である6[Byte]です。
 じゃあ、「6[Byte]」をどうやって出しのか?と考える

  (4 + 8) / 2
 これでも、答えは6[Byte]になるが、「50%」という数字を使っていないですね。
 すると、
  4 * 0.5 + 8 * 0.5
 しか、ないでしょう(※ここで0.5は50%を表している)。
 すなわち、
  int型のバイト数 * int型データの出現確率
   + long型のバイト数 * long型データの出現確率
 です。
 ここから、intとlongの場合だけでなく、boolとdoubleがある場合を推測して、
  bool型のバイト数 * bool型データの出現確率
   + int型のバイト数 * int型データの出現確率
   + long型のバイト数 * long型データの出現確率
   + double型のバイト数 * double型データの出現確率
 と考えられないでしょうか?これでもダメなら、全ての出現確率が等しい(すなわち25%)の場合で行ってみれば良いでしょう。

この方法のメリットは以下の通りです。
  1. 1.単位に着目するではうまく出来ない場合でも出来る場合があります。
  2. 覚えていた公式が正しいか確認することが出来ます。

この方法のデメリットは以下の通りです。
  1. 正しい公式が得られない場合がある。
最後にですが、この方法は、帰納法ということになります。何が言いたいかと言うと、名前が付いているくらいなので良くある手段だという事です。

このページのトップへ

3.図やグラフを描く

 学校(小学校〜高校、大学でも)では図やグラフを描けと、言いますよね。設計書を作成するときも図は大事です。
 この方法は、かなり強力です。
 これは多くの設計図、具体的にはER図、フローチャート、クラス図、シーケンス図など、IT業界以外でも図面(建築、機械設計など)が図であることからも、分かります。
 また、文章だけの説明と、図(というか漫画)での説明では、後者の方が(特に全体的な)理解が速いそうです。

 ・・・しかし。
 これが出来る人と言うのは、多くの場合、数学が得意で、このページを読む必要って無いんだよね。
 それでも、これによるメリット・デメリットを以下にあげます。参考にして下さい。

メリット:
  1. 解き方が全く分からない場合でも、とりあえず、図を描いてみると、分かる場合があります(例:応用情報H24秋 問2)。 もちろん、絶対ではありませんが。
    ※だるまが数学の問題を解くときは、結構、試行錯誤するのですが、分からないときは、まず、図を描きます。繰り返しになりますが、 この「図を描く」と言うのは、とにかく強力で、文章では見えなかったものが見えることが良くあります。 また、情報を整理する場合にも使います。とにかく、分からなかったら図を描く、ですよ。

  2. 式・公式も図から導き出せる場合があります。これにより、暗記の量を減らすことが出来ます。
デメリット:
  1. 状態が変わるような場合、何回も同じような図を描くことになります(時間がかかる)。 もっとも、これしか方法が無い場合もありますが。

  2. ある程度、図は大きく、なおかつ、それなりに正確に書く必要があります。情報処理技術者試験の問題用紙の余白はそんなにある方では無いのですが。 しかし、それにしても、「それなりに」って、あいまいですね。でも、不正確な図だと、間違った方向に進んでしまう場合がありますので、これは注意してください。

  3. 作図ができない問題に非常に弱いです。 情報処理技術者試験の場合、数値計算するだけの問題、プログラム系の問題で、かつ、データ中心ではない場合は作図が難しいです。
Prev Up Next  Top
このページのトップへ


このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。