平成18年度 秋期 ソフトウェア開発技術者試験 問1−20 解答編




このページは

ソフ開

(ソフトウェア開発技術者試験)

解答と解説のページです。

問題だけで勉強したい方は目次へ戻ってください



問1 aを正の整数とし、b=a2とする。aを2進数で表現するとnビットであるとき、bを2進数で表現すると高々何ビットになるか。
n+1
2n
2
n
解答
解説 まず、2桁と3桁で計算してみます。

  11
 ×11
 −−ー
  11
 11 
−−−−
1001

   111
  ×111
  −−−−
   111
  111 
 111
 −−−−−
110001


2進数におけるn桁の最大値は、すべてが1の状態なので、2n−1となります。
つまり、積の最大は(2n−1)2なので、22n−2・2n+1となり<22nなので、高々2n桁になることがわかります。

問2 袋の中に重心の偏った二つのサイコロA、Bが入っている。Aは1の目が3/10の確率で、Bは1の目が3/5の確率で出る。

袋の中からサイコロを一つ取り出し、振ってみたら1の目が出たという条件の下で、取り出したサイコロがAである条件付き確率は幾らか。

3/10
1/3
1/2
2/3
解答
解説 Aのサイコロで1が出る確率は3/10。Bのサイコロで1がでる確率は3/5=6/10。現在1が出たので、A:B=3/10:6/10の確率つまり、1/3でA、2/3でBであるといえます。

問3 回帰直線に関する記述のうち、適切なものはどれか。
回帰直線のグラフが原点を通ることはない。
相関係数の値が大きいほど、回帰直線の傾きは大きくなる。
相関係数の値が異なっていても、同一の回帰直線が求められることがある。
相関係数の値が負のときは、回帰直線が求められない。
解答
解説 回帰直線とは、散布図において、分布するデータとの誤差が最小になるように求める直線で、最小二乗法などによって、求められます。以下に回帰直線の例を示します。

回帰直線を表示できません

また、回帰直線の傾きを相関係数といい、1に近ければ正の相関。−1に近ければ負の相関といいます。以下に散布図の3つの相関を示します。

散布図を表示できません

選択肢ア:原点を通る場合もあります。
選択肢イ:傾きと相関の強弱は関係ありません。
選択肢エ:右下がりの直線が得られます。

問4 平均が60、標準偏差が10の正規分布を表すグラフはどれか。
画像(問4ans)を表示できません
解答
解説 まず、正規分布(あるいはガウス分布)とは、山型で左右対称となるような分布をいいます。選択肢ウ、エは正規分布ではありません。平均とは山の頂点が来る値のことで、標準偏差とは、平均から左右へのばらつきの範囲のことをいいます。

問5 論理式P、Qがいずれも真であるとき、論理式Rの真偽にかかわらず真になる式はどれか。ここで、“ ”は否定、“∨”は論理和、“∧”は論理積、“→”は含意(“真”→“偽”となるときに限り偽となる演算)を表す。
画像(問5ans)を表示できません
解答
解説 まず、P=真、Q=真を代入して、各選択肢を簡略化します。

選択肢ア:((真→真)∧(真→真))→(R→偽)=真→(R→偽)
選択肢イ:((真→真)∧(真→偽))→(真→R)=(真∧)→(真→R)=真→(真→R)
選択肢ウ:((真→偽)∨(真→真))→(R→偽)=真→(R→偽)
選択肢エ:((真→偽)∨(真→偽))→(真→R)=偽→(真→R)

偽→○の場合は、どんな状態でも真になるので、選択肢エはRの値に係らず(真→Rの値に係らず)真になるといえます。

問6 信頼性設計技術の中で、誤りを検出した上である程度の訂正まで行いたいと場合に使用する符号として、適切なものはどれか。
巡回冗長符号(CRC)
垂直パリティ符号
水平パリティ符号
ハミング符号
解答
解説 代表的な誤り制御方式を下にまとめます。

奇数パリティ:1(あるいは0)の個数が奇数個になるように、1ビットを付加するもの。
奇数パリティ:1(あるいは0)の個数が偶数個になるように、1ビットを付加するもの。
水平パリティ:転送を2次元の配列とみなしたときに、水平方向へのパリティを付加するもの。垂直パリティと合わせて利用されることが多い。
チェックサム:送信データを数値に対応させ、その合計を計算し付加するもの。
ハミング符号:複数の冗長ビットを付加し2ビットの誤り検出と、1ビットの誤り訂正機能を持つ。
巡回冗長検査(CRC):送信列から生成多項式とよばれる式をつくり、受信側で計算式の余りが0かどうかを調べる。バースト誤り(連続した・固まったあやまり)に強い。

