ブログ「サイバー少年」

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

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

数理論理学の些細な気づきごと

数理論理学の勉強はもう終わらせてやめましたが、最近ふと気づいてしまったメチャメチャどうでもいい発見があったので、たいしたことではないですから短くまとめます。

すごく小さな発見を、今回は2点ほど用意しております。

(追記ですが、ちっとも短く書けませんでした…)


まず1つ目ですが、xor演算についてです。
数学というより、プログラミングで論理演算をするときに知っとくとためになるかもしれませんね。

xorは、a xor bだったら、どういう意味かといえば、

aとbが両方ともfalseなら結果もfalse、aかbのどちらかだけがtrueなら結果はtrue、aとbが両方ともtrueなら結果はfalse、ですよね。


じゃあ、これがa xor b xor cと3つになったらどうなるでしょうか。
ちなみに左結合、つまり(a xor b) xor cです。

これは、感覚的には2項バージョンの拡張として、a,b,c全てがfalseなら結果はfalse、a,b,cのどれか1つだけがtrueなら結果はtrue、a,b,cのうち2つ以上がtrueなら結果はfalseになる演算だとみなしたいわけですが、そうはならないようなんですね。

反例としては、a,b,cが全てtrueだとしたら結果はfalseになってもらいたいわけですが、a xor bの時点で一回falseになってしまうので、そのfalseとcつまりtrueをxorして、結果はtrueになってしまうと。

ちなみに情報工学ではメジャーな話ですが、x xor trueをかけるとxの反転が得られますから、a xor b xor c xor dのa,b,c,dが全てtrueならa xor b xor c = trueの反転でfalseですね。

偶数個の項なら反例になりませんが奇数個のとき反例になることになります。


また、補足しておくと、ブール代数での話ですが、2項バージョンのときa,bの片方がtrueならtrueというのは、この“片方がtrue”というのが、
「1つだけtrueで残りはfalse」ということなのか、「1つ以上trueがあるが1つ以上falseがある(確実にすべてfalseではないが確実に1つはfalseがある)」ということなのか、という二つの捉え方があって、

これらは2項バージョンにおいては同値ですから違いが曖昧なのですが、3項以上になると違う命題になるので、後者のほうの捉え方も3項以上バージョンでは、また別個に考えられます。

つまり後者の捉え方で、a xor b xor cを、
a,b,c全てがfalseなら結果はfalse、a,b,cのうち1つ以上trueがあって1つ以上falseがあれば結果はtrue、a,b,c全てがtrueなら結果はfalseになる演算だとみなすこともできるわけですね。


さらに、trueでなくfalseの個数に着目した場合、つまりtrueとfalseが出てくる箇所をひっくり返した場合に後者では同値となりますが、前者では違う命題になるので、前者の捉え方のtrueとfalseをひっくり返した捉え方も論理的にはありますが、
まあa xor b xor cを感覚的に捉えるならばfalseの個数で考えるという発想はないと思いますので、この場合は無視しましょう。

だとすれば、上の話での後者の捉え方はどうなのかというのは考えなければなりませんが、このときも前者のときと同様にa,b,cが全てtrueという反例があって、感覚的なものとは違う真理値になります。


感覚的に捉えたものと同じ真理値にしたい場合はどういう論理式を書けばいいのかというと、後者の捉え方の場合は単純に、
(a or b or c) and not (a and b and c)みたいに全ての項をorでつなげたものと、andでつなげたものの否定の論理積をとるだけです。

むしろ、2項の場合はa xor bは(a or b) and not (a and b)と同値なのに、3項以上の場合は同値でなかったことに驚きますね。


前者の捉え方では、2つ以上の項がtrueにならないことを表現するために、あらゆる2つの項の組み合わせについて論理積がtrueにならないことを言わなければならないわけで、

a,b,cなら(a or b or c) and not (a and b) and not (a and c) and not (b and c)みたいに、長いですね。

全ての項をorでつなげたもののあとに、n項ならばnC2個の2つの項の組み合わせの論理積の否定を付けて、論理積でつなげなければなりません。
nandを使えば(a or b or c) and (a nand b) and (a nand c) and (b nand c)みたいに若干、短くなるか…。


というわけで、イメージ通りにやりたい場合はxorでつなげるのでは駄目で、地味に大変な論理式を書かなければならない、という話でした。

そうそう、上記の論理式を書く以外にも、真理値表をもとに論理式の標準形を書くという手段も、一応ありますね。

続きを読む

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日間かけています。

続きを読む

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

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

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

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

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

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


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

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


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


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

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

続きを読む

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

数学の勉強について雑記…

今回の記事は本当に雑記です。
話を体系的に書くという意識がまったく感じられないものであります。

