ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

[環論] ユークリッド整域で陥った詭弁

今回も環について知っていないと分からない話をします。

群・環・体の勉強で、特別な環であるユークリッド整域について学び始めました。
とりあえず定義だけ読んだのですが、以下のような定義となります。

なお、本に書いてありましたが、普通の定義より強くしているそうです。

任意の整域(A,+,×)に対してa∈Aを非負整数に対応付ける関数H(x)で次のような条件を満たすものが存在する整域をユークリッド整域と呼びます。

1. H(0) = 0かつH(a) = 0ならa = 0 (0は加法の単位元)
2. a ≠ 0かつb ≠ 0なら、H(a×b) >= H(a)かつH(a×b) = H(a)となるのはbが単元のときのみ

3番目の重要そうな条件もあるのですが、ここでは使わないので省略します。
このH(x)をxの高さと呼びます。

そして、a∈Aとb∈Aの公約元xの中で高さが最大になるものを最大公約元と呼びます。
公約元は普通の環でも存在する概念ですが、最大公約元はユークリッド整域でないと存在しない概念ですね。

そして、aとbの最大公約元が単元であるときaとbは互いに素であるといいます。
つまり互いに素であるというのもユークリッド整域でいえる概念なのですが、私はそれに違和感を覚えたわけです。

続きを読む

tag: 数学 勉強 群環体 素数 証明 約数 論理 ユークリッド

一次不定方程式について調べた

前々回の記事「[環論] 素元と既約元の違いってなんなのよ」および、前回記事「数学ネタは人気が出ないのか…」で書いたとおり、
群・環・体の本を読んでいたら不定方程式にぶち当たったので、最近は群・環・体をやらずに不定方程式について調べていました。

群・環・体の本にも予備知識として不定方程式について解説があったので、それを読んだのと、あと不定方程式は高校一年生のときにやりましたから、数Aの教科書をひっぱりだしてきて読んでみました。

覚えてないからな!!

そこで思ったのですが、本によって不定方程式の解法にしても全然、やり方が違いますね。
数学って知識を丸コピするよりか、自分で考える学問ですから考える人が違うと内容もだいぶ違ってしまうんでしょうね。

私は丸コピしか出来ないですが…。


さて、今回はレポートを書く気分で、(一次の)不定方程式について調べて学んだことを記していきたいと思います。

続きを読む

tag: 数学 方程式 勉強 素数 証明 数学的帰納法 学校

[環論] 素元と既約元の違いってなんなのよ

環について知っていないと分からない話を今回はします。

私が群・環・体の勉強に使っている本では、環の章に可換環における素元の定義として

p = abで表せるならaかbのいずれかが単元であるとき、pは素元である
(pは0でも単元でもない)


というふうに書かれていたんですが、インターネットで調べてみたらこれは実は素元の定義ではなく既約元というものの定義だそうです。

まぎらわしいですね。
これは私が読んでいる本が悪いのか。

私が群・環・体の勉強に使っている本は分かりやすい素晴らしい本ですけども、
環の定義として一般的には、乗法について可換であることは公理としませんが、可換環ではなく普通の環が乗法について可換であるとされていたりして、
素元の件も含めてちょっと一般的な定義とズレていますね。


それで、本当の素元の定義とは何かといいますと、

まず可換環においてp | aと書いたときa = xpとなるxが存在するという意味にして、まあ直感的にはpがaを割り切るといえますけども、

p | abであるならp | aまたはp | bであるとき、pは素元である
(pは0でも単元でもない)


ということになります。


しかし、素元と既約元は似ているというか、環よりもう少し条件を強くした代数系においては一致することがあるんですよね。

続きを読む

tag: 数学 群環体 証明 素数 方程式

近況報告というか話題のちゃんぽん

ただいま、記事「F#の基礎勉強まとめ (前編)」の後編を執筆中であります。
途中つなぎの記事を書くほど大規模なブログ記事を書くのは久しぶりですね。

現在、リスト、配列、タプル、レコードまで書き終わったのですが、判別共用体、パターンマッチ、例外を書いて手短に終わろうと思います。

ただし、パターンマッチが本当に内容的に濃い!
大変ですね。

さて、上記リンクの記事でも書いてあるように、F#の文法は解説しても、実際にプログラム書いたことがほぼ無いんですよね~。

というわけで、ちょっと前ですが、なにかプログラムを書こうということで、なんともベタなじゃんけんのプログラムを書きました。