問7 次の表は、入力記号の集合{0、1}、状態集合が{a、b、c、d}である有限オートマトンの状態線意表である。長さ3以上の任意のビット列を左(上位ビット)から順に読み込んで最後が110で終わっているものを受理するには、どの状態を受理状態とすればよいか。

画像(問7)を表示できません
解答
解説 最後が110で終わっているものを受理するということは、110の前に何らかのデータがあり、いずれかの状態になっているが、110を入力することでかならず同じ状態に収束するという意味です。つまり、すべての状態で110を入力してどれに収束するかを考えます。

a:a→b→d→c
b:b→d→d→c
c:c→b→d→c
d:d→d→d→c

つまり、どんな状態からでも最後に110が付けば、状態cになることから、cを受理状態をすればよいことが分かります。

問8 逆ポーランド表記法で表された式を評価する場合、途中の結果を格納するためのスタックを用意し、式の項や演算子を左から右に順に入力し処理する。スタックが図の状態のとき、入力が演算子となった。このときに行われる演算はどれか。ここで、演算は中置表記で記述するものとする。

画像(問8)を表示できません
A 演算子 B
B 演算子 A
C 演算子 D
D 演算子 C
解答
解説 スタックは、後入先出法によるデータ構造です。また、逆ポーランド記法とは、スタックを使うことで表現でき、括弧を使わないで計算の順序を指定できるため、コンパイラなどで用いられています。たとえば、((E−F)÷G)+((C−D)÷(A+B))は、EF−G÷CD−AB+÷+のように表記されます。

問題のスタックは、C、Dの順に入力が行われ、演算子が来ているので、『C D 演算子』という状態なので、これを中置記法にすると『C 演算子 D』となります。

問9 配列内に構成されたヒープとして適切なものはどれか。
画像(問9ans)を表示できません
解答
解説 ヒープとは、木構造において『親の値』≦『子の値』(あるいは逆)になっているものを言います。また、配列との対応は幅優先順位で格納するので、親をiとすると、左の子は2i、右の子は2i+1となります。まず、このデータ構造を以下に図示します。

ヒープと配列を表示できません

そして、各選択肢の配列を木構造に再構築したものを以下に示します。

画像(問9kai)を表示できません

選択肢アは、親5に対して、子4なので誤りです。
選択肢ウは、親8に対して、子6なので誤りです。
選択肢エは、親6に対して、子5なので誤りです。

問10 データ列が整列の過程で図のように上から下に推移する整列方法はどれか。ここで、図中のデータ列中の縦の区切り線は、その左右でデータ列が分割されていることを示す。

画像(問10)を表示できません
クイックソート
シェルソート
ヒープソート
マージソート
解答
解説 代表尾的なソート法を以下にまとめます。

挿入ソート:既に整列済みのデータ列の正しい位置に、データを追加する操作を繰り返していく
選択ソート:データ中の最小値を求め、次にそれを除いた部分の中から最小値を求める。この操作を繰り返していく
バブルソート:隣り合ったデータの比較と入替えを繰り返すことによって、小さな値のデータを次第に端の方に移していく
クイックソート:適当な基準値を選び、それより小さな値のグループと大きな値のグループにグループを分割する。この操作を繰り返していく
マージソート:まず対象を小さな領域に分割し、ソート・結合を繰返しながら、徐々に整列部分を拡大していく。
シェルソート:ある一定間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が1になるまでこれを繰り返す
ヒープソート:未整列の部分を順序木に構成し、そこから最大値又は最小値を取り除いて既整列の部分に移す。これらの操作を繰り返して、未整列部分を縮めていく

問11 相異なるn個のデータが昇順に整列された表がある。この表をm個ごとのブロックに分割し、各ブロックの最後尾のデータだけを線形検索することによって、目的のデータが存在するブロックを探し出す。次に、当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を求める式はどれか。ここで、mは十分大きく、nはmの倍数とし、目的のデータは必ず表中に存在するものとする。
n/m
n/2m
m+n/m
m/2+n/2m
解答
解説 まず、内容を整理すると以下のようになります。
・全体でn個のデータがある。
・データはm個ごとにブロック化されている。
・各ブロックのデータ数はn/mである。

