令和7年度技術士第一次試験:I 基礎科目:I-2-6

目次

問題

(出典:日本技術士会のホームページ 過去問題(第一次試験) 基礎科目 令和7年度)

コーチング対話解答

技術士コーチング リフレッシュ
マナブ先生

ツトムさんは、アッカーマン関数というのは知っていましたか?

ツトムさん

私はこの問題を見るまで知りませんでした
過去10年間にも出題されていませんでした。
式を見ているだけではどう取り組んでいいのかわかりませんね。

マナブ先生

この問題は「難しい計算」をする問題ではなく、
定義を順番に丁寧にたどれるかを見ています。
数個の数字を入れるだけではよくわからないので、もう少し多くしてみましょう。
\(m\)と\(n\)が出てきていますので、\(m\)行、\(n\)列の表を作って順次求めていきましょう。

ツトムさん

こうですか。

スクロールできます
\(m\)|\(n\)0123456789
0
1
2
3
4
5
マナブ先生

求める答えが\(A\)(2,2)なので、それほど大きくなくていいですね。
与えられた定義式を見てどれぐらいでいいか考えてみてください。

ツトムさん

入り組んでいるように見えるのでよくわかりませんが、
とりあえず、この程度にしておきます。

スクロールできます
\(m\)|\(n\)012345
0
1
2
マナブ先生

そうですね。足らなければ付け加えればいいですし、余れば放置しておけばいいですからね。
そして、➀の式から\(m=0\)の行を埋めてみましょう。

ツトムさん

はい。

スクロールできます
\(m\)|\(n\)012345
0123456
1
2
ツトムさん

これはとても簡単で、これからどうなるか全くわかりませんね。
すると、次は②の関係式を使って\(n=0\)の列を埋めてみるのですね。
とりあえず、\(A(1,0)=A(0,1)=2\) ということしかわかりませんが。
次は③の関係式を使って、\(A(1,1)=A(0,A(1,0))=A(0,2)=3\) となりますね。
\(A(1,2)=A(0,A(1,1))=A(0,3)=4\) になります。
\(A(1,n)\)には表の右上の数字が入るようですね。
残りもそのようにして埋めます。

スクロールできます
\(m\)|\(n\)012345
0123456
1234567
2
マナブ先生

\(A(1,n)\)はそうですが、次からはそれほど簡単ではないですよ。
\(m=2\)の行を計算してみましょう。

ツトムさん

するとまた②を使って、\(A(2,0)=A(1,1)=3\) がわかります。
ここで③の関係式を使うと、\(A(2,1)=A(1,A(2,0))=A(1,3)=5\)
そうですね。右上の4ではなく、5になりましたね。

マナブ先生

あと一歩ですね。

ツトムさん

\(A(2,2)=A(1,A(2,1))=A(1,5)=7\) となります。

スクロールできます
\(m\)|\(n\)012345
0123456
1234567
2357
ツトムさん

答えは➀ 7 ですね。

マナブ先生

そうですね。
アッカーマン関数は計算量理論の研究においては重要な役割を果たしています。

本来アッカーマン関数は急激に増加する数字を作り出すために用いられるようですが、問題に出たのは、その最初の部分ですので、関数への値の代入についての考え方を問う問題として出題されたのでしょうね。

この後、急激に数字が大きくなっていきます。

ツトムさん

手計算ではこれ以上はやりたくないですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次