せっかくなのでYahoo!ボックスに上げておきましたから、ご覧ください。
なにせF#の経験が浅いので、変な箇所があるかもしれませんが、ぷぷぷ~と笑ってないでコメントにてご指摘下さいませ。

Janken.txt (Yahoo!ボックス)
http://yahoo.jp/box/_9_RYk


このプログラムを書きながら思ったのですが、関数に引数として別の関数の戻り値を渡してもいいし、
関数に直接、別の関数を渡しちゃって、むこうの関数で引数を与えて戻り値を作ってもいい、というこの関数と値の区別のルーズさは特徴的ですね。

今回の場合は逆にそれがややこしくなって、変なプログラムになってしまったかもしれませんが…。

続きを読む

tag: プログラミング F# 数学 証明 論理学 勉強 群環体 結合法則 Nexus iPad

コンピュータは数学をできるか

あのアインシュタインは「本で調べればわかるものを暗記する必要はない」と言っていたそうです。

たしかに暗記というのは、まあ人間のすごいところで現在置かれている状況と記憶を照らし合わせて最適な知識を引き出す、みたいな人間の検索能力も合わせて考えれば価値のある行為だと思うんですが、

ただ覚えるだけという暗記自体の価値はあんまり…ないかなという印象を持ちますね。
それは、メモ帳などのツールを使えばいいじゃん、という話で済むからです。


一方で、物事を考えるという行為はなかなかツールで代替するということができませんでした。

たとえば私の好きな数学も論理的思考をするというのが基本ですので、これは機械にはこなせない仕事だということで数学者たちは誇りをもって数学をやっていたと思います。

まあ時にそれは、以前もブログに書いたかもしれませんが、記憶力、知識力メインでやってる学問に従事する人を見下すというか、
「覚えてないことは本とかネットで調べればいいじゃん。まあ数学は俺らにしかできないけどねー君たちは本やネットで代用できる能力身に付けて嬉しいの?」(私の若干の悪意によって誇張されてしまったセリフですが…)
と思ってる側面があるんですけどね。まあそれはいいとして。


しかしながら、この頃はコンピュータを使用してAI(人工知能)のプログラムを走らせることによって、コンピュータに物事を考えさせるということが可能になってきました。

たとえば将棋なんかもコンピュータがだいぶ強くなってきましたよね。

そして機械にはできない学問の代表格であった数学でさえも、まだ遠い未来の話ではあると思うんですが、思うにオワコン化が始まっているというか、コンピュータにその仕事を奪われる時代が到来するのではないかと感じました。

私はAIに詳しくないので、細かいことはよくわからないのですが、コンピュータに定理を証明させることが可能です。

たとえばCoqとかいうやつを使えば証明させられるんじゃないですかねぇ。
(意識低い系発言。Coqもやってみるべきだろうか…)

実は数理論理学によって論理の仕組みをかなり機械的に考察できるようになったことで、数学みたいな論理を軸にした学問はコンピュータによる代替の恰好の餌食になっている、と思います。


ただ、コンピュータに難しそうなのは数学の中で得られた知見を現実世界の何に応用できるか考えることや、逆にそもそも現実世界に応用することを目的にして数学の研究をすることですね。

現実世界も論理で割り切れないということは決して無いと思うんですが、なんにせよ複雑ですから、数学の中だけでゲームみたいにやるほうがよほど簡単だと思いますね。

あとプログラミングも、計算機科学の枠組みだけでやるならコンピュータにも簡単になる時代が来ると思うんですが、人間にわかりやすいシステムを作るとなると機械には理解できないことが多くて難しいのではないでしょうか。


やはり人間の気持ちを理解するというのはコンピュータには難しいでしょうね。
ですから、数学がコンピュータに仕事を奪われてもなお、カウンセラーみたいな職業は人間が担当することになると思います。

心理学も統計ゲーみたいなところがあるようですので、一部をコンピュータで代替するというのも不可能ではないと思いますけどね。

というわけで、まともな記事を書くにはあまりにも知識がなさすぎる状態でこんな記事を書いて、やっぱりまともな記事を書くことはできませんでした。


しかし、私のようにプログラミングだとか数学をやってる人も機械に仕事を奪われると思うと、安心できませんよね~。

まあ遠い未来だとは思うので、少なくとも我々が死ぬまでこういう職業が人間にしかこなせない高貴な職業であれば嬉しいんですけどね。