検索はデータは、まずm個ごとに大まかに探し、その後見つかったデータのあるブロックを1個ずつ調べる。

このことにより、まずm個を調べますが、平均なのでmの半分(m/2)で見つかると予想できます。
次に、このブロックを調べますが、平均なのでn/mの半分(n/2m)で見つかると予想できます。

よって、m/2+n/2mとなります。

問12 fact(n)は、非負の整数nに対してnの階乗を返す。fact(n)の再帰的な定義はどれか。
if n=0 then return 0 else return n*fact(n−1)
if n=0 then return 0 else return n*fact(n+1)
if n=0 then return 1 else return n*fact(n−1)
if n=0 then return 1 else return n*fact(n+1)
解答
解説 5の階乗を例に考えます。5の階乗は、5×4の階乗。4の階乗は4×3の階乗のように考えます。(nの階乗をn!と表記します。)

5!=5×4!
4!=4×3!
3!=3×2!
2!=2×1!
1!=1×0!
0!=1

つまり、1ステップは、n×(n−1)!となります。そして、0!は1となります。(0!=0ではどんな階乗でも0になってしまいます。)
これを、プログラムの式になおすと、選択肢ウのようになります。

問13 次に示すユークリッドの互除法(方法1、方法2)で正の整数a,bの最大公約数はそれぞれmとnのどちらの変数に求まるか。ここで、m mod nは、mをnで割った余りを表す。

画像(問13)を表示できません
画像(問13ans)を表示できません
解答
解説 実際に24と16を用いて計算をしていきます。

[方法1]
a=14,b=8
m=14,n=8
r=14 mod 8=6
r=0でないので、ループに入る
m=8
n=6
8 mod 6=2
r=0でないので、ループに入る
m=6
n=2
r=6 mod 2=0
r=0なので、ループにから出る

最大公約数2はnに求まる


[方法2] a=14,b=8
m=14,n=8
r=14 mod 8=6
m=8
n=6
r=0でないので、ループを続ける
r=8 mod 6=2
m=6
n=2
r=0でないので、ループを続ける
6 mod 2 =0
m=2
n=0
r=0なので、ループを出る。

最大公約数2はmに求まる

よって、方法1ではn、方法2ではmに求まります。

問14 次の流れ図による処理を複数回実行した場合、途中に出現し得る実行順序はどれか。ここで、二重線は、並列処理の同期を表す。

画像(問14)を表示できません
B → A → B → A
B → X → A → Y
X → B → A → Y
Y → X → B → A
解答
解説 一つずつ検証していきます。(便宜上A,側Bを左側、X、Y側を右側といいます。)

選択肢ア:初期条件として左側がBの直前・右側が同期線の直前とすると、B→同期→A→BでAを処理できません。
選択肢イ:初期条件として左側がBの直前・右側が同期線の直前とすると、B→同期→X→A→Yで処理ができます。
選択肢ウ:初期条件として左側がBの直前・右側がYの直前とすると、Y→B→同期→AでYが処理できません。
選択肢エ:初期条件として左側が同期線の直前・右側がYの直前とすると、Y→Xで処理ができません。

問15 ゲーム理論を使って検討するのに適している業務はどれか。
イベント会場の入場ゲート数の決定
売れ筋商品の要因の分析
競争者がいる地域での販売戦略の策定
新規開発商品の需要見通しと利益計画の策定
解答
解説 ゲーム理論とは、数学の分野で定式化された個人や集団が相互に影響を与えていくなかで、目的にどうやってたどり着くかの振る舞いを研究する分野です。

選択肢ア:待ち行列モデルを使うのが適しています。
選択肢イ:特性要因図を使うのが適しています。
選択肢エ:需要の予測は様々な要因があるため、さまざまな手法があります。

問16 図の論理回路において、S=1、R=1、X=0、Y=1のとき、Sをいったん0にした後、再び1に戻した。この操作を行った後のX、Yの値はどれか。

画像(問16q)を表示できません


画像(問16)を表示できません
X=0、Y=0
X=0、Y=1
X=1、Y=0
X=1、Y=1
解答
解説 このように、出力を入力にフィードバックし、一時的に値を保持する論理回路をフリップフロップといい、様々な種類があります。順番に追いかけていきます。

初期条件(フィードバック部分を赤で補完します)

画像(問23_1)を表示できません

Sを1から0にします。

画像(問23_2)を表示できません

