東京農工大学工学府博士前期課程 モデル問題例 その１（知能情報システム工学専攻）
本問題は、東京農工大学工学府博士前期課程・知能情報システム工学専攻（2023 年度新設予定）の専門科目のモデル問題例です。本専攻への受験を検討している方に、試験問題の「出題形式(問題数等)」や「出題範囲 (分野・科目等)」などをイメージしてもらうために作成しました。
注意：本問題の無断転載・無断使用はご遠慮ください。

問【注意】１～６のうち 3 問を選び解答せよ。

題用

紙

１
図１－１および図１－２は循環・双方向リストとその操作を行う C 言語のプログラムの一部である。以下の問いに答えよ。
〔１〕リストにおけるノードの挿入と削除に関して、単方向リストと比較した場合の双方向リストの利点を 40 字以内で説明せよ。
〔２〕図１－１、図１－２の空欄 (A)〜(E)を埋めよ。ただし、空欄(B)、(C)は複数行になっても構わない。
#include <stdio.h>#include <stdlib.h>/* 循環・双方向リストの構造体 */typedef struct LISTNODE {int data; /*リストの要素 */struct LISTNODE *pNext; /*次のノードを指すポインタ*/
struct LISTNODE *pPrev; /*前のノードを指すポインタ*/} ListNode;/* 先頭のノードを指すダミーノード。rootNode のメンバである pNext
および pPrev は rootNode 自身を指すように初期化されている。*/
ListNode rootNode = {0, &rootNode, &rootNode};/* rootNode から数えて num 番目（rootNode->pNext が指すノードを 1 番目とする）のノードを取得する。失敗した場合に NULL を、成功した場合に取得したノードへのポインタを返す。 */ListNode *getNode(int num) {int i;
ListNode *curNode = &rootNode;for (i = 0; i < num; i++) {（A）;
if (curNode == &rootNode) return NULL;}
return curNode;}
図１－１（次ページの図１－２に続く）
双方向リストの操作を実現するプログラムの一部

/* rootNode から数えて num 番目（rootNode->pNext が指すノードを 1 番目とする）のノードを追加する。失敗した場合に 0 を、成功した場合に 1 を返す*/
int addNode(int num, int val) {ListNode *prevNode = getNode(num - 1);
ListNode *newNode;if (prevNode == NULL) return 0;
newNode = (ListNode*)malloc(sizeof(ListNode));newNode -> data = val;(B)
return 1;}/* rootNode から数えて num 番目（rootNode->pNext が指すノードが 1 番目）を削除する。失敗した場合に 0 を、成功した場合に 1 を返す */int deleteNode(int num) {ListNode *targetNode = getNode(num);
if (targetNode == NULL) return 0;(C)
free(targetNode);
return 1;}/* リストの要素を先頭から順に表示する */void showList(void) {ListNode *currentNode = rootNode.pNext;
do {printf("%d ", currentNode -> data);（D）} while (currentNode != &rootNode);;}/* リストの末尾から逆順で各要素を表示する */void reverseShowList(void) {ListNode *currentNode = rootNode.pPrev;
do {printf("%d ", currentNode -> data);（E）;} while (currentNode != &rootNode);}
図１－２

双方向リストの操作を実現するプログラムの一部

２
計算機アーキテクチャに関する以下の問いに答えよ。
〔１〕16ビットのデータ2つ「59 4C」「23 14」と32ビットのデータ1つ「CD A6 D8 FC」が、ビッグエンディアンの順番で図２－１のようにメモリ上に左から格納されているとする。この３つのデータは、リトルエンディアンの場合には、メモリ上でどのように配置されるか示せ。
ただし、各データはアドレスごとに16進数で示されており、その上部に示されている数値（０～７）はアドレスの最下位4ビットを表しているものとする。

０１
59２4C

３
23４14５
CD６A6７08FC

