訂正のページ:
本書の誤りについて報告します.
新しく気が付いた間違いの順に並べてあります.
Updated 11/15/02.
以下の間違いは,第2刷では訂正されています.
4. p.138, 問 1.9 の解答例プログラム A.1(指摘者 T. Watanabe, 2/3/02)
(誤っている点)
program match (string t, p)
char a[..], b[..];
i <- 1; j <- 1;
a <- str_to_char(x); b <- str_to_char(y);
while (true) {
if (b[j] = 列終端) { return(true); }
if (a[i] = 列終端) { return(false); }
if (a[i] = b[j]) {
i <- i + 1;
j <- j + 1;
}
else {
i <- i + 1; /* ここが誤り? */
j <- 1;
}
}
program end.
(訂正)
program match (string t, p)
char a[..], b[..];
i <- 1; j <- 1;
a <- str_to_char(x); b <- str_to_char(y);
while (true) {
if (b[j] = 列終端) { return(true); }
if (a[i] = 列終端) { return(false); }
if (a[i] = b[j]) {
i <- i + 1;
j <- j + 1;
}
else {
i <- i - j + 2; /* パターンを1つずらす */
j <- 1;
}
}
program end.
3. p.139, 問 1.15 の解答例プログラム A.4(指摘者 T. Nagai, 1/11/02)
(誤っている点と訂正)
1: if($1 >= $2) goto 3 は間違い. 1: if($1 < $2) goto 3 が正しい.
2. p.47 定理 2.1 補足(指摘者 S. Chiba,11/21/01)
(誤っている点と訂正)
gcd(x,0) = gcd(0,x) = 0 と定義しているが,間違い.
gcd(x,0) = gcd(0,x) = x が正しい.
1. p.85 例題 3.1(指摘者 K. Kobayashi,10/3/01)
(誤っている点)
ここに説明されているのは,ポストの対応問題ではない.この問題自体
は,簡単に解くことができる.
(訂正)
与えられた文字列の組 P = { (s1,t1), (s2,t2), ..., (sn,tn) }
に対し,その中から適当な組を選び(2 度以上選ぶことも可)
並べることで,まったく同じ文字列の組を作ることができるかど
うかを判定せよ.
例も同様に訂正.たとえば,
P = { (aba, abaab), (aba, a), (bba, bbaa), (aab, abaab) }
だと,
(aba, abaab), (aba, a), (bba, bbaa), (aab, abab), (aba, a)
と選べば,各組の左だけで,
s = aba aba bba aab aba
ができ,右だけでも
t = abaab a bbaa abab a
となるため等しい列ができる.したがって,P に対しては,ポス
トの対応問題は Yes である.
3. p.28 の 7 行目(指摘者匿名,1/31/02)
(誤っている点と訂正) 飛ぶ(ジャンプ)することが → 飛ぶ(ジャンプする)ことが
2. p.21 の 7 行目(指摘者匿名,1/31/02)
(誤っている点と訂正) 終了する考える → 終了すると考える
1. p.134, p.135 参考文献の番号(指摘者 K. Kobayashi,10/3/01)
(誤っている点と訂正) 量子計算に触れている文献は [4] ではなく [3]. C言語の文献の説明では,[5] と [6] が逆.