Tweetちょっと代数も勉強しておくべきかと思い、群論について読んでいたら、「置換群とゲーム」という節があった。Billion、あみだくじが紹介されていたので、ゲームというよりパズルなのだが、まあいい。あみだくじだが、どのようなあみだくじをつくったことがあるだろうか。縦棒が何本かあり、水平線で2つの縦棒を結ぶ線を書き加えるのが一般的だろうか。あみだくじは阿弥陀如来に由来していて、人間にはあみだくじはちょっと見ても分からないが、阿弥陀如来には一瞬で分かるはずである。阿弥陀如来にとっても手ごたえがあると思えそうな、もっと複雑なあみだくじを作ってみた。いう「あみだくじ」を昔から作っているのだが、ちゃんとあみだくじとして機能しなかったことはない。機能するとは、上のn箇所と下のn箇所はちゃんと1対1対応するということだ。上のあみだの場合、ABCDのどれも下のどこかにたどり着き、かつ必ず異なるところにたどり着く。出口での順番は、ABCDの置換に必ずなる。証明については書くのが面倒なので省略するが、通常のあみだくじの証明と同じで、鳩ノ巣原理を用いればできる(はず)。いま世の中に存在するあみだくじアプリは単純過ぎて面白味がない。このような線の入れ方をする「あみだくじジェネレータ」を作ってみよう。Python本書は、2部構成になっている。Pythonプログラミングの基礎1章から6章までで、152ページある。この部分は、本当にPythonプログラミングの基礎的な説明である。Pythonを知らない、さらにプログラミングも知らない人が対象の説明である。多くの人は、第?部はパスして良い。処理の自動化7章から18章までで、512ページまである。360ページなので、平均1章30ページ。各章ごとに1つの技術分野を紹介する感じで、その技術を利用すると横着ができるという風に話が進んでいく。GUIと言う感じで多岐にわたるのだが、1つについて30ページしか説明がないので、導入、概要の説明で終っている。Pythonの基本部分はたいして大きくないので習得は容易と思うが、膨大なモジュールが存在し、一部のモジュール、たとえばNumPyなどは、標準拡張という感じで使うのが当たり前のようになっているが、それ以外については、必要になったら調べて使うという感じであろう。本書は、できるだけ様々な分野について、横着する方法という切り口でPythonのモジュールを紹介した総合案内パンフレットみたいな感じである。本書を読んだだけではモジュールがどんなものかおぼろげにイメージが湧く程度であり、これをスタート地点として紹介されている各モジュールのサイトなどを頼りに本格的に勉強して使えるようになるだろう。Tweetこのところ、とても忙しくなって、書くペースが落ちてしまった。いうのも、R&D部門が新しいオフィスに移動作業中だからなのだ。真新しいビルが用意され、そのビルの一室に入ることになった。場所は、なんと、電気通信大学の100周年記念キャンパスの中になった。キャンパス名に100周年記念キャンパスということで、どこか東京の郊外、不便なところにキャンパスが出来たわけではなく、元のキャンパスと道一つ(甲州街道)隔てた場所にある。電気通信大学(電通大)については、いまさら説明することもないだろう。Wikipediaで調べるのも良いと思う。アンリツの前進である安中電機製作所内に1916年にできた無線講習所が本来の起源だと思うが、公的機関としてスタートしてから100年を100周年ということになっている。無線が一気に世界の注目を集めたのはタイタニック号の沈没により、無線の重要性、情報通信の重要性が認識されたのだった。それ以来、無線&通信はどんどん進歩し、今のインターネット時代を支えている技術である。有線の通信だけだったら、インターネットはここまで幅広く使われることはなかっただろう。歴史的なことは、電気通信大学の同窓会である目黒会ウェブマガジンの記事が詳しい。いうことで、ITの根幹の技術をずっと担ってきた電通大の中に研究拠点を設けて、新しいことができるかなと思っているところだ。キャンパス、建物はこんな感じで、ずいぶん立派なんだ。2017年春に竣工し、この春から使い出したので、ピカピカである。新しいだけではなく、実は、色々面白い仕掛けというか、いろいろあるのだが、今回は1つだけ紹介しよう。ネット上でも話題になっている通り、ここの1階には電子パーツを売る24時間営業のコンビニ・セブンイレブンが入っている。夜に電子部品が欲しいとなったら、秋葉原まで行かなくても、調布で入手可能なのだ。甲州街道に面しているので、とても分かりやすいと思う。実は、これだけではなかったのだが、それについては別の機会に紹介しよう。TweetPythonには、様々なモジュールがある。それを1つずつ毎週紹介すると何年も話が持ちそうだが、こちらの気力が持ちそうにない。実際、それほどたくさんのモジュールが存在するのだ。Excelをいじるためのモジュールもいくつかあるようなのだが、今回はopenpyxlを紹介する。Documentationという立派なドキュメントがある。英語のドキュメントで、311ページもあるので、真面目に読むのは大変だ。filesがもう少し楽そうなドキュメントである。実際には、東邦大学理学部のPythonからExcelファイルをいじるopenpyxlあたりを出発点としてあれこれ探して次のプログラムをでっち上げただけである。Tweet暑くなってきて頭が回らない。いうことで、カフェに逃げ込んで、こんなものを食べながら、どうでも良いことを考えた。すると、ついこんなイメージが頭に浮かんでしまった。画像の周りにいっぱい罫線ができている。これは、Excel、OpenOfficeのCalcとか、その類だ。いうことで、Excelの各セルに、元のイメージファイルの画素を対応させてみよう。アンパンの画像は、元は300x300だったのだが、いかにもセルに色を付けた感が出るように、64x64とそれなりに粗く(小さく)した。Excelだから当然VBAのプログラムを組めばよい、と思いたいが、VBAのプログラムは作りたくない。このところ、ずっとPythonをいじっているのだが、星の数ほどあるPythonのモジュールの中には、Excelのモジュールも当然あるはずだ、きっとある。いうことで、次回までに作ってみよう。アンパンは美味しかった。ディープラーニングというと、画像処理関連がやたらに多いが、それ以外の分野もある。その中でも、自然言語処理は非常に大きな、そして重要な分野である。ことばをコンピュータで扱おうとすると、画像とは違った、あれこれ面倒なことがいっぱいある。部分の説明は非常に短く、いきなり読もうとしても用語が分からない、どんなツールがあるのか、サンプルデータがあるのか、だいたい分からないことだらけになる。この本は、Pythonを使って、自然言語処理の基本を紹介している。この本、発行が2010年とかなり古く、原書は、2009年になっている。そのため、Python3ではない。Toolkit)という、Pythonのツールキットである。このツールキットは、アメリカのアイビーリーグの1つ、ペンシルベニア大学にて作られたものだ。以上は前置きで、これから肝心なことを紹介しよう。ソフトだけでなく、書籍の方も、ネット上はちょこちょこと更新されているように見える。これらは、オープンであり、自由に使えるので、とても助かる。本は、文字だけでなく、プログラムや実行例が多数載っており、これらを自身のPython上で確かめるには、オンラインの書籍からコピペをいっぱいすることで、確認ペースも上昇する。オンライン版は文章の部分は英語であるが、肝心なのはプログラム、実行例などであろう。それほど大きくは変わっていないようなので、英語をどうしても読みたくない場合には、英語版を見ながら、文章を読むときだけ翻訳書に頼るという方法もある。結局面倒になるので、全部オンラインだけで済ませるのが効率がよく、かつお金もかからない。英語を勉強するのではなく、英語で勉強しよう。金もかからず、技術も身に付き、情報はいっぱい集まる。Tweet前回、SATについて簡単過ぎる紹介をした。98ページ)が相当詳しい。SATには、制御文がない。for,...などの文が存在しない。存在するのは、定義文、条件文だけである。定義の範囲で、条件を全て満たす変数の値を探すだけである。条件を満たす解が1組以上ある場合もあるが、解の個数を、解なし(0)、解1(ユニーク解)、複数解(多重解)の区別もしてくれたりする。こんなSATは、どうやって問題を解いているだろうか。結論から言うと、最終的には虱潰しをやっているだけである。途中で検索を省略できる箇所、早々に決まってしまう箇所、選択肢が非常に狭められる場合などを考慮し、相当高速に虱潰しができるようになっている。それでも、さすがに25x25のナンプレを調べつくすのには相当の時間がかかると予想した。0m0.600sであった。組み合わせ問題なので、サイズが大きくなると急激に時間がかかるようになるものだが、マスの総数の増加割合よりやや時間がかかる程度であった。これなら、25x25も解かれてしまうかも知れない。25x25のヒント数の少ない問題を作るのは、非常に困難で、コンピュータリソースをやたらに食う。0m0.332sという短い時間の間に解かれてしまったのだった。最近のSATの性能向上には目を見張るものがある。SATは、明示的な、手筋のような解き方をプログラミングする必要がないので、解法アルゴリズムがまったく思いつかないような場合に有効な方法だ。このまま高性能化が進むと、アルゴリズムを考えず、とりあえずSATに探させれば良い、と考えるようになりそうだ。いや、SATの開発者は、効率向上のために、ものすごくアルゴリズムを最適化しているはずだ。Tweetナンプレ(あるいはSUDOKU)というパズルをご存知だろうか。通常は、9x9の問題なのだが、つい、25x25の問題を作った者がいる。問題に最初から示されている数のことをヒントと言い、その個数をヒント数と言うのだが、以下がヒント数146(現在世界最少)の問題である。.|+--------------+--------------+--------------+--------------+--------------+ナンプレの問題を解くプログラムはネット上にゴロゴロ転がっているのだが、大きいサイズに対応したソルバーはなかなか存在しない。小さいときには、手筋を実装せず、単に再帰だけでも十分高速に解けるのだが、それではサイズが大きくなると直ぐに破綻するはずだ。この問題、なかなか解いてくれる人がいない。ナンプレに限らないのだが、パズルの多くは、限られたルールとヒントから解くのである。いう問題のことを、制約充足問題と言う。制約充足問題というと、すぐに思いつくのがSATであろう。いうことで調べると、SATでパズルを解く研究をしている神戸大学情報基盤センターが直ぐに見つかる。いうことで、上の25x25の問題を送ってみた。検索このアーカイブについてこのページには、2017年7月に書かれたブログ記事が新しい順に公開されています。前のアーカイブは2017年6月です。次のアーカイブは2017年8月です。最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。