図２－１〔２〕以下の説明文で誤っているものには解答用紙の〔 〕に×を記し、どの部分が誤っているかを□で囲んで示し、解答用紙の下線部には、誤りの理由が明確にわかるように説明せよ。
ただし、単に文意を否定するだけではなく、論理的に誤りを指摘し、誤った数値は正しいものに書き換えて記述すること。正しいものには解答用紙の〔 〕に○を記し、下線部は空白のままでよい。
【例】〔× 〕ヒット時のアクセス時間が2サイクル、ミスペナルティが40サイクルのキャッシュ
では、ヒット率が90%の場合、平均メモリアクセス時間は2☓0.9＋40☓0.1＝5.8サイクルとなる。
平均メモリアクセス時間は、「ヒット時のアクセス時間＋ミス率☓ミスペナルティ」であるので、この場合、2＋40☓0.1＝6サイクルとなる。
（１）マイクロプロセッサの内部において、命令パイプラインにより個々の命令実行サイクルは短縮され、命令スループットは向上する。
（２）処理が4倍速くなる高速化回路を追加し、その回路が全実行時間の80%動作するのであれば、全体で3.2倍の高速化が期待できる。
（３）命令長が可変長であり、短いバイト数で表せる命令が増えれば、命令キャッシュのヒット率が向上し、実行性能は向上する。
（４）セットアソシアティブ方式において、ウェイ数を増やす方がヒット率は高くなり、キャッシュヒット時のアクセス時間は短くなる。
〔３〕ブロックサイズが32バイト、１次キャッシュが8Kバイトのダイレクトマップ、２次キャッシュが256Kバイトの4ウェイ・セットアソシアティブ、３次キャッシュが4Mバイトの16ウェ
イ・セットアソシアティブ方式のキャッシュメモリがある。主記憶のアドレスは64ビットであるとき、（１）１次、（２）２次、（３）３次キャッシュで、必要となる比較器のビット数と個数を示し、タグ部、インデックス部、オフセット部はそれぞれ何ビットになるかを求めよ。

３
以下の文章をよく読み，(1)～(21)の空欄に最も適した数値，数式，語句を記入せよ．なお，必要な箇所には適切な単位を付けること．

〔1〕抵抗，コイル，コンデンサの中から 2 つの素子𝑍1 ，𝑍2 を選び，それらを図３－１のように，並列に接続した回路に電圧[V] を加えたところ，電流[A] が流れた．この回路のア
図３－１

ドミタンス（複素数）を，指数関数形式を用いて表せば，と書くことができる．アドミタンスの実数部は呼ばれ，成分の値は子はと，成分ととなる．回路を構成する 2 つの素成分の値は，それぞれの素子値は〔2〕図３－２のように，内部抵抗成分，虚数部はとと考えられる．

を持つコイルに正弦波交流電圧（実効値 200V）を加えたところ，実効値 10 A の電流が流れた．コイルのリアクタンスはなので，回路の有効電力はは，無効電力はである．このコイルと並列に，端子して力率を１にした時，回路の有効電力は，力率間にコンデンサを接続，無効電力はとなる．

