基本情報技術者 2009年 秋期 午後 問03
データ送信とその符号化に関する次の記述を読んで、設問1~3に答えよ。
(1) 機器Aにはセンサが一つ接続されており、接続されたセンサから4バイト(1バイトは8ビット)の符号付整数で表される値(以下、測定値という)を1秒当たり100回取得する。
(2) 機器Aは、図に示す構造のパケットに測定値を格納し、ネットワークを経由して送信する。一つのパケットには、連続する複数の測定値を格納する。ネットワークはデータの送信に十分な帯域をもつ。
(3) パケットは、150バイトのヘッダと測定値の列で構成される。ただし、パケットの最大長は1,478バイトとする。
(4) 一つのパケットに格納する測定値の個数はヘッダに格納され、(3)の条件を満たす範囲で、任意に設定できる。
(5) 機器Aは、設定した個数分の測定値をセンサから取得後、遅滞なく送信する。
(6) 機器Aは、測定値の取得と送信を同時に行うのに十分な能力をもつ。

設問1:
問題文を見る 1パケットに格納する測定値の個数と単位時間当たりの送信量(ヘッダと測定値の総量)の関係の記述として正しい答えを、解答群の中から選べ。
解答群
ア:1パケットで送信する測定値の個数が多いほど、単位時間当たりの送信量は多くなる。
イ:1パケットで送信する測定値の個数が多いほど、単位時間当たりの送信量は少なくなる。
ウ:1パケットで送信する測定値の個数が変わっても、単位時間当たりの送信量は変わらない。
模範解答
イ
解説
解答の導き方
この問題では、1パケットに入れる測定値の個数を増やしたとき、1秒間に送るデータの合計量がどう変わるかを考えます。パケットは、ネットワークで送るデータをひとまとまりにしたものです。ヘッダは、測定値の個数などを記録する情報です。
測定値は1秒当たり100回取得され、1個が4バイトです。したがって、測定値そのもののデータ量は、1秒当たり
バイト
で一定です。
1パケットに測定値を個入れると、1パケットの長さは、ヘッダの150バイトと測定値のバイトを合わせて、バイトです。測定値を個取得するたびに1パケットを送るので、1秒間に送るパケット数は個です。
よって、1秒間に送るヘッダと測定値の合計量は、
です。これを分けて考えると、測定値の量は1秒当たり400バイトのまま変わりません。一方、ヘッダの量は、1秒間のパケット数が個なので、バイトです。つまり、1パケットに入れる測定値の個数を増やすほど、1秒間に送るヘッダの量は減ります。
そのため、合計の送信量も少なくなります。よって、正しいのは「1パケットで送信する測定値の個数が多いほど、単位時間当たりの送信量は少なくなる」というイです。
誤りやすいポイント
- 1パケットに測定値を多く入れると、1パケットの長さは増えます。しかし、1秒間に送るパケット数は減ります。1パケットの長さだけで判断しないようにしましょう。
- 測定値そのものの量は、1秒当たり100回取得する条件が変わらないため一定です。変わるのは、主にヘッダを1秒間に何回分送るかです。
- 最大長1,478バイトは、1パケットに入れられる測定値の個数に上限を設ける条件です。個数を増やしたときに送信量がどう変化するかという関係は、ヘッダの送信量が減ることから判断できます。
FAQ
Q: 1パケットに測定値を多く入れると、測定値のデータ量も増えませんか?
A: 1パケット当たりでは増えます。しかし、1秒間に取得する測定値の個数は100回で一定です。そのため、1秒間に送る測定値そのものの合計量は変わりません。
A: 1パケット当たりでは増えます。しかし、1秒間に取得する測定値の個数は100回で一定です。そのため、1秒間に送る測定値そのものの合計量は変わりません。
Q: 1パケットのサイズが増えるのに、なぜ1秒間の送信量は減るのですか?
A: 1パケットに多く入れるほど、1秒間に送るパケットの個数が減るためです。各パケットに付く150バイトのヘッダを送る回数が減り、ヘッダの合計量が小さくなります。
A: 1パケットに多く入れるほど、1秒間に送るパケットの個数が減るためです。各パケットに付く150バイトのヘッダを送る回数が減り、ヘッダの合計量が小さくなります。
Q: 最大長1,478バイトは、送信量の計算に使いますか?
A: 1パケットに入れられる測定値の個数の上限を決めるために使います。この問題で問われている送信量の増減は、測定値をまとめるほどヘッダの送信量が減ることから判断できます。
A: 1パケットに入れられる測定値の個数の上限を決めるために使います。この問題で問われている送信量の増減は、測定値をまとめるほどヘッダの送信量が減ることから判断できます。
関連キーワード: パケット、ヘッダ、データ量、送信頻度、帯域幅
設問2:
問題文を見る 次の記述中のに入れる正しい答えを、解答群の中から選べ。
一つのパケットには、最大a秒分の測定値を格納できる。
また、測定値の送信に必要なネットワーク帯域wは次の式で表せる。ただし、1パケットに格納する測定値の個数をnとする。
w = b × 8 × (150 + c)ビット/秒
aに関する解答群
ア:1.66
イ:3.32
ウ:6.64
エ:13.28
オ:26.56
b, cに関する解答群
ア:100
イ:150
ウ:1,200
エ:4n
オ:32n
カ:100n
キ:1/n
ク:100/n
ケ:n
コ:n/100
模範解答
a:イ、b:ク、c:エ
解説
解答の導き方
まず、1パケットに入る測定値の最大個数を求めます。
本文では、パケットは「150バイトのヘッダと測定値の列」で構成され、最大長は「1,478バイト」とされています。ヘッダの分を引くと、測定値を入れる部分は最大で次の大きさです。
測定値は1個当たり4バイトなので、格納できる個数は次のとおりです。
本文には、測定値を「1秒当たり100回取得する」とあります。したがって、332個の測定値を取得するのにかかる時間は、
です。よって、1パケットに格納できるのは最大3.32秒分で、aはイです。
次に、ネットワーク帯域を求めます。帯域は、1秒間に送るデータ量をビットで表したものです。
1秒間に取得する測定値は100個で、1パケットには個の測定値が入ります。そのため、1秒間に送るパケット数は、
です。したがって、bに入るのはクです。
1パケットの大きさは、ヘッダの150バイトと、測定値個分の大きさの合計です。測定値は1個当たり4バイトなので、測定値の列はバイトです。よって、cに入るのはエです。
1パケットのバイト数をビット数に直すには、本文にある「1バイトは8ビット」を使って8倍します。以上から、帯域は「1秒間のパケット数」×「1パケットのバイト数」×「1バイト当たりのビット数」となります。
誤りやすいポイント
- 測定値を格納できる大きさを求めるとき、ヘッダの150バイトを引き忘れないようにします。測定値の列に使えるのは、パケット全体の最大長からヘッダ分を除いた部分です。
- 測定値の個数は、1,328バイトを4バイトで割って求めます。測定値1個を4ビットと取り違えないようにします。
- パケット数は1秒当たり100個ではありません。1個のパケットに個の測定値をまとめるので、1秒当たりのパケット数は個です。
- 帯域をビット/秒で表すには、バイト数に8を掛けます。また、データ部分だけでなく、各パケットに含まれるヘッダの150バイトも数えます。
FAQ
Q: 測定値が符号付整数であることは、今回の計算に関係しますか?
A: 今回の計算では、測定値が4バイトで表されることを使います。正の値と負の値を扱える形式であっても、1個当たりの大きさは問題文で指定された4バイトです。
A: 今回の計算では、測定値が4バイトで表されることを使います。正の値と負の値を扱える形式であっても、1個当たりの大きさは問題文で指定された4バイトです。
Q: なぜパケットの大きさにヘッダを含めるのですか?
A: ヘッダもパケットの一部としてネットワークで送られるためです。測定値のデータだけでなく、ヘッダの分も送信に必要な量として数えます。
A: ヘッダもパケットの一部としてネットワークで送られるためです。測定値のデータだけでなく、ヘッダの分も送信に必要な量として数えます。
Q: 1秒当たりのパケット数が個になるのはなぜですか?
A: 1秒間に取得する測定値は100個です。1パケットに個ずつまとめるため、100個の測定値を送るのに必要なパケット数はです。
A: 1秒間に取得する測定値は100個です。1パケットに個ずつまとめるため、100個の測定値を送るのに必要なパケット数はです。
関連キーワード: パケット、ヘッダ、帯域幅、バイト、ビット
設問3:
問題文を見る 次の記述中のに入れる正しい答えを、解答群の中から選べ。
測定値の時刻による変動は小さいことが多く、例えば、全体の70%の測定値は一つ前の測定値との差が、−128〜127(〜)の範囲にあることが分かった。
そこで、測定値を次の方法で圧縮して送ることにする。
① パケットの先頭に格納する測定値は、これまでどおり格納する。
② 2番目以降に格納する測定値は、一つ前の測定値との差を、表の“圧縮符号のビット長”で示す長さ(差の値によって異なる)に符号化し、パケットにビット単位で詰めて格納する。例えば、2番目以降に格納する測定値のビット数は、一つ前の測定値との差が10ならば9ビットに、200ならば18ビットになる。
なお、圧縮後の測定値の列のビット長は、ヘッダに設定する。

