平成21年度 春期 応用情報技術者試験 問1−20 解答編
このページは
応用情報
(応用情報技術者試験)
の
解答と解説
のページです。
問題
だけで勉強したい方は目次へ戻ってください
問1
通信回線を使用したデータ転送システムにM/M/1の待ち行列モデルを適応すると、平均回線待ち時間、平均伝送時間、回線利用率の関係は、次の式で表すことができる。
回線利用率が0%から徐々に上がっていく場合、平均回線待ち時間が平均伝送待ち時間よりも最初に長くなるのは、回線利用率が何%を超えたときか。
ア
40
イ
50
ウ
60
エ
70
解答
イ
解説
まずは、待ち行列モデルのイメージを以下に図示します。
それでは問題に戻ります。この式は、a=b×α (0≦α)という形をしています。このとき、αがどんな値ならa≧bになるかという風に変換することができます。
αが1ならばa=bとなるので、回線使用率/(1−回線使用率)=1となる値を計算します。
X/(1−X)=1
1−X=X
1=2X
X=0.5
よって、回線使用率が50%のときに等しくなるといえます。
問2
(1+α)
n
の計算を、1+n×αで近似計算ができる条件として、適切なものはどれか。
ア
|α|が1に比べて非常に小さい。
イ
|α|がnに比べて非常に小さい。
ウ
|α÷n|が1より大きい。
エ
|n×α|が1より大きい。
解答
ア
解説
まず、(1+α)
n
を展開すると、二項定理(あるいは単純に展開してもいいです)により
n
C
0
・1
0
・α
n
+
n
C
1
・1
1
・α
n-1
+
n
C
2
・1
2
・α
n-2
+
n
C
3
・1
3
・α
n-3
+
・
・
・
n
C
n-3
・1
3
・α
n-3
+
n
C
n-2
・1
2
・α
n-2
+
n
C
n-1
・1
1
・α
n-1
+
n
C
n
・1
0
・α
n
となります。
そして、これは{係数×a
i
の形}+n・α+1と分けることができます。
このとき、1+n×αに近似できるということは{係数×a
i
の形}が0に収束するすればいいということです。aの指数はaが1より小さければ0に収束する(例:0.3
3
=0.027)ので、選択肢アが正解となります。
問3
次に示す有限オートマトンが受理する入力列はどれか。ここで、S
1
は初期状態を、S
3
は受理状態を表している。
ア
1011
イ
1100
ウ
1101
エ
1110
解答
ウ
解説
実際に状態を遷移しながら解いていきます。
選択肢ア:S
1
−(1)→ S
2
−(0)→ S
2
−(1)→ S
1
−(1)→ S
2
選択肢イ:S
1
−(1)→ S
2
−(1)→ S
1
−(0)→ S
3
−(0)→ S
2
選択肢ウ:S
1
−(1)→ S
2
−(1)→ S
1
−(0)→ S
3
−(1)→ S
3
選択肢エ:S
1
−(1)→ S
2
−(1)→ S
1
−(1)→ S
2
−(0)→ S
2
問4
長さnの文字列C
1
C
2
…C
n
の中に、部分文字列は全部で幾つあるかを表す式はどれか。ここで、空文字列(長さ0の文字列)とC
1
C
2
…C
n
自身も部分文字列とみなす。例えば、長さ3の文字列C
1
C
2
C
3
の中に、部分文字列はC
1
,C
2
,C
3
,C
1
C
2
,C
2
C
3
,C
1
C
2
C
3
及び空文字列の7個がある。
ア
2
n
−1
イ
n(n+1)/2+1
ウ
n(n−1)+1
エ
n!+1
解答
イ
解説
実際に値を当てはめながら行います。C
1
C
2
…C
n
では分かりにくいので、a,b,cで行います。なお、空文字列はεとします。
2個の場合:ε,a,b,ab
3個の場合:ε,a,b,c,ab,bc,abc
4個の場合:ε,a,b,c,d,ab,bc,cd,abc,bcd,abcd
となり、n=2のとき4個、n=3のとき6個、n=4のとき11個となりこの条件に合うのは選択肢イだけです。
このとき 部分列1個はn−1個
部分列2個はn−2個
部分列3個はn−3個
・
・
・
となっています。
問題文中にもあるとおり、部分列であって、組合せではないので注意してください。
問5
次の数式は、ある細菌の第n世代の個数f(x)が1世代後にどのように変化するかを表現したものである。この漸化式の解釈として、1世代後の細菌の数が、第n世代と比較してどのようになるかを説明しているものはどれか。
f(n+1)+0.2×f(n)=2×f(n)
ア
1世代後の個数は、第n世代の個数の1.8倍に増える。
イ
1世代後の個数は、第n世代の個数の2.2倍に増える。
ウ
1世代後の個数は、第n世代の個数の2倍になり、更に増殖後の20%が増える。
エ
1世代後の個数は、第n世代の個数の2倍になるが、増殖後の20%が死ぬ。
解答
ア
解説
式をf(n+1)=2×f(n)−0.2×f(n)と整理すると次世代が1.8f(x)となることが分かります。
このような方程式を差分方程式といいます。
問6
自然数をキーとするデータを、ハッシュ表を用いて管理する。キーxのハッシュ関数h(x)を
h(x)=x mod n
とすると、キーaとbが衝突する条件はどれか。ここで、nはハッシュ表の大きさであり、x mod nはxをnで割った余りを表す。
ア
a+bがnの倍数
イ
a−bがnの倍数
ウ
nがa+bの倍数
エ
nがa−bの倍数
解答
イ
解説
まず、実際に値を入れて計算してみたハッシュの例を下に示します。
ハッシュのイメージがつかめたところで計算に移ります。
上の図からもわかるように、二つの値の差がnの倍数であれば衝突が起こることがわかります。
なお、整数論においては、『mod n』のことを『nを法とする』などといいます。
問7
文字列を引数とする関数len,first,butfirstを用いて、関数compを再帰的に定義した。comp("11","101")を呼び出したとき、返されるものはどれか。
ア
−1
イ
0
ウ
1
エ
エラー
解答
ア
解説
まず、プログラムの解説をします。
最初の3行で、一方(あるいは両方)の文字列が空になったときの大小関係を見ています。
両方0なら0を返す。Bの方が長いなら1を返す。Aの方が長いならBを返す。
次の2行で、先頭の文字を比較しています。
Bの方が大きいなら1を返す。Aの方が大きいならー1を返す
最後の1行は、この段階では大小が決まらなかったので、先頭の1文字を除いた残りの部分でもう一度チェックする
これを踏まえて、プログラムを追っていきます。
まず、最初の(“11”と“101”)は長さが両方とも1以上で先頭が両方とも1で同じなのでreturn文に行きます。
つぎに、(“1”と“01”)は長さが両方とも1以上で、1>0なので、−1が戻ります。
compという関数名から何らかの比較をすることが推測できますが、一般的で単純な2進数の大小関係の比較ではないことに注意しましょう。(3と5なら1が戻るはずです。)
問8
相異なるn個のデータが昇順に整列された表がある。この表をm個のデータごとのブロックに分割し、各ブロックの最後尾のデータだけを線形探索することによって、目的のデータの存在するブロックを探し出す。次に、当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで、mは十分おおきく、nはmの倍数とし、目的のデータは必ず表の中に存在するものとする。
ア
m+n/m
イ
m/2+n/2m
ウ
n/m
エ
n/2m
解答
イ
解説
内容を整理すると、以下のようになります。
全体でn個のデータがある。
データはm個ごとにブロック化されている。
各ブロックのデー多数はn/mである。
データは、まずmこごとに大まかに探し、その後見つかったデータのあるブロックを1個ずつ調べる。
このことにより、まずm個を調べますが、平均なのでmの半分(m/2)で見つかると予想できます。
次に、このブロックを調べますが、平均なのでn/mの半分(n/2m)で見つかると予想できます。
よって、m/2+n/2mとなります。
問9
複数のデータに対して、1個の命令で同一の操作を同時並列に行う方式で、マルチメディアデータなどを扱うCPUに採用されているものはどれか。
ア
MIMD
イ
MISD
ウ
SIMD
エ
SISD
解答
ウ
解説
これは、フリンの分類と呼ばれる命令とデータの並列性を基にした分類法です
SISD:(単一命令、単一データ)命令にもデータにも並列性のない逐次的なコンピュータ
SIMD:(単一命令、複数データ)ベクトル演算機やGPU等
MISD:(複数命令、単一データ)命令列が複数あり、それを1 つのデータストリームに適用する形態のコンピュータ。あまり一般的ではない
MIMD:(複数命令、複数データ)複数のプロセッサが同時並行的にそれぞれ異なるデータを異なる命令で処理するコンピュータ
問10
外部割込みの要因となるものはどれか。
ア
仮想記憶管理における存在しないページにアクセスしたときのページフォールト
イ
システム管理命令を一般ユーザモードで実行したときの特権命令違反
ウ
ハードウェア異常などによるマシンチェック
エ
浮動小数点演算命令でのオーバフローなどの演算例外
解答
ウ
解説
割込みには、大きく分けて、内部割込みと外部割込みがあり、ア、イ、エのようなシステムの割り込みは内部割込みといいます。逆に、入出力動作の終了や電圧異常などは外部割込みに該当します。
問11
メモリインタリーブの説明はどれか。
ア
CPUと磁気ディスク装置との間に半導体メモリによるデータバッファを設けて、磁気ディスクアクセスの高速化を図る。
イ
主記憶のデータの一部をキャッシュメモリにコピーすることによって、CPUと主記憶とのアクセス速度のギャップを埋め、メモリアクセスの高速化を図る。
ウ
主記憶へのアクセスを高速化するため、アクセス要求、データの読み書き及び後処理が終わってから、次のメモリアクセスの処理に移る。
エ
主記憶を複数の独立したグループに分けて、各グループに交互にアクセスすることによって、主記憶へのアクセスの高速化を図る。
解答
エ
解説
メモリインタリーブとは、複数のバンクと呼ばれる単位に分けておくことで、高速にアクセスできます。アクセス幅が1の場合は3語分、アクセス幅が2の場合は6語分に同時にアクセスできます。
問12
メモリの誤り制御の方式で、2ビットの誤り検出機能と、1ビットの誤り訂正機能をもたせるのに用いられるものはどれか。
ア
奇数パリティ
イ
水平パリティ
ウ
チェックサム
エ
ハミング符号
解答
エ
解説
代表的な誤り制御方式を下にまとめます。
奇数パリティ:1(あるいは0)の個数が奇数個になるように、1ビットを付加するもの
奇数パリティ:1(あるいは0)の個数が偶数個になるように、1ビットを付加するもの
水平パリティ:転送を2次元の配列とみなしたときに、水平方向へのパリティを付加するもの。垂直パリティと合わせて利用されることが多い。
チェックサム:送信データを数値に対応させ、その合計を計算し付加するもの。
ハミング符号:2ビットの誤り検出と、1ビットの誤り訂正機能を持つ
巡回冗長検査(CRC):送信列から生成多項式とよばれる式をつくり、受信側で計算式の余りが0かどうかを調べる。
問13
CPUと主記憶の間に置かれるキャッシュメモリにおいて、主記憶のあるブロックを、キャッシュメモリの複数の特定のブロックに対応付ける方式はどれか。
ア
セットアソシアティブ方式
イ
ダイレクトマッピング方式
ウ
フルアソシアティブ方式
エ
ライトスルー方式
解答
ア
解説
キャッシュメモリはデータをライン(あるいはブロック)と呼ぶある程度まとまった単位で管理します。
例えば4ビットを1つのラインとしてまとめて管理する場合は、その上位ビットを保存しておきます。この上位のアドレスをフレームアドレス、下位のアドレスをエントリアドレスといいます。これによりフレームアドレスをまず検索し、その後エントリアドレスを検索することで、高速化できます。
(例:10100000〜10101111は、1010を上位ビットとして保存しておきます。)
このフレームアドレスバッファが複数ある場合は、複数のデータを格納できます。このときのバッファの個数をセット数(ウェイ)と呼びます。このような構造により、局所的に連続したデータにアクセスする場合に高速に処理できます。
これを踏まえて、選択肢の方式を下にまとめます。
ダイレクトマッピング方式:メモリ空間と1対1で割り当てる方式。すべてのメモリ領域を1対1でカバーするのでヒット率が低い
フルアソシアティブ方式:任意のメモリ空間と対応付ける方法。使用率が高いところを自由に持ってこれるので、ヒット率が高い反面オーバヘッドが大きい。
セットアソシアティブ方式:上の二つの間のような方法。ある程度区切った空間を自由に対応付けることができる。通常セット数nに対して、nウェイセットアソシアティブという
なお、ライトスルー方式は、対応付けではなく、更新の手法でキャッシュメモリと主記憶の両方の書き込む方法です。(L1でよく使われます)一方ライトバック方式はデータがキャッシュメモリから追い出されるときに主記憶に書き込みます。(L2でよく使われます)
問14
クライアントサーバシステムのクライアントにおいて、遠隔サーバ内の手続をクライアントにある手続と同様の方法で呼び出すことを可能とした機能はどれか。
ア
ACID
イ
NFS
ウ
RPC
エ
TCP/IP
解答
ウ
解説
各選択肢を下にまとめます。今回はまったく違う分野の用語です。
ACID:(データベースなどの)トランザクションが備えるべき性質のことで、原子性、一貫性、独立性、永続性のこと
NFS:ネットワークファイルサービス。遠隔地のファイルサーバを利用しファイルサービスを提供する機能のこと。LDAPやPamなどと合わせて使われることが多いです。
RPC:(Remote Procedure Call)プロシージャとは手続・関数のことで、その名のとおり、遠隔地にある手続を呼び出すことができる機能を指します。
TCP/IP:インターネット上で標準的に使われているプロトコル
問15
物理的に複数のサーバを用意したときと比較した場合、仮想化によって1台のサーバに統合したときの特徴はどれか。ここで、物理的な資源とは、CPU,主記憶、磁気ディスクなどのコンピュータを構成する装置を指す。
解答
ア
解説
サーバを作る場合に、Webサーバ、メールサーバ、LDAPサーバ、SSHサーバ、など役割ごとに別のマシンにし、DMZなどに導入するのが一般的ですが、これらを1つの統合サーバとして管理することもできます。これにより、管理が簡単になる反面、アクセスが集中するので、利用率が高くなりオーバヘッドも増えます。さらに、障害によりすべての機能が使えなくなるというリスクも増大します。
問16
3台の装置X〜Zを接続したシステムA、Bの稼働率について、適切なものはどれか。ここで、3台の装置の稼働率は、いずれも0より大きく1より小さいものとする。
ア
各装置の稼働率の値によって、AとBの稼働率のどちらかが高いかは変化する。
イ
常にAとBの稼働率は等しい
ウ
常にAの稼働率が高い
エ
常にBの稼働率が高い。
解答
エ
解説
X、Y、Zの稼働率をx、y、zとしてAとBの稼働率を計算します。
A:並列部×z={1−{(1−x)×(1−y)}}×z={1−(1−x−y+xy)}×z={1−1+x+y−xy}×z=xz+yz−xyz
B:xyとzの並列=1−(1−xz)×(1−y)}=1−(1−y−xz+xyz)=y+xz−xyz
B−A=(y+xz−xyz)−(xz+yz−xyz)=y+xz−xyz−xz−yz+xyz=y−yz=y(1−z)
x、y、z>0なので、
y(1−z)=正×正>0となります。
つまり、B−A>0なので、B>Aが導けます。
問17
CPUと磁気ディスク装置で構成されるシステムで、表に示すジョブA、Bを実行する。この二つのジョブが実行を終了するまでのCPUの使用率と磁気ディスク装置の使用率との組合せのうち、適切なものはどれか。ここで、ジョブA、Bはシステムの動作開始時点ではいずれも実行可能状態にあり、A、Bの順で実行される。CPU及び磁気ディスク装置は、ともに一つの要求だけを発生順に処理する。ジョブA、Bとも、CPUの処理を終了した後、磁気ディスク装置の処理を実行する。
解答
イ
解説
処理を図示すると以下のようになります。
なので、全体で25かかり、CPUは3+12で15、15/25=0.6、HDは7+10で17で、17/25=0.68となります。
問18
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち、適切なものはどれか。
ア
サブルーチンからの戻り番地の退避にはスタック領域が、割当てと解放の順序に関係のないデータにはヒープ領域が使用される。
イ
スタック領域には未使用領域が存在するが、ヒープ領域には未使用領域は存在しない。
ウ
ヒープ領域はスタック領域の予備領域であり、スタック領域がいっぱいになった場合にヒープ領域が動的に使用される。
エ
ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって、データの格納と取出しを行う。
解答
ア
解説
スタック領域とヒープ領域の使用の違いを下にまとめます。
スタック領域:自動変数、関数の引数や戻り値
ヒープ領域:プログラム中に動的に確保された
一般的に一時データを使う場所なので、スタック領域の方がヒープ領域よりも高速にアクセスできます。
ヒープ領域はプログラマが自由に確保できる反面、解放を忘れると、使用できない領域となります(メモリリーク)
C言語では、プログラムなどを置く(テキスト領域)、静的変数や外部変数を置く(静的領域)、スタック領域、ヒープ領域の4つから構成されており、スタック領域とヒープ領域は互いに伸び縮みして柔軟に対応しています。
問19
主記憶への1回のアクセスが200ナノ秒で、ページフォールトが発生すると1回当たり100ミリ秒のオーバヘッドを伴うコンピュータがある。ページフォールトが主記憶アクセスの50万回中に1回発生する場合、ページフォールトは1秒当たり最大何回発生するか。ここで、ページフォールトのオーバヘッド以外の要因は考慮しないものとする。
ア
3
イ
4
ウ
5
エ
6
解答
ウ
解説
まず、50万回を1単位としてのアクセス時間を計算します。
50万×200ナノ+100ミリ=500,000×0.00000002+0.1=0.1+0.1=0.2秒
よって、50万回=0.2秒なので、1秒間に250万回のアクセスが行われます。よって、5回のページフォールトが発生すると予想されます。
問20
データ構造のキューを実現する方法において、片方向リンクに比べた場合の双方向リンクの特徴として、適切なものはどれか。
ア
片方向リンクよりオーバヘッドが小さい。
イ
追加は、最後尾だけに対して行える。
ウ
途中への挿入・取出しが容易に行える。
エ
取出しは、先頭だけに対して行える。
解答
ウ
解説
まず、片方向リストと双方向リストの例を下に示します。
追加や削除はどちらも任意の場所で行えます。オーバヘッドは、前へのリンクが増えた分修正に時間が掛かります。途中への挿入・取り出しはポインタを数ヶ所変えるだけで行えます。