図３－２〔3〕1 kΩ の抵抗，インダクタンス 100 H のコイル，容量 1 μF のコンデンサを直列に接続した RLC直列回路がある．この回路の共振周波数 はの位相差は，Q 値はである．回路に電圧[V]を加えた時，流れる電流の実効値は，電圧に対する電流である．この RLC 直列回路にさらに抵抗，コイル，コンデンサの中から 1つの素子を選び直列に接続したところ，共振周波数はの素子値はである．になった．接続した素子は，そ４〔1〕 図４－１に示すように，半径 a の円形ループ導線 #1，#2 が z 軸を中心として平行に置かれており，各導線にはそれぞれ矢印の方向に一定の定常電流 I1, I2 が流れている．#1 は x-y 平面上に，#2は 𝑧 = − 𝑏 の平面内にある． #1 と同じ面内に抵抗 R が繋がれた a2 に比べて十分小さな面積 Sを持つ円形ループ導線 #3 を置いた．以下の問いに答えよ．ただし，全ての導線は十分細いとする．また，抵抗の物理的大きさは十分小さく周囲の磁界を乱さないとする．空間の透磁率は0 とする．
(1) 空間内の任意の閉曲線 C に沿って流れる定常電流に対するビオ・サバールの法則を解答欄に収まる範囲で説明せよ．数式を用いても良いが数式に用いる記号等はすべて説明すること．ただし，電流の大きさは一定であるとする．
(2) I1=I2= I0 ( I0 > 0 )とする．ビオ・サバ―ルの法則を用いて z 軸上の点 (0, 0, z) における磁束密度を求めよ．
(3) #1 と#3 の間の相互インダクタンスを求めよ．
(4) I1=I0 ( I0 > 0 )，I2=0とし，#3 を図４－１の位置から一定の速度 v で+z 方向に動かすと，#3 に電流が流れた．電流は，z = z0 ( z0 > 0 ) において大きさが最大となった．z0 を求めよ．答えを導く過程も示すこと．
〔2〕 図４－２に示すような定電圧源 V に繋がれた，極板の距離 d，面積 ab の平行平板コンデンサがある．コンデンサ内には異なる誘電率 1, 2（2 ≧ 1≧ 1）の誘電体が装填されているとする．
以下の問いに答えよ．ただし，平行平板コンデンサは十分薄く縁端効果は無視できるものとする．
(1) コンデンサの静電容量を求めよ．
(2) 静電エネルギーを求めよ．
(3) コンデンサ内に装填されている誘電体の境界面（ x = x0 ）には x 軸に平行な方向に力 F が働いている．この力の大きさと向きを求めよ．
(4) F = 0 となる条件を求めよ．ただし，上問(3)の結果を用いない場合は，物理的理由をごく簡単に説明した後に，F = 0 となる条件を記せ．

図 ４―１

図 ４－２

５
以下の問いに答えよ． 計算の過程は示さなくて良い．

〔１〕IEEE754 形式の単精度浮動小数点数 0100 0000 1101 0000 0000 0000 0000 0000 の符号部，仮数部，指数部を区別して，それぞれ 2 進数のままで示せ．また，与えられた浮動小数点数の値を 10 進数で示せ．

〔２〕以下の 8 ビット論理演算の結果を，16 進表記で示せ．ただし，| は論理和を意味し，>>>は算術右シフトを，シフト演算子の右の数値はシフトするビット数を意味するものとする．
（例：0xF4 >>> 3 は 8 ビット数 0xF4 を 3 ビット算術右シフトすることを意味する）．
(0x94 >>> 2) | 0x51

〔３〕次に示す計算機に関連した用語について，2 つの違いがわかるように，適切な用語を用いてそれぞれ 50 字以上 150 字以内で説明せよ．
（１）プログラムとプロセス（２）メモリにおけるテキスト領域とスタック領域（３）CPU におけるプログラムカウンタとデコーダ（４）命令実行におけるパイプライン処理とアウトオブオーダー処理

６𝑡の関数𝑓(𝑡)が𝑓(−𝑡) = 𝑓(𝑡), 𝑓(𝑡) = 𝑓(𝑡 + 2)を満たし，−1 ≤ 𝑡 ≤ 0の範囲の式は以下である．
𝑓(𝑡) = 𝑡 + 1 (−1 ≤ 𝑡 ≤ 0)
以下の問いに答えよ．
〔１〕−3 ≤ 𝑡 ≤ 3の範囲で𝑦 = 𝑓(𝑡)のグラフをかけ．グラフに極大値, 極小値があれば，その点の座標 (𝑡, 𝑦)を明記せよ．
〔２〕𝑓(𝑡)を以下の式①のように級数展開したとき，𝑎0 および𝑎𝑛 (1 ≤ 𝑛)を求めよ．
∞

𝑎0𝑓(𝑡) =+ ∑ 𝑎𝑛 cos(𝑛𝜋𝑡)2𝑛=1〔３〕ある実関数𝑔(𝑡)が以下で与えられている．
𝐴
2𝜋𝑡
4𝜋𝑡𝑔(𝑡) = + 𝐵 cos () + 𝐶 cos ()2𝑇𝑇
𝑇/2

このとき，∫−𝑇/2|𝑔(𝑡)|2 𝑑𝑡 を求めよ．
〔４〕式①の𝑎0 および𝑎𝑛 (1 ≤ 𝑛)に対し，以下の式の値を数値で答えよ.
∞𝑎02+ ∑ 𝑎𝑛22𝑛=1・・・式①