一つ前の測定値との差の分布は、表の“出現確率”のとおりであるとすると、2番目以降の測定値の圧縮符号のビット長の期待値は、測定値一つ当たりdビットである。
解答群
ア:9.0
イ:12.23
ウ:15.575
エ:22.25
オ:32.0
模範解答
d:イ
解説
解答の導き方
求めるのは、2番目以降の測定値を圧縮したとき、測定値1個当たりに必要となるビット数の期待値です。期待値とは、それぞれの場合の値に、その場合が起きる確率を掛けて合計した値です。
表には、差の範囲ごとに「圧縮符号のビット長」と「出現確率」が示されています。圧縮符号のビット長には、差そのものを表すビットだけでなく、差の範囲を見分ける符号のビットも含まれています。例えば、差がの場合はビット、差がの場合はビットです。
それぞれのビット長に出現確率を掛けて、合計します。確率は百分率なので、計算では小数に直します。
これらを合計すると、
となります。したがって、2番目以降の測定値の圧縮符号のビット長の期待値は、測定値1個当たりビットです。
誤りやすいポイント
- 4種類のビット長を単純に足したり、単純な平均を取ったりしないようにします。それぞれの出現確率が異なるため、ビット長に確率を掛けてから合計します。
- 確率を掛けるとき、百分率を小数に直します。例えば、70%はです。
- 圧縮符号のビット長は、差を表すデータ部分だけではありません。差の範囲を示す符号のビットも含みます。そのため、表の9、18、27、35ビットを使って計算します。
- 先頭の測定値は「これまでどおり格納する」とあります。今回の期待値は、差分で圧縮する2番目以降の測定値について求めます。
FAQ
Q: 期待値は、実際に送るときのビット数と必ず一致しますか?
A: 必ず一致するわけではありません。期待値は、出現確率に基づいて長い期間の平均を見積もった値です。個々のパケットで必要なビット数は、実際に現れた差によって変わります。
A: 必ず一致するわけではありません。期待値は、出現確率に基づいて長い期間の平均を見積もった値です。個々のパケットで必要なビット数は、実際に現れた差によって変わります。
Q: なぜ出現確率の高い短い符号の影響が大きいのですか?
A: 起こる回数が多い場合ほど、全体の平均に強く影響するためです。この問題では、9ビットの符号が70%を占めるので、期待値を下げる方向に大きく働きます。
A: 起こる回数が多い場合ほど、全体の平均に強く影響するためです。この問題では、9ビットの符号が70%を占めるので、期待値を下げる方向に大きく働きます。
Q: 先頭の測定値も含めた平均を求める問題なら、どう計算しますか?
A: 先頭の測定値は4バイト、つまり32ビットで格納されます。その場合は、先頭の値と差分で格納する値を合わせ、対象となる測定値の個数に応じて平均を求めます。
A: 先頭の測定値は4バイト、つまり32ビットで格納されます。その場合は、先頭の値と差分で格納する値を合わせ、対象となる測定値の個数に応じて平均を求めます。
関連キーワード: 期待値、差分符号化、可変長符号、データ圧縮、ビット長