つまりはクソ記事であるということをご承知ください。


私は最近、数学が好きなので、数学の特に数学基礎論という部分について勉強したり考え事していたりするのですが、

…もしかして自分には数学の才能がないのではないかと思ってしまいますね。


まず数学において重要な、発想力が私は大きく欠如していますね。
だから証明しろとか言われても、どのようにすればいいのかわからない。

答えを見ずに自分の力でなんらかの知見を生み出すことができないのは、数学をやる人間としてどうかという感じですね。

無から何かを探すというのは、すごく考えのフィールドが広すぎて、探索しきれないということですね。

まあ、このフィールドの広さの中で知見を生み出すためには、問題を小さく分割してちょっとずつ考えて、
小さな結論をひとつずつ出していって、最後に大きな結論を出すというのが必要になると思うんですが、

なんか私の場合、大雑把になってしまうということですね…。
たぶん、脳のワーキングメモリが足りないので、細分化しても忘れちゃうんですね。

全体を一気に考えないと頭の中のイメージが崩れてしまうというか。
でも、全体を一気に考えるなんて、大きすぎて出来ないということです。

さらに、有限のものに対してはイメージできるとしても、無限のものはイメージ出来ないので、苦手ですね。

たとえば数学的帰納法とかも、苦手です。


さて一方で、すでに答えが書かれてあるときに、答えを読んで理解する力というのは、まあまあかなと思うのですが、

それでも理解力も足りないと、思ってしまいますね…。

いや、なんというか書かれてあるイメージが、日本語に書き下せる場合と、日本語にできない場合があると思うんです。

日本語で考えられるものであればわりと理解できるんですが、日本語にできないものは苦手ですね。
イメージをイメージのままにして考える力がないんですかねぇ…。

続きを読む

tag: 数学 集合 順序 関係 論理学 述語論理 公理 勉強 偉人 ワーキングメモリ

命題論理の意味論まとめ (後編)

昨日は命題論理について勉強したことのまとめとして、記事「命題論理の意味論まとめ (前編)」を書きましたが、

今回はより話が本格的になってくる後編を書いてまいります。


なお前編で、集合{ T, F }の要素としてのT, Fと、論理式の構成要素としてのT, Fは別物だということに注意しなければならないと触れましたが、

今回はそれを区別するために、論理式の構成要素として使うのはT, Fなんですが、
命題論理で使う集合の{ T, F }のほうは{ 1, 0 }に改めます。

もちろん1が真で0が偽なので、そのように読みかえてください。



前編で言った∨, ∧, ¬の三種類の演算があれば、実は残りの→, ↔は代用可能であるということの、理由については言及しませんでしたが、

まずa→bは、aならばbであり、aでなければあらゆる場合に真ということでしたからaかつb、またはaでないのどちらかで、(a∧b)∨¬aといえます。

つまり代用可能です。

しかしよく考えれば、(a∧b)¬aは満たす条件が排他的ですが、わざわざ排他的にする必要もありません。

つまり、aがなんであれbが真ならばこの演算は真であって、ようするにb∨¬aというふうに、よりスリム化できます。


今、日本語でグダグダと説明しましたが、もちろん厳密にそれを言うためには、前編で触れたように表を用いて確認します。

ただ、今の話のように、演算子の日本語としてのイメージを捉えたうえでわかることというのを考えて、最後に表で確認するという方法は悪くないですね。


まあこの先、それでどんどん法則が増えていって、ほとんど法則とかで同値変形していく感じになって、今後は日本語を使うことなんてほぼないですが…。


なお、a↔bについては、aならばbだしbならばa、ということになるので、これも日本語的に考えて(a→b)∧(b→a)となります。

二つの演算は前述のようにで代用できるので、それをで結んでいるだけなので、結局も三つの演算で代用できることになりますね。

続きを読む

tag: 数学 論理学 法則 標準形 論理式 命題 命題論理 意味論

命題論理の意味論まとめ (前編)

記事「集合と写像の勉強まとめ」なんかも書きましたが、
昨年末から論理学の勉強を継続的にしていて、京都大学の教授の方のサイトをずっと見ています。

そういえばこの前、このサイトが書籍化されたらしい本を見かけました。


今回、命題論理、とくに意味論について書かれてある部分を、ようやく読破しましたので、そのまとめとしてお書きしようと思います。


そういえば昔も論理学について放送大学で学んで、記事「記号論理学という学問を知ってみたが」を書いたことがありました。

あのときは今回の命題論理よりハイグレードな述語論理だったんですが、数学的で厳密な定義はおいといて実用的な論理学をやるみたいなものでしたので、

今回は厳密な部分をとばさずに再挑戦しているみたいな感じですね。