tag: コンピュータ 人工知能 論理学 プログラミング 数学 証明 暗記 クソ記事

数学が難しい

前回記事「論理学の勉強コンプリート!!!」で書いたとおり数理論理学の勉強が終わったので、
今は「群・環・体」を図書館で借りた本を読んで勉強してるんですが、なんとも心が折れそうです。

まだ本題には入っておらず、集合と写像についてやったり自然数や整数の性質を学んだりしているページを読んでます。

集合と写像は、去年の十二月にも数理論理学関連で勉強しましたけどね。
まあ置換とか、ちょっぴり新たな概念もありましたけども。


自然数とか整数が難しい!!!

今までやってきた論理学に比べて、こいつらは、かなりワーキングメモリがないと理解できないですね。

集合と写像においてもそうですが、こういう系統のやつは具体的にイメージする対象があって、自分でそれをイメージしないと駄目なものですから。

数理論理学は、なんか上手いこと表現できないですが、とにかく何かをイメージするということはあんまりなかったんですよね。


まあ対象をイメージできないなら、もしくは式を変形するだとか論理的にひとつずつ推論していくことで、形式的に理解するという手立てもあると思いますが、
前回記事で書いたように私には論理を積み重ねる力もたいしてないので、なかなか難しいものがありますね。


このまえ前回記事で

しかし私だってそりゃ書かれてあることを読んで一瞬で理解できるなんてことはほとんどないですが、時間かけたら大抵のものは理解できますよ。

だのなんだのと言っていましたが、なんかもう撤回したい気分ですね。
数学をナメていた…。


整数の性質で、ユークリッドの互除法とか出てきたんですけど、わけわかめって感じでした。
さすがに完全にわからないわけではないですが。

ユークリッドの互除法は、学校でもやらされた気がするんですけどね。
覚えてねえ!


そういえば、集合と写像のページを読んでいて思ったんですが、かなり初歩的な問題だと思いますけど、ちょっと閲覧者の方に数学できる方がいらっしゃればお聞きしたいのですが、

要素数が同じの2つの有限集合A, Bと写像f:A→Bで、fが全射であることとfが単射であることって同値ですよね。

頭のなかで図をイメージすれば、これは正しいような気がするんですが、証明しようと思ったら論理力がなくてできない…。


インターネットで検索すればいくらか似たような問題の証明が出てくるんですけどね。
たとえば、こんなブログ記事が。

よしいずの雑記帳 対等な有限集合における全射と単射の同値性
http://yoshiiz.blog129.fc2.com/blog-entry-694.html


2つの集合が対等であるとは、2つの集合に全単射が存在するという意味だそうですから、有限集合において対等とは、つまり要素数が同じであることと同値だと思うので、これはまさに私が考えている問題の証明だと思うんですが、

読んでもよくわからない…。
イマジネーションが足りないですね。


この他にもQ&Aサイトに写像fの定義域と値域が同じ有限集合の場合において、fが全射であることとfが単射であることの同値性の証明が載ってたりしまして、
その証明を応用するだけでも要素数が同じという条件にまで拡張できると思うんですが、やはりよくわからない…。


数学難しいですね。
まあ分からないことが分かるようになるという喜びが数学の醍醐味なわけですが。

でも分からなさすぎなんだよチクショオオオオオオ!

tag: 数学 勉強 問題 証明 代数学 ワーキングメモリ 集合 写像

論理学の勉強コンプリート!!!

この記事書くの2回目です。

姉妹ブログにも書きましたが(記事「書いてた記事が…」を参照)
この前、同じ内容の記事を書いていて2時間半ぐらいかけてもうすぐ終わりそうってとこまで来たのに、急にブラウザが固まってリロードされてしまいまして、書いていた内容が消えてしまいました。

Edgeで書いてたんですけど、Edgeが駄目なんですかね。
IEと比べて不安定な気がします。

キクチモモコ学生じゃないけど、ほんと使えないっ!って思いましたね。
今からまた同じこと書かないといけないのか…だるい。



さて、去年の十二月に読んだ数学のページから始まり、京都大学の教授の方のウェブサイトを読み続けて数理論理学の勉強を続けてまいりましたが、

とうとう一昨日、最後の最後まで読み終わりました!

はい拍手!
パチパチパチパチパチパチ…


全部で10ヶ月、長かったですね。

