• ベストアンサー

計算理論とオートマトン: なぜ計算が言語と関係ある?

「計算理論とオートマトン言語理論」という本を読んでいます。 (バカな質問なんだろうとは思いますが)根本的に分からないことがあります。 (1)なぜ計算が言語と関係あるのでしょうか?計算って、例えば「2の平方根を求める」みたいなものですよね?オートマトンの計算の話が、いつの間にか、オートマトンの「言語受理(?)」の話になっていっているのですが・・・ (2)ここでの「言語」は、日常の言葉とは関係ないのでしょうか?「文法」とかの言葉も出てくるので混乱しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • R_Earl
  • ベストアンサー率55% (473/849)
回答No.2

ANo.1ですが、2箇所訂正と加筆です。 (誤1) **************************************** 例えば+, -, ×, ÷に「四則演算子」という名前を与えます。 そうすると、普段私たちが使っている2数の計算(例えば3 + 5等)は、 数 四則演算 数 という文法をしていると考えられます。 決して 四則演算 数 数 という形はしていませんよね (この形に従うと、計算式は+ 3 5のように記述することになります)。 **************************************** (正1) **************************************** 例えば+, -, ×, ÷に「四則演算子」という名前を与えます。 そうすると、普段私たちが使っている2数の計算(例えば3 + 5等)は、 数 四則演算子 数 という文法をしていると考えられます。 私たちはこの文法とあっている「3 + 5」や「8 ÷ 3」等の計算式を、 正しい計算式だと認識します。 「3 +× 4」のような計算式に違和感を感じるのは、 「3 +× 4」がこの文法に合致していないからです。 もし仮に、2数の四則演算の数式の文法が 四則演算子 数 数 だとしたら、 計算式は「+ 3 5」や「÷ 8 2」のように記述することになります。 **************************************** (誤2) **************************************** 先ほどの計算式の文法「数 四則演算 数」も同じです。 「数」や「四則演算」等に対応する語句を入れれば、ちゃんとした計算式の出来上がりです。 **************************************** (正2) **************************************** 先ほどの計算式の文法「数 四則演算子 数」も同じです。 「数」や「四則演算子」等に対応する語句を入れれば、ちゃんとした計算式の出来上がりです。 ****************************************

white-tiger
質問者

お礼

ありがとうございます。 文法にもいろいろあって、ここでは「計算の文法」を考える、ということですね。

その他の回答 (1)

  • R_Earl
  • ベストアンサー率55% (473/849)
回答No.1

プログラミング言語というものがあります。 これに何故「言語」という言葉があてられているのかを考えてみてください。 > (1)なぜ計算が言語と関係あるのでしょうか? この分野では、「計算式も言語である」と考えます。 計算式にも、ちゃんと文法があるんです。 例えば「3 +× 4」という計算式に違和感を感じませんか? 違和感を感じるのは、これが「計算式言語の文法」に沿ってないからです。 例えば+, -, ×, ÷に「四則演算子」という名前を与えます。 そうすると、普段私たちが使っている2数の計算(例えば3 + 5等)は、 数 四則演算 数 という文法をしていると考えられます。 決して 四則演算 数 数 という形はしていませんよね (この形に従うと、計算式は+ 3 5のように記述することになります)。 > (2)ここでの「言語」は、日常の言葉とは関係ないのでしょうか?「文法」とかの言葉も出てくるので混乱しています。 関係ありです。 というより、「日常の言葉(自然言語)の文法」も「計算式の文法」も ほとんど同じものです。 英文法で習ったSVCやらSVO等の文型が、 先ほどの「計算式の文法」に合致すると思います。 例えばSVOOは「主語 述語 目的語 目的語」を表します。 英文を作る時には、この「主語」や「述語等」の部分に、対応する語句を当てはめますよね。 先ほどの計算式の文法「数 四則演算 数」も同じです。 「数」や「四則演算」等に対応する語句を入れれば、ちゃんとした計算式の出来上がりです。 オートマトンで扱うものは、「しっかりと文法に従っているもの」となります。 日本語や英語は多少文法にそぐわない書き方をしたりしても、意味が通じる場合がありますが、 オートマトンはそういったことができません。 プログラムを書く際、ちょっとでも文法間違いをすると (この場合の「文法」は「プログラミング言語の文法」を意味します) コンピューターが受理しないことが多いのもそのためです。