Sを0から1に戻します。

画像(問23_3)を表示できません

このようなフィリップフロップをRS型(リセット・セット型)といいます。S=R=0の場合は前の状態を保持するというのが特徴です。

問17 パイプラインの性能を向上させるための技術の一つで、分岐条件の結果が決定する前に、分岐先を予測して命令を実行させるものはどれか。
アウトオブオーダ実行
遅延分岐
投機実行
レジスタリネーミング
解答
解説 それぞれのアーキテクチャの用語を以下にまとめます。

アウトオブオーダ実行:実行可能になったものから実行することによって、後から投入されたものでも先に実行できる。
遅延分岐:命令の直後の命令を先に実行し、後から分岐命令を行うこと。
投機実行:ループなどは真になるほうが多いため、分岐先を予想して実行を行う。予想が外れた場合は割込みにより修正する。
レジスタリネーミング:レジスタの名前を動的に変更することで、並列性や依存性を考慮し、高速化をする技術です。

問18 複数のデータに対して一つの命令で同じ処理を並列に行うのはどれか。
MIMD
MISD
SIMD
SISD
解答
解説 これは、フリンの分類と呼ばれる命令とデータの並列性を基にした分類法です

SISD:(単一命令、単一データ)命令にもデータにも並列性のない逐次的なコンピュータ
SIMD:(単一命令、複数データ)ベクトル演算機やGPU等
MISD:(複数命令、単一データ)命令列が複数あり、それを1 つのデータストリームに適用する形態のコンピュータ。あまり一般的ではない
MIMD:(複数命令、複数データ)複数のプロセッサが同時並行的にそれぞれ異なるデータを異なる命令で処理するコンピュータ

問19 キャッシュメモリに関する記述のうち、適切なものはどれか。
キャッシュメモリのアクセス時間が主記憶と同等でも、主記憶の実効アクセス時間は短縮される。
キャッシュメモリの容量と主記憶の実効アクセス時間は、反比例の関係にある。
キャッシュメモリは、プロセッサ内部のレジスタの代替として使用可能である。
主記憶全体をランダムにアクセスするプログラムでは、キャッシュメモリの効果は小さくなる
解答
解説 キャッシュメモリは、CPUのレジスタと主記憶の間に存在し、アクセス速度の差を埋めるために用いられます。

選択肢ア:アクセス速度の差を埋めるものなので、主記憶と同じくらい遅いのであればアクセス時間の短縮にはなりません。
選択肢イ:容量とアクセス速度にはあまり関係はありません。
選択肢ウ:キャッシュメモリとレジスタは別物なので、代替利用は不可能です。
選択肢エ:キャッシュメモリは、ある程度まとめてロードするので、局所性が強いほど効果が高くなります。

問20 USB2.0に関する記述として、適切なものはどれか。
PCと周辺機器を接続するATA仕様をシリアル転送方式に変更したもので、磁気ディスクやCD−ROMなどの接続に採用されているシリアルインタフェースである。
音声や映像などに適したアイソクロナス転送を採用しているほか、ブロードキャスト転送などがあるシリアルインタフェースであり、FireWireとも呼ばれている。
周辺機器とPCとの間の接続に用いられ、クロスやストレートのケーブルを使ってつなぐシリアルインタフェースである。
データ転送にアイソクロナス、バルク、インタラプトなどの転送プロトコルがあり、拡張機能として周辺機器同士が直接接続できるOn−The−GOをサポートしたシリアルインタフェースである。
解答
解説 USB(Universal Serial Bus)は現在最も主流な周辺機器をパソコンに接続するインタフェースの一種です。中でもUSB2.0というのが最も主流で、従来のUSB1.1で利用できたロースピードモード、フルスピードモードに、ハイスピードモードを追加したものです。また、転送モードも4つあります。下にまとめます。なお、USB1.1とUSB2.0は互換性があります。

ロースピードモード(1.5Mbps):キーボードやマウスなど
フルスピードモード(12Mbps):スキャナやプリンタなど
ハイスピードモード(480Mbps):大容量のHDDなど

コントロール転送:デバイスの設定・制御するためのもの
インタラプト転送:一定間隔でデータを転送するためのもの。キーボードやマウスな等に使われる
バルク転送:まとまったデータを一度に転送するためのもの。スキャナ等に使われる
アイソクロナス転送:連続的、周期的なデータ転送するためのもの。ビデオやオーディオ等に使われる。