まあ、今年度の勉強したことまとめをご覧いただければわかりますが、そのうちの5ヶ月はずっと最後の章のシークエント計算についてダラダラと勉強していたんですけどね…。

なんというか今回の論理学の勉強を振り返ってみると、頑張って勉強する時期、燃え尽きて怠ける時期、さすがに怠け過ぎだなと思ってまた頑張る時期、を繰り返している感じでした。

シークエント計算の前の章の自然演繹は頑張って勉強していたので、例に漏れずシークエント計算は最初のほうは怠け気味でして、それで長引いて5ヶ月も掛かってしまったわけですね。

ただ、こちらも例に漏れず、怠け過ぎだなと思ったのでシークエント計算の勉強の最後のほう、つまり最近は頑張って勉強していました。


あと、もうひとつの長引いた理由として、これも勉強したことまとめに書いてありますが、述語論理に関する推論規則の、固有変数条件の理解に苦戦していたのもあります。

自然演繹のほうの固有変数条件は理解できたんですけどね。

前者は時間かけても理解できなかったので、飛ばして先に進んでしまったんですよ。
数学ってひとつひとつ着実に理解して進むのが筋だと思うので、あんまり良くないことだとは思いますが。

まあでも、数学もゲームと同じようなもので、難しすぎてクリアできないとつまらないので、モチベーションを確保するためには多少は諦めるのも仕方ないかなとも思いますけどね~。

飛ばしたのは唯一、この固有変数条件だけですしね。

今後しばらくは例によって燃え尽きているので、これの理解にリトライする気はないですが、いつかやってみてもいいかもしれないですね。

続きを読む

tag: 数学 論理学 勉強 能力 証明 モチベーション ブラウザ 数学者 論理

形式論理と自然演繹の紹介

論理学の勉強で自然演繹を学んだので、とうとうご紹介したいと思います。

論理学といえば自然演繹、自然演繹といえば論理学ですね。
いや、そんなにでもないか…。


自然演繹を紹介するとは言っても正直なところ、健全性や完全性の証明とかそんな深入りして紹介するのは大規模過ぎて難しいので、
さらっと規則を紹介したり、具体例を示したり、で済まそうと思いますが。

あと、述語論理での扱いも入れたかったのですが、面倒なのと、固有変数条件あたり熱弁して空回りするクソ解説を生産しそうなので、命題論理にとどめておきました。


自然演繹は論理学の形式的証明の方法のひとつで、自然演繹の他には、
ヒルベルト式と呼ばれる矢印だらけの気色の悪い、仕組みは単純だけど使うのが難しいものとか、

シークエント計算という、これはまだ勉強中なのでコメントしづらいんですが、シークエントというものに対してゴニョゴニョしていくものなどがあります。

ちなみに、自然演繹とシークエント計算は、同じゲンツェンという人が発明したそうです。


さて、今回の記事は前編と後編ではなく、ひとつの記事で完結しますが、執筆には2日間かけています。

続きを読む

tag: 数学 論理学 構文論 論理式 証明 命題論理 直観主義 自然演繹 形式 勉強

順序集合を並べるアルゴリズム

たいした内容ではないのですが、また数学のネタです。

今日は脳みそのコンディションが悪いので、読むに耐えないクソ記事になっているかもしれないですが…。

半順序関係が与えられた集合に対して、その半順序関係の情報に基づいて一列に並べるアルゴリズムについて考えていました。

その集合は“有限”の集合であると但し書きしないといけませんね。
なんか全部、有限であることが前提みたいに考えてしまうのは、情報系の人間の悪い癖だと思います。


さてしかし、普通、全順序関係じゃないと一列に並べられないんじゃないかということなのですが、

ここでは任意の元x,yについて、x <= yという順序関係があるとき、yは必ずxの右(上でもいいからとにかく大きい側の方向を定める)に来るという条件を充足するように、半順序集合の全ての元を一列に並べることを、一列に並べることとします。


つまり、大小比較できない二つの元については、どんな順番でもいいから無理やり一列に並べて、
大小比較できる二つの元については確実に、大きい元が大きい側になるように並べるということです。


このような一列を生成するアルゴリズムを、考えたわけなのですが、アルゴリズム自体はクソ簡単なものです。

そもそも私は難しいアルゴリズムを考案できるほどの脳みそがないので…。

続きを読む

tag: 数学 集合 順序 関係 アルゴリズム 計算 帰納法 証明 地図

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。