記事の書き方も、あの記事ではトップダウン的な説明でしたが、今回はボトムアップ的であると思います。


ところで、意味論とか構文論ってどういうことなのかイマイチ入ってこないのですが、“命題論理の意味論”なのか“意味論の命題論理”なのか、どっちなんでしょうか。

一応、“命題論理の意味論”と書いてあったので、そういうことにしておきますが…。


あと、記事「集合と写像の勉強まとめ」と続編記事「続・集合と写像の勉強まとめ ~ブール代数も~」、
で書いた数学の知識は正直ほとんど使わなかったと思うのですが、最初の根源的な定義をするところで少しその知識がいりますね。


少なくとも演算というのが何なのか理解する必要がありますし、演算というのがなんのか理解するには写像についての理解、ひいては集合とは何か…

数学は少しずつ積み上げる学問なので、学校で嫌われるんですね。


今回、ひとつの記事に収めるつもりだったのですが、すごく基本的な話をしただけで無駄に長くしてしまったので、これを前編として次回、後編を書こうと思います。

お楽しみにしていてください。

続きを読む

tag: 数学 論理学 演算 論理式 命題 命題論理 集合 意味論

続・集合と写像の勉強まとめ ~ブール代数も~

前回記事「集合と写像の勉強まとめ」で、“関係”というものについてまで書きたかったのですが、
疲れて打ちきってしまったので、今回さっさと書いてしまいます。

また、あのあと“ブール代数”とは何かについても勉強したので、それも書きます。

と言っても、ブール代数の定義を見ただけで、使い方とかはまだなので、何なのかよくわからないままなんですけどね。

さて、この記事は前回記事を読んでいることを前提に書きますので、ご注意ください。
続きを読む

tag: 数学 論理学 集合 写像 関係 グラフ 述語 演算 ブール代数

集合と写像の勉強まとめ

また祝日、天皇誕生日です。

前回記事「
シェルスクリプトとかExcelとか」は非祝日に書きましたが、あの記事はあってないようなクオリティなので、まともな記事はなんと三連続で祝日となります。

ちょうど書きたくなる時に祝日がやって来るのか、祝日に書きたくなるのか分かりませんが。


なんて言っていたら、記事を書いている間に日付が変わってしまいました。

クリスマスイブですよ。
私は一体、クリスマスに何をしているんでしょうか。


さて、このごろ論理学についてより学びたいなあと思っていたら、いま京都大学の教授をやっている方の、講義資料を載せているウェブサイトがあって、数理論理学のページを見つけました。

論理学はインターネットにほとんど日本の資料がない中で非常に貴重です。

このサイトを見て勉強していきたいと思っているのですが、内容はいくつかの章に分かれていて、最初の章は論理学というより集合論についてでした。

大学でやる数学の基本みたいな感じですね。

まあ、これを前提知識にしないと、論理学には太刀打ちできないということでしょう。


というわけで、最近はそのページで集合と写像の勉強をしました。
今回は、そのまとめをメモします。

しかし、文章量的にはめちゃくちゃ短いのですが、読むのに時間が掛かりますね…。
だいぶ難しいと私は思いましたが、そうでもないのでしょうか。

続きを読む

tag: 数学 論理学 集合 写像 順序組 グラフ

円柱を傾けて転がすことについて考察

文化の日スペシャルということで数学ネタいきます。

この前ふと思ったのですが、円柱状のもの(ペットボトルのフタでもガムテープでもドラム缶でもなんでも)を、まず机に立てているとするじゃないですか。

そして、この円柱を少しだけ直立状態から横に傾けますよね。
次にその傾きを保ったまま円柱の底の円の円周にそって転がします。

するとこの円周が机の面と触れた場所というのは、円を描くということに気づきました。

いや、文章じゃよくわからないかもしれませんが、すごく当たり前なことを書きました。

みなさんも絶対にそういう経験をしていると思います。


ためしに、トイレットペーパーの芯でも使って実験してみてください。
芯を立てたあと、少し傾けます。

円周にそって転がすというのが手作業ではなかなか難しいかもしれませんが、これを上手くできれば、円周は円を描いて地面に接するはずです。


それでまあ、またまた当たり前なことを書きますが、円柱を傾けたわけですが、この傾き度合いによって、円周が描く円のサイズが変わります。

もうちょっと詳しく書くと、円柱を傾けるほどに描く円のサイズは大きくなります。

これも実際にやってみてみれば、こんな簡単なことを言っているだけかというのがわかります。


そこで、今回は、なぜ円柱の底の円の円周が円を描くのか、

そして円柱を傾ける度合いと描く円のサイズはどのような関係があるのかを考えてみたので、記事にします。

続きを読む

tag: 数学 図形 三角関数 角度 極限 無限 回転

次のページ

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