関連するQ&A

  • 計算理論についての質問

    計算理論についての質問です。 文脈自由文法gがεを受理するかどうかを判定するアルゴリズムが必ず存在するか、しないかを証明するという課題が出たのですが、 「アルゴリズムが存在する」ということはどうやったら証明できるのでしょうか? 今、手元にはホップクロフトの「オートマトン言語理論計算論」があるのですが、「アルゴリズムが存在するかどうか」を証明するような問題が見つかりません。 学校でもこのような問題の例題はやっていないので、どなたか教えてください。 よろしくお願いしますm(__)m

  • オートマトンが分かりません!!

    現在情報関係の大学に通っていて、もうすぐ『オートマトンと言語理論 』という科目のテストがあります。教科書は森北出版で著者が富田悦次・横森 貴の『オートマトン・言語理論』を使っています。テスト範囲が有限オートマトンと正則表現/言語と形式文法のところなんですが正直まったく内容が理解できないです。そこの範囲を例題などを中心に初心者でも分かりやすく書いてあるオススメの参考書を知っていたら教えてください!

  • オートマトンについての良い本

    オートマトンの理論についてのおすすめの入門書はないでしょうか? 「計算理論の基礎」という本を渡されて、たしかにオートマトンについては分かりやすく書かれているのですが、そもそも、 ●なぜ、オートマトンみたいなものを考える必要があるのか? ●オートマトンみたいなのを考えることのメリットは? といった根本的なことがよくわからないので興味が・・・ おねがいします。

  • BASIC言語の問題(初心者)

    こんばんは(>_<) 学校からの課題で非常に困っています!!!! BASIC言語の仕組みは読めても、どうしても組み立てが出来ないのです。。。 *1* 2の平方根を出力しなさい(二分法による平方根の計算) ただしδ=0.0001とする *2* 2の平方根を出力しなさい(ニュートン・ラプソン法による平方根の計算) ただしδ=0.0001とする ヒントとして、それぞれのアルゴリズム(?)があるので紹介します(>_<) *1*(xの平方根を精度δで求める) a←0 b←x while b-a < δ do c←(a+b)/2 if C*C > x then b←c else a←c endif done return a *2*(xの平方根を精度δで求める) y←x while │x-y*y│ < 2yδ do y←(y*y+x)/2y done return y 自分は文系で、パソコンの知識まったくないので、 どうかお助け下さいo(;△;)o涙

  • 平方根の計算

    非常に簡単な問題ですが娘に質問されて、ふと解からなくなってしましました。考え方を教えてください。 問題:次の式を計算しなさい。    √2^2 - √(-2)^2  (2の二乗の平方根 マイナス -2の二乗の平方根)  簡単に考えれば 0 に成るのですが、娘は  a^2の平方根の解は±a だからこの場合は  ±2 ー ±2 となり   4,0、-4の3通りの解が出るのではないか  または第1項の解は2と指定してあり、第2項の解はー2と  指定してあると考えれば答えは 4 に限定される。  というのです。私も実計算でこのような式を扱うことは長くして  いなかったので少し混乱います。  回答には±の場合分けは無いようですが 何故 √a^2=±a が適用  されないのか説明をお願いします。   尚、問題は質問の意図を明確にするために私のほうで単純化して   作ったものです。

  • オートマトンの正則表現の式変形について

    オートマトンMが受理する言語L(M)を正則表現で表す問題を先日やったのですが、計算途中で式が変形できなくなってしまい、答えにたどり着くことが出来ませんでした。自力で変形したところまでも結果は、スター閉包を*で表すと、 L(M) = a*+a*ba*b(b+aa*ba*b)*aa* です。友人数人と何度も何度も確認し、ここまでは合っているということが確認できました。 答えのほうですが、L(M)=(a*+ba*bb*a)*です。 なにか公式があるのかとも思って調べてみたのですが良くわかりませんでした。 詳しい方おりましたら簡単な質問かもしれませんがよろしくお願いします。

  • C言語について教えてください。

    C言語について教えてください。 C言語ソフト「C言語をはじめよう」で、sin,cos,tanを求めたり、計算(sin=cos*tanや、sin^2(sinの二乗)+cos^2(cosの二乗)=1や、cos=sin/tan,tan=sin/cos)するプログラムを作りたくて、ネットを見たのですが、全然意味がわかりません。 また、√(平方根)の表示や、計算する(1/√3^2(√3分の1の二乗)*√3見たいな計算)プログラムを作りたいと思いますが、こちらも同様です。 #include<stdio.h> #include<math.h> int main(void) ここまではわかりますが、ここから先がわかりません。 どなたか。詳しくわかりやすく、入力例などをよろしくお願いします。 また、上記のプログラムや、書き方が違いましたら、こちらもご指摘お願いします。 なるべく早く、ご解答ください。

  • 言語理論の文脈自由言語について

    「オートマトン 言語理論 計算論I」という本(教科書)を読んでいます。 この本には演習問題がついているのですが、本を読んだだけでは解法が分らない上、 答えがついてないため、解けない問題が多く困っています。 (連休明けに試験があり、その範囲なんです。) ある言語が文脈自由型ででないことを証明したいのですが、 反復補題(パンピングレンマ)を用いて背理法によるのだろうと思うのですが、 どのように仮定するかの方針が立たないのです。 具体的には次のような問題に対し、「…」のような仮定をしてみました。 a){a^i b^j c^k | i<j<k}   「z=a^n b^(n+l) c^(n+m) (但し、m>l>0)」 しかし、下記のように背理法による矛盾が示せなかったのです。 どこで間違ったのかは分らないので、間違った個所を指摘していただきたいのです。 よろしくお願いします。 「言語を文脈自由言語と仮定する。 nをパンピングレンマの性質を持つ整数とし、 z=a^n b^(n+l) c^(n+m) (但し、m>l>0)とすると、 z∈L かつ |z|≧n が成立する。 したがって、パンピングレンマから z=u v w x y (ux≠ε、|vwx|≦n) と表され、かつ u v^i w x^i y ∈ L が成立する。 |vwy|≦n なので、vxがaとcの両方を含むことはない。 vxのパターンにより次の2つの場合を考える (i)vxが一種類の文字だけからなる場合 … (ii)vxが2種類の文字からなる場合」 ここまで書いたところで、 v=b、x=c とすると、例えば、 u=a、w=bb、y=ccc の場合を考えると、矛盾が導けないことに気付きました。

  • これは一種の言語障害なのでしょうか?

    (1)私はパソコンを打ち込んでいるときに子どもから話し掛けられると、何とか話を聞くことはできても、打ち込みながら言葉を返そうとすると頭が混乱して、全然ちゃんと話せません。 これって普通のことでしょうか?みなさんもそうですか? (2)それと、話をしているとき、多分頭の中ではこれから先に話そうと思っていることを考えているのだと思いますが、これから言うべき言葉が急に出てきてしまうことがあります。そのときは話の途中でオチをばらしてしまうみたいで情けない感じ。そしてたいていそういうときって『噛み』ます。 焦っているということでしょうか? (3)そして私の実母もかなり『噛み性』で、これぞ!というときは必ず噛むのですが、年齢が行くに連れてひどくなってきたように感じます。母と話していると私も同じようになってしまう感じがあるのですが、これは「移る」ものなんでしょうか? そして『噛み性』って遺伝するものなのでしょうか? (4)私は英語と中国語を学習しているのですが、ときどき頭の中で日本語(口語の場合)が混乱する感じがあるのですが、外国語の学習が何か影響しているのでしょうか?日常的に外国語を話しているのでないなら関係ないでしょうか? わかる範囲でご回答いただけたら嬉しいです。 よろしくお願いします。

  • 断りという言葉と理コトワリという言葉の関係について

    言語的あるいは心理的な関係を知りたいと思いました。理論と拒絶が同じ語源の言葉だったら不思議な感じがします。