=================================================================== RCS file: /home/cvs/OpenXM/doc/compalg/intro.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- OpenXM/doc/compalg/intro.tex 2000/03/01 02:25:51 1.1 +++ OpenXM/doc/compalg/intro.tex 2000/03/28 01:59:21 1.2 @@ -13,19 +13,18 @@ 造は重視されず, ある点における値を生成するブラックボックスとして用いら れる. このような方法は, 広い範囲の入力に対してなんらかの近似解を生成す ることができる反面, 得られた解から, もとの方程式が本来持っていた数学的 -な性質を得ることは多くの場合困難である. -計算機代数は, 数学的対象を, 忠実に計算機上に表現し, 誤差のない計算を行 -なうことにより, 数学的に明確な意味をもつ結果を得ることを主眼としている. -当然, 数値計算に比較して, 扱える対象は限られる. -今のところ, 整数, 有理数およびそれらを係数とする多項式, 有理式が主な対 -象であるため, 計算機 $<$代数 $>$と呼ばれる. しかし, その及ぶ範囲は, 多 -項式の因数分解を初めとして, 多項式イデアル論の応用としての代数幾何学を -カバーするまでになり, イデアルの準素イデアル分解が構成的に可能となって -いる. この分野における基本的なツールは, Buchberger により考案された -\gr である. これと同等な概念は, Standard basis として, 広中により -Buchberger 以前に考案されていたが, 構成的な生成アルゴリズムを -Buchberger が与えたことにより, 以上のことが計算機上で可能となったわけ -である. +な性質を得ることは多くの場合困難である. 計算機代数は, 数学的対象を, 忠 +実に計算機上に表現し, 誤差のない計算を行なうことにより, 数学的に明確な +意味をもつ結果を得ることを主眼としている. 当然, 数値計算に比較して, 扱 +える対象は限られる. 今のところ, 整数, 有理数およびそれらを係数とする多 +項式, 有理式が主な対象であるため, 計算機{\bf 代数}と呼ばれる. しかし, +その及ぶ範囲は, 多項式の因数分解を初めとして, 多項式イデアル論の応用と +しての代数幾何学をカバーするまでになり, イデアルの準素イデアル分解が構 +成的に可能となっている. この分野における基本的なツールは, Buchberger +により考案されたグレブナ基底である. これを含む概念が, standard basis +として, 広中により Buchberger 以前に考案されていたが, 多項式環の場合に +構成的な生成アルゴリズムを Buchberger が与えたことにより, 以上のことが +計算機上で可能となったわけである. 以上のように, 計算機代数においては, 正確な計算ということが基本となって いる. 最も基本的な単位である整数も, 必要なだけの桁数をすべて表現でき @@ -147,10 +146,14 @@ $a$ の $k$ bit 左シフト $\bmod B$ \item 右シフト $a$ の $k$ bit 右シフト (右 $k$ bit は捨てられる) + +\item bit 毎の and, or, exclusive or, not + +整数を bit 列と見て, 各 bit 毎に論理演算を行う. \end{itemize} シフト演算は, 論理演算に用いられるだけでなく, 整数の $2^k$ 倍, あるいは -$2^k$ で割った剰余の計算に用いられる. これら以外に, CPU によっては次の +$2^k$ で割った商の計算に用いられる. これら以外に, CPU によっては次の 演算が用意されている場合がある. \begin{itemize} @@ -176,9 +179,9 @@ $aB+b = qd+r$ なる $q$, $r$ ($0\le r < d$) \section{C 言語について} -本講では, アルゴリズムおよびデータ構造の計算機上での実装例を -C 言語により示す. ここでは, C 言語の文法に関して, ごく基本的 -なことについて解説する. 詳細は, \cite{KR} などを参照されたい. +本講では, アルゴリズムおよびデータ構造の計算機上での実装例をC 言語によ +り示す場合がある. ここでは, C 言語の文法に関して, ごく基本的なことにつ +いて解説する. 詳細は, \cite{KR} などを参照されたい. \subsection{変数} @@ -197,7 +200,7 @@ unsigned int p,q; \subsection{式} -変数および定数に対する一連の四則演算, シフト演算などをまとめて一つの式 +変数および定数に対する一連の四則演算, 論理演算などをまとめて一つの式 として記述することができる. 加, 減, 乗はそれぞれ {\tt +}, {\tt -}, {\tt *} で表す. {\tt /} は除算における商 (整数部分), {\tt \%} は剰余を 表す. 式の中で用いることができる演算子には, 他に, {\tt <<} (左シフト), @@ -254,7 +257,7 @@ unsigned int factorial(unsigned int n) \subsection{配列, ポインタ} -任意多倍長整数は, メモリ上の十分な長さの連続領域として表現される. このような +任意多倍長整数は, メモリ上の十分な長さの連続領域として表現できる. このような 領域は, C 言語では配列として表現される. \begin{verbatim}