ふれっしゅのーと

ふれっしゅのーと

趣味に生きる30代エンジニアが心に移りゆくよしなし事をそこはかとなく書きつくるブログ

地名って面白い!!!

地名って面白いですよね!

私が地名好きになったのは小学生か中学生の頃だと思います。最初の頃は他の男子らと同じく地図帳で「エロマンガ島」などの珍地名を見て「そんな変な地名があるのか」などと笑っていたのですが、高校生の頃から一歩踏み込んで「膳所(ぜぜ)?何故そんな変わった読み方をするの?一体どういう歴史があるの?」と深みにはまりだし、気付けば完全に地名沼の住人になっていました。専門分野は滋賀の小字地名です。よろしくお願いします。

 

最近、通勤電車に揺られながら、柳田國男の『地名の研究』を読んでいました。

地名のここが面白い」という地名研究のエッセンスが詰まっている良書です。ぜひとも皆さんにも読んでいただき、あわよくば地名沼の住人を増やしていきたいのですが、困ったことに本書の大半が「ドウメキ地名は川の近くに多い」「フケ地名は低湿地」など甚だマニアックな内容であり、あまつさえ文体も堅苦しいので、地名初学者には決しておすすめできません。

そこで今回は『地名の研究』の概論部分の内容を私なりに噛み砕いて、地名研究の面白さの一端を紹介してみようと思います。

 

地名の誕生

地名は総じて「生活上の必要」によって発生します。

ご先祖様がどういう動機でその地名を作ったのかを研究することで、古文書にも残っていないような庶民の多種多様な暮らしが見えてきます。柳田國男は地名から「多くの前代生活を闡明」して「人生を明らかにすることが実は地名を研究する唯一の目的」であると述べています。どうです?ワクワクしてきませんか。

柳田國男の分類に従い、地名を発生順に3つに大別して説明していきましょう。

1. 利用地名

f:id:fffw2:20180318011216p:plain

狩猟や採集など普段の暮らしの中で利用されることが多い土地に対する地名です。

家族や仲間に場所を伝える必要が出てきたときに初めて命名されます。いちいち「あっちのほうにある2つの川が合流してるところ」などと説明していては面倒です。そこで「川合」という地名がつけられます。川の本数が多ければ、それらを区別するために「一ノ沢」や「二ノ俣」といった地名がつけられることでしょう。植生が特徴的であれば「三本松」や「杉沢」といった地名をつけるかもしれません。

村人が川の近くで炭を焼き始めると「炭焼沢」や「灰谷」といった地名が生まれ、やがて橋が架けられると「橋本」という地名が生まれ、観音様がまつられると「観音谷」といった地名が生まれます。このように利用地名は様々な時代に様々な理由によって発生します。

重要なのは、他人とのコミュニケーションでの利用を目的とした地名なので、誰もが納得できるような自然な名前でないといけないという点です。

早い話がわが家の犬ころでも、せっかくハンニバルとか、タメルランとかいうりっぱな名をつけておいても、お客はことわりもなくその外形相応に、アカとかブチとか呼んでしまう。ゆえに一部落・一団体が一の地名を使用するまでには、たびたびそこを人が往来するということを前提とするほかに、その地名は俗物がなるほどと合点するだけ十分に自然のものでなければならぬのである。地名にほぼ一定の規則のあるべきゆえんであって、かねてまたその解説に趣味と利益とのあるべきゆえんである。

2. 占有地名

f:id:fffw2:20180318031153p:plain

土地の開発が始まり、人々が土地を占有することで生まれた地名です。利用地名との大きな違いは、明確な「範囲」が定まっているという点です。

開墾が進み、山や原野が細かい区画に線引きされると、一気にたくさんの地名が必要になっていきます。しかも山や原野の特色は「ともすれば千篇一律に堕して、二つあっては弁別にさしつかえる場合が多かった」ため、地名のネーミングに「若干の機知と意匠とが入用」となります。土地の占有者のセンスが光ります!

土地の用途を表す言葉を使ったり、地形を表す言葉を使ったり、開墾者の名前を使ったり、あれこれ工夫してくれたおかげで、地名から当時の経済活動や地形的特徴が見えてきます。

でも、できることなら占有者は新しい地名を考えたくありません。面倒なので。そこで、もともと地名がある場合はそれを流用しようとします(踏襲性)。

例えば、表面がつるつるで珍しい岩があり、その岩のことを村人たちが「鏡岩」という利用地名で呼んでいたとします。その岩を含む山を占有した人は「ちょうどよい岩があるからこれを山の名前にしちゃおう」と、元々ある地名を踏襲して、山の名を「鏡山」といった占有地名にします。そして「鏡山」を有する村を治めた権力者が、さらに地名を踏襲して、村の名前を「鏡村」にすることもあるでしょう。このように地名は踏襲の過程でどんどん範囲が広がっていくことがあるのです(拡充性)。

f:id:fffw2:20180319233236p:plain
図:地名の拡充性(内包する地名を踏襲することで地名の範囲が広がっていく)

千葉県千葉郡千葉町大字千葉(現在の千葉県千葉市中央区の一部)なんかは、地名の広がりの各過程が残っている大変わかりやすい例です。最初は下総台地の端にある崖を「ツバ」という地形語*1で呼んでいたのが、草が多く生い茂ってることから「千葉」という漢字になり*2、千葉郷になり、千葉郡になり、千葉県になったのでしょう。大体、郡衙(古代の郡役場)や県庁が設置された場所の地名が上位の地名に採用されます。

地名が大きな地域に広がっていったり、漢字や発音が変わってしまったりすると、もはやその地名から当初の意味を見出すのは至難の業となります。だからこそ解き応えがあって面白いのです。柳田國男はこれを「不明に帰しやすき意味を討究するおもしろみ」と述べています。

過去のある事実が湮滅にひんして、かろうじて復原の端緒だけを保留していたのである。もう一度その命名の動機を思い出すことによって、なんらかの歴史の闡明せらるべきは必然である。だから県内の地名はどのくらい数が多くても、やはり一つ一つ片端から、その意味を尋ねてゆく必要もあり、またその興味もあるわけである。

3. 分割地名

f:id:fffw2:20180320005055p:plain

従来の地名を分割することで生まれた地名です。占有が進んで地名がある程度増えてくると、方位・上下・大小・新古などの区別によって、従来の地名を分割して命名する手法が取られるようになります。例えば、人口が増えてきたので村を3つに分割するとなると、「北村」「中村」「南村」といった地名が生まれます。

京都市西京区には「桂艮町」「桂巽町」「桂坤町」「桂乾町」という珍しい地名があります。これは旧千代原村の分割地名であり、桂千代原町を中心に、艮(うしとら=北東)、巽(たつみ=南東)、坤(ひつじさる=南西)、乾(いぬい=北西)に分割したことで生まれた地名です。東西南北で分割してない点が面白いです。ちなみに「桂巽町」はさらに分割されていて「桂南巽町」という地名もあります。

 

 

以上が地名の誕生の基本です。

この記事を読んで「うちの地名は原野だった頃の地名の名残かな?」などと、身近な地名から先人の暮らしにちょっとでも思いを馳せた貴方は、もう地名沼に片足を突っ込んでいます。おめでとうございます。

さあ地図を広げて時間旅行に旅立ちましょう。

 


*1:地形を表す口語を「地形語」と言います。太古の日本は山野の複雑な地形を表す語彙に富んでいましたが、都に住む人が山野に興味が無かったので、多くの地形語は方言として淘汰されて、文献には残っていません。類似地名や同語源単語から「昔はこういった地形をこう呼んでいたのだろう」と類推することができます。例えば「燕」「椿谷」などの小地名を集めると崖がある場所に多いことがわかり「ツバ」は崖を表す地形語だったのだろうと推測できます。こういった地形語の考察もまた地名研究の魅力の一つです。

*2:平安時代の百科事典『和名類聚抄』に「原野多ク葛藤ノ繁茂セル」とあります

「猫はこたつで丸くなる」の真実

『猫飼好五十三疋』のハンカチを眺めていたときに、とある発見をしたのでご報告。

f:id:fffw2:20180220193912p:plain

『猫飼好五十三疋』(みょうかいこうごじゅうさんびき)は江戸時代の猫好き歌川国芳が1848年に描いた『東海道五十三次』のパロディー作品で、東海道の宿場名になぞらえた猫ダジャレ五十五連発*1がちょっと面白いです。

 

日本橋:二本だし (鰹節2本)

f:id:fffw2:20180220200441j:plain

 

浜松:はなあつ(鼻が熱い)

f:id:fffw2:20180220200425j:plain

 

 

そして、私の暮らす「草津」は…

 

こたつ

f:id:fffw2:20180220200410j:plain

 

…ウーン

 

 

ダジャレの出来はさて置いて、私が違和感を覚えたのは猫の位置。

 

こたつの中 じゃなくて こたつの上 で丸くなってる!

 

江戸時代の他の絵画も見てみましたが…

f:id:fffw2:20180220203945p:plain
喜多川歌麿『絵本四季花 下』より

 

やっぱり、こたつの上で丸くなってる。

 

童謡『雪』に「犬は喜び庭駆け回り 猫はこたつで丸くなる」という有名な歌詞がありますが、もしかしてあの猫もこたつの上で丸くなっていたのでしょうか?(寒くないのかな)

『雪』の初出は1911年の『尋常小學唱歌 第二學年用』。当時の教科書の解説書を見つけたので、紐解いてみました。

雪やこんこ霰やこんこ。降つても降つてもまた降りやまぬ。毎日々々降りつゞいて居る。この雪の降るのに犬は喜んで庭を駈けまはつて居る。猫は火燵の上で丸くなつてゐる。如何にも寒さうな恰好してゐるのである。
(1913年『小学校各教科用書に見えたる韻文の摸写的詳解』p.493より)

いました、こたつの上です!

今までずっと猫はこたつの中に潜り込んでるものだと思ってました。

 

調べてみたところ、この100年で猫の習性が変わったなんていうことはなく、変わったのはこたつの方でした。現在のような電気ごたつが普及したのは1950年代。それまでのこたつは、炭火の火鉢や囲炉裏の上に木製の櫓を組んで布団をかけたもので、天板はありませんでした。それゆえ暖められたふかふかの布団の上で猫は丸くなっていたんですね。

 

ちなみに、現代の猫は電気ごたつの中に潜り込み、丸くはならず、伸びます

Google画像検索で「猫 こたつ」と調べてみると、だらしなく伸びた猫たちの写真が出てきて癒やされます。猫が丸まるのは表面積を小さくして熱の放散を抑えるためなので、電気ごたつの中では暖かすぎてむしろ体を広げて熱を逃がすようです。

*1:起点の日本橋+宿場53次+終点の京で、55です。

大津事件の小説に出てきた登場人物418人まとめ

前回、吉村昭ニコライ遭難』を読んで、その登場人物の多さに驚き、教科書に絶対載らないであろうマニアックな登場人物を少しだけ紹介しました。

名も知られぬ明治時代の庶民たちにも大津事件にまつわる様々なドラマがあるというのは面白いものです。

今回は資料編ということで、吉村昭ニコライ遭難』の登場人物を文中から一人ひとり丁寧に抜き出していき、一覧を作成してみました。インターネット初出の人名だらけです。自分の先祖の名前を調べているときなんかに、この記事がたまたま検索に引っかかって役に立つなんてことがあれば幸いです。

正直、軽い気持ちで一覧を作り始めたんですが、予想を遥かに上回る人数でした。もう二度とやりません。

続きを読む

大津事件の小説を読んでみたが登場人物が多すぎる

吉村昭ニコライ遭難』を読みました。

明治時代に起きた「大津事件」をテーマにした小説なのですが、筆者の調査力が凄まじく、国立公文書館、裁判所、地方の図書館などに眠る資料から個人の手記まで徹底的に調べまくったようで、とにかく情報量が多い!!

ニコライ一行を乗せた人力車はどういう順番で走っていたか、お付きの人たちはそれぞれどこの旅館に泊まったか、ニコライがいつどの店で何を何円で買ったか、その店の店主はどんな人生を歩んできたか、等々、

「えっ!?その情報要る!??」

と突っ込みたくなるぐらいの詳述っぷりです。

 

大津事件とは

明治24年、ロシア皇太子ニコライが日本を訪問することになりました。普段より帝国ロシアの侵略に脅威を感じていた日本は、これを期に将来の皇帝と仲良くしておこうと国賓待遇でニコライを迎えます。長崎、鹿児島、神戸、京都と楽しく観光してまわり、続いて大津に琵琶湖を見に来ました。しかし、県庁で昼食を食べて京都に戻ろうとしたときに、事件が起こります。警護を担当していた巡査の一人・津田三蔵が突如ニコライに斬りかかったのです。日露関係の悪化を憂慮して政府の重鎮は大慌て。明治天皇は夜も眠れず。

政府は大逆罪で津田を死刑にしようと裁判所に圧力をかけます。

旧刑法第116条
天皇三后皇太子ニ対シ危害ヲ加ヘ又ハ加ヘントシタル者ハ死刑ニ処ス

しかし旧刑法第116条は日本の皇族に対してしか適用できず、たとえ外国の皇太子に危害を加えたといえども、法律上は民間人の殺人未遂と同様に扱わなくてはいけません。大審院長・児島惟謙は政府の圧力に屈せず、法律通り津田に殺人未遂で無期徒刑の判決を下します。こうして「司法権の独立」が守られました。

 

教科書に絶対載らないマニアックな登場人物ベスト3

吉村昭ニコライ遭難』には、伊藤博文陸奥宗光青木周蔵井上馨松方正義西郷隆盛など有名人がたくさん出てくるのですが、中には教科書には絶対載らないであろう超マニアックな登場人物も出てきます。いや、むしろマニアックな登場人物が大半を占めているといっても過言ではありません。

私のお気に入りのマニアックな登場人物をランキング形式で紹介していきます!

第3位:北賀市市太郎 & 向畑治三郎

ニコライが襲われた時に近くに居合わせた人力車の車夫です。
普段は常盤ホテル(現・京都ホテルオークラ)の専属車夫として働いていました。

ニコライが襲われた時、咄嗟に向畑が犯人を引き倒し、北賀市が犯人のサーベルを奪って頭部と背中を斬りつけました。この二人の車夫の活躍がなければ、ニコライは軽傷では済まず、日露関係は最悪の事態に陥っていたかもしれません。

特に興味深いのは彼らの後日談です。
ニコライ遭難』第9章と第17章に二人の顚末が描かれています。

ニコライを救った褒美として、日本政府から勲八等に叙せられて、白色桐葉章と年金36円を与えられました。年金36円は当時の一般家庭の一年分の生活費に相当する額です。それだけでなく、ニコライから直々に小鷲勲章と恩賞金2500円と年金1000円を与えられました。年金1000円は庶民にとって想像もできないほどの途轍もない金額です。

ニコライから尋常でない額のお金をもらったときに撮影された二人の写真がこちら。

f:id:fffw2:20180218000158p:plain
左から順に北賀市と向畑です。( 大津事件 - Wikipedia より)

突然大金持ちになった北賀市は、地元石川県江沼郡役所の指導の元、土地を買い、地主になりました。明治33年には郡会議員になり、国難を救った英雄として扱われていましたが、明治37年日露戦争勃発に伴い、国賊扱いに一変。村八分にされ、大正3年に54歳で逝去。

突然大金持ちになった向畑は、もらった金で女遊びにふけってしまいました。そしてお金を使い果たし、最終的には落ちぶれて紙屑拾いになります。大正14年には少女暴行事件を起こして新聞沙汰にもなり、勲章も剥奪。昭和3年に75歳で逝去。

おい向畑……

 

第2位:斎木

七条停車場を出発したばかりの神戸行きの汽車に飛び乗って、非常ブレーキを掛け、ロシア艦隊の軍医らを乗せた臨時列車との正面衝突を回避した駅員です。

ニコライの治療のためにロシアの軍医らが臨時列車で神戸から京都に来ることになり、鉄道庁が全線に対して

神戸ヨリ京都ヘロシア軍艦侍医ヲ送ル特別汽車ノ通過マデ、各汽車ハ、ソノママ最寄リノ停車場ニ停車セヨ

と命ずる電報を発しましたが、タイミング悪く、七条停車場(現・京都駅)では名古屋発神戸行の第二十四号汽車が多数の乗客を乗せて今まさに発車したばかりでした。

電報掛から連絡を受けた斎木駅員は走ります!

線路に飛び降り、汽車の後部に飛びつき、非常ブレーキを掛け、本線に出る寸前のところで汽車を停車させました。その直後、黒煙をあげて進んできた臨時列車が七条停車場に入線。辛うじて正面衝突を免れることができました。

下の名前すら明らかになっていないただの駅員さんですが、この人の活躍がなければ、多数の人命が奪われる大惨事になっていたかもしれません。

 

第1位:西村ツル

ニコライが襲われたときに吹っ飛んだ帽子を、側溝で見つけて拾い上げるも、いらないのでとりあえずそのへんの家の前に帽子を放置した13歳の少女です。

こんなやけに細かい情報、一体何に残っていたんだ…

f:id:fffw2:20180218040610p:plain
昭和5年『明治大正昭和大絵巻』より)

確かにニコライの帽子が吹っ飛んでるけど、まさかこの帽子の行方までも追跡するとは。吉村昭、何者なんだ。

ちなみに、西村ツルによって園善兵衛の家の前に放置された帽子は、その後、人力車の車夫が回収して滋賀県庁の役員に提出し、滋賀県庁の役員から皇太子の手に戻されたそうです。

 

 

この他にもマニアックな登場人物はたくさんいるので、いつかまとめてみようかな。資料的な価値もありそうなので。

[追記] まとめました

 

吉村昭の作品を初めて読んだのですが、他のもこんな感じなんですかね。小説を書く前の資料調査に一体何年掛かっているのでしょうか…

 ニコライ遭難(吉村昭)

草津七福神めぐり〜遺伝的アルゴリズム編〜

新年早々引いたおみくじが「末吉」という冴えない結果だったので、何とかして今年の福を招かなくては…と思っていたら、縁起の良さそうなイベントの告知が目に留まりました!

草津七福神めぐり』

草津宿界隈の七福神にゆかりのある神社や寺社を巡って、スタンプを集めるという歴史散策好き垂涎のイベントです。

目的地は下記の通り。

  • 0. くさつ夢本陣(スタート&ゴール)
  • 1. 養専寺(布袋尊
  • 2. 真願寺(寿老人)
  • 3. 立木神社(弁財天)
  • 4. 道灌蔵(大黒天)
  • 5. 小汐井神社(恵美須天)
  • 6. 伊砂砂神社(福禄寿)
  • 7. 神宮寺(毘沙門天

真願寺や神宮寺など初めて聞くマニアックな場所もあるので、まずは目的地を地図にプロットしてみました。

おおむね旧東海道・旧中山道沿いに並んでいますが、よく見ると寺はメインの通りから外れた裏路地に建っており*1、ただ単に旧街道を真っすぐ行けば全部巡れるというわけではなさそうです。

 

では、どのようなルートで七福神を巡るのが最も効率的でしょうか。

 

出発地である「くさつ夢本陣」でスタンプラリーの台紙をもらい、七福神を祀るスタンプポイントすべてを一度ずつ訪問した後、再び出発地の「くさつ夢本陣」に戻ってきて粗品をもらう。

このときの総移動距離が最短の経路を求める問題…

これってもしかして…

巡回セールスマン問題」(Traveling Salesman Problem)!!?

 

巡回セールスマン問題
セールスマンが n個の都市すべてを一度ずつ訪問して出発地に戻ってくるときの移動距離が最小になるような経路を求める組み合わせ最適化問題

 

いや、ここは「巡回七福神問題」とでも呼ぶべきでしょうか。
ちょうど略称も本家と同じ「TSP」ですし。

 

では、解いてみましょう。

今回の「巡回七福神問題」は次のようなグラフで表現できます。

f:id:fffw2:20180120102901p:plain

丸囲みの番号は「訪問場所」、灰色の線は「道」を単純化したものです。グラフ理論で言うところの「ノード(節点)」と「エッジ(辺)」です。

 0 がスタート地点のくさつ夢本陣です。ここを出発して、 1〜7 の七福神を訪問したのち、再び 0 に戻ってきます。

2 点間の道のりは GoogleMap で経路検索して調べられます。例えば、1:養専寺 と 3:立木神社 の道のりを調べると、270m です。これを d_{1,3} = 270 と表現することにします。*2

(…10分後…)

すべての道のりを調べ終わりました。

 d_{0,1} = 400, d_{0,2} = 220, d_{0,3} = 500, \ldots
と書き下していくと非常にわかりづらいので、行列で書きます。

f:id:fffw2:20180121213143p:plain

 i j列の成分が、訪問場所 iから訪問場所 jへの道のりを表しています。

 

これで準備は整いました!

 

経路の組み合わせを考えていきましょう。

(i) 0→1→2→3→4→5→6→7→0 というルートを選ぶ場合
  d_{0,1}+d_{1,2}+d_{2,3}+d_{3,4}+d_{4,5}+d_{5,6}+d_{6,7}+d_{7,0}\\\ = 400+450+700+280+850+700+1400 \\\ =4780
道のりは4780m

(ii) 0→1→2→3→4→5→7→6→0 というルートを選ぶ場合
  d_{0,1}+d_{1,2}+d_{2,3}+d_{3,4}+d_{4,5}+d_{5,7}+d_{7,6}+d_{6,0}\\\ = 400+450+700+280+650+1400+1300 \\\ =5180
道のりは5180m

…って、これ何回やらなきゃダメなんです???

すべての経路の中から総当たりで最短経路を求めようとすると、
訪問場所が n個のとき、 \displaystyle \frac{(n-1)!}{2}通りの経路を考えなくてはなりません。*3

訪問場所が20個でも、
経路は全部で60,822,550,204,416,000通りです。約6京。
1秒間に1億通りの経路を計算できるコンピューターを用いても、約19年掛かります。
階乗の力、恐るべし。

七福神問題では、スタート地点も含めてたった8箇所をめぐるだけなので、
 \displaystyle \frac{(8-1)!}{2}=2520通りの経路を考えるだけでよく、これぐらいならコンピューターの力を使えば総当たりでも解けてしまうのですが、いつか西国三十三所をめぐることもあるかもしれないので、訪問場所が多い場合にも使える一般的な解法を考えておきたいと思います。

 

総当たりで厳密な最短経路を求めるのは、現実的な時間では不可能ですが、必ずしも厳密とは言えないが最短経路にある程度近い解 であれば、いくつかのアルゴリズムで導出できることが知られています。*4

今回は、数あるアルゴリズムの中でも、私のお気に入りの「遺伝的アルゴリズム」を使って解いてみようと思います!使いこなせる自信があるのが「遺伝的アルゴリズム」ぐらいだからです。

 

遺伝的アルゴリズム

遺伝的アルゴリズム」は、1975年にミシガン大学ホランド先生が考案したアルゴリズム*5です。生物の進化の手法を情報学に組み込むという非常に面白いアルゴリズムです。

私は大学2回生のときに授業で「遺伝的アルゴリズム」を習い、「なんだこの斬新なアルゴリズムは!!!!?」と衝撃を受けました。

適用範囲は幅広く、電子回路設計、物資配送計画、新幹線N700系のフォルムの最適化スーパーマリオブラザーズの1-1のクリアピカチュウの歩行学習など、多種多様な問題に対して適用されています。

 

大雑把に言うと、次のような流れのアルゴリズムです。

  1. ランダムに個体群を用意します。
  2. 二人ずつのペアを作り、親の遺伝子を受け継いだ子供を生み出します。
  3. 強い子供たちが生き残り、弱い子供たちは死にます。
  4. 強い子供たちが次世代の親になります。
  5. 2〜4を繰り返すと最強の個体ができあがります。

「ふーん、よくある生物の話だよね。これでどうやって問題を解くの?」
…と思うことでしょう。私も思いました。

なんと解きたい問題を遺伝子に乗せるのです!

調べたい組み合わせの候補を「遺伝子」で表現し、その遺伝子配列を評価し、最適解に近いほど「強い」個体であると考えます。すると、交雑・淘汰を繰り返したら…
自然と最適解(に近い解)が生き残るのです!生命の神秘!!

実際に遺伝的アルゴリズムを使ってみましょう。

 

1. ランダムに個体群を用意します。

七福神 1〜7 をめぐる順番を遺伝子配列で表した個体群を用意します。

Aさんの遺伝子配列:7143526
Bさんの遺伝子配列:4175623
Cさんの遺伝子配列:5762413
Dさんの遺伝子配列:7346215

スタートとゴールは 0 で固定なので、省略しました。

それぞれの経路で歩くときの経路長を d_{i,j}を用いて計算すると、次のようになります。(スタート(0)→最初の七福神、最後の七福神→ゴール(0) の道のりも含む点に注意)

Aさんの遺伝子配列:7143526(6330m)
Bさんの遺伝子配列:4175623(5100m)
Cさんの遺伝子配列:5762413(5320m)
Dさんの遺伝子配列:7346215(6930m)

この中で経路長が最短なのはBさんなので、Bさんが一番「強い」個体であるということになります。

 

2. 二人ずつのペアを作り、親の遺伝子を受け継いだ子供を生み出します。

ペアを作って子供を作ります。遺伝的アルゴリズムでは性別は考えません。子供の遺伝子配列は、次の2通りで生成します。

  • 片方の親の遺伝子配列をそのままコピーした遺伝子配列にする(完全連鎖)
  • 両親の遺伝子配列の一部を交換した遺伝子配列にする(交叉)

交叉(乗換え)は、相同染色体間で起こる遺伝子の部分交換です。高校で生物を履修していた人なら聞き覚えがある用語だと思います。これによって遺伝的多様性が生じます。遺伝的アルゴリズムを使うだけなら、生物学における交叉の概念がよくわからなくても大丈夫ですので、ここではイメージ画像だけ貼って詳しい説明は省略します。

f:id:fffw2:20180120225529p:plain
(『サイエンスビュー生物総合資料』実教出版、p.64 より引用)

例えば、AさんとBさんの子供は次のようなパターンになります。

Aさん:7143526
 ×
Bさん:4175623
 ↓
子供α:7143526(Aさんの遺伝子配列のコピー)
子供β:7145623(交叉した遺伝子配列)
子供γ:4173526(交叉した遺伝子配列)
子供δ:4175623(Bさんの遺伝子配列のコピー)

 

ただし、今回の問題の場合、「7つの場所すべてを一度ずつ訪問しなくてはならない」という縛りがあるので、交叉によって生成された遺伝子配列に同じ数字(遺伝子)が含まれていてはいけません。遺伝子重複によって死に至ります。

Cさん:5762413
 ×
Dさん:7346215
 ↓
子供ε:5762413
子供ζ:5762215(致死個体:2, 5が重複)
子供η:7346413(致死個体:3, 4が重複)
子供θ:7346215

遺伝子重複による致死個体が生じないような交叉のやり方として、「順序交叉」*6という方法が考案されているので、これを使ってみましょう。

  1. Dさんの遺伝子配列に着目して、
    切断点の左側にある遺伝子を切断点の右側に持ってきます。
    Cさん:5762|413
     ×
    Dさん:7346|215
     ↓
    Cさん:5762|413
     ×
    Dさん:        |2157346

  2. Cさんの切断点の左側にある「5762」と重複している数字を
    Dさんの切断点の右側にある「2157346」から削除します。
    Cさん:
    5762|413
     ×
    Dさん:        |2157346
     ↓
    Cさん:5762|413
     ×
    Dさん:        |134

  3. 遺伝子重複のない元気な子供が生まれます。
    子供ζ':5762|134 <オギャー

この方法なら確実に遺伝子重複が発生しないので、命を無駄に失わず、多様な遺伝子配列をもった子供をどんどん作ることができます!


3. 強い子供たちが生き残り、弱い子供たちは死にます。

2.の操作の結果、バラエティー豊かな子供たちが生まれて賑やかになります。

子供α:7143526
子供β:7145623
子供γ:4173526
子供δ:4175623

子供ε:5762413
子供ζ':5762134
子供η':7346152
子供θ:7346215

しかし、可愛そうですが、この世に生き残れる個体数は限られています。環境への適応度が高い個体のみが生き残り、適応できなかった個体は死にます。これが自然の摂理なのです。

今回の問題では「経路長」が短い子供だけが生き残ります。
生き残れる個体数を 4 とすると…

子供δ:4175623(5100m)
子供ζ':5762134(5150m)
子供ε:5762413(5320m)
子供β:7145623(5800m)
─ 以下の子供たちは死亡 ─
子供α:7143526(6330m)
子供γ:4173526(6750m)
子供θ:7346215(6930m)
子供η':7346152(7000m)

子供 δ、ζ'、ε、β の4名が生存します。

このように適応度が高い「強い」個体だけが生き残るように弱者を淘汰していく方法を、遺伝的アルゴリズムの言葉で「エリート選択」といいます。


4. 強い子供たちが次世代の親になります。

3. の操作によって生き残った子供たちは、成長して次世代の親になります。次世代の親集団は優秀で、最初の親集団より平均経路長が短くなっています。

  • 第1世代(A, B, C, D)の平均経路長は 5920m
  • 第2世代(δ, ζ', ε, β)の平均経路長は 5342.5m

5. 2〜4を繰り返すと最強の個体ができあがります。

2〜4の交雑・選択操作を繰り返していき、第3世代、第4世代、第5世代、…と世代を重ねていくと、エリート選択の力でどんどん個体群は優秀になっていきます。そして、最終的に最強の個体(=最短経路)が誕生して進化が収束します!

 

ここまでの一連の流れを手作業で行うのは流石に無謀なので、コンピューターにお願いしてやってもらいます。やっつけで150行ぐらいのプログラムを書きました。おりゃっ。

f:id:fffw2:20180121014037p:plain

交叉の実装がちょっと面倒でした… _(:3 」∠)_

個体数を 200 に設定してプログラムを動かしてみたところ、問題の規模が小さいため、あっという間に進化は収束。

f:id:fffw2:20180121044120p:plain
各世代の上位200個体の経路長の推移を表したグラフ
(縦軸は各個体の経路長、横軸は世代)

 

進化の結果、導かれた最短経路は…

6→5→7→2→1→3→4(4350m)でした!!(逆回りも可)

f:id:fffw2:20180121045818p:plain

 

GoogleMapに経路を描いてみると、こうなります!
じゃーん!

 

こうして、無事に「巡回七福神問題」を解いた私は、最短経路を描いた地図を片手に、無駄のない動きで草津七福神をめぐり、平成30年の福を祈ることができたのでした。めでたしめでたし。

f:id:fffw2:20180121052547j:plain

 

立木神社で、七福神めぐりをしている親子から声をかけられました。お母さん曰く「息子が地図を見ながらルートを考えたのよ」とのこと。息子さんの手には、小学生らしく自由闊達に描かれた地図が握られていました。地図とにらめっこしながら一生懸命ルートを考えたんだろうなあ。微笑ましい。

「お兄さんはコンピューターを使って最短経路を導いたよ!(`・ω・´)
 少年よ、4350mでめぐれる正解ルートを教えてあげようか?」

と言いたくなりましたが、そんな無粋な真似は悪いので、ぐっと堪えて「えらいねー」と言っておきました。

 

その後、不思議なことに、養専寺、真願寺、神宮寺、…と私の行く先々で同じ親子がいるではありませんか。どうやら最初から最後まで私と全く同じルートでめぐっていたようです。むむむ。

少年は一体どんなアルゴリズムで「巡回七福神問題」を解いたのでしょうか。

 

*1:寺院が裏路地に建っているのは、江戸時代、寺院の土地が「除地」と呼ばれる非課税の土地だったため。主要街道沿いは間口税を課せるので、課税対象である町屋が置かれました。

*2:「d」は「distance」の頭文字

*3:スタート地点とゴール地点が同じなので訪問経路の場合の数は「円順列」と同じ考え方になります。さらに、経路を逆回りしてもOKなので、2で割ります。これは「数珠順列」と同じ考え方です。

*4:こういった解法を「ヒューリスティックな」解法と言います。焼きなまし法、山登り法、タブー探索、遺伝的アルゴリズム、アントコロニー最適化、などがあります。試行錯誤を繰り返して正解に近づいていく解法です。「heuristic」とは「発見的な」という意味で、古代ギリシャ語由来の言葉です。入浴中に浮力の原理を発見したアルキメデスが「heureka! heureka!」(見つけた!見つけた!)と叫びながら街中を全裸で走り回ったという逸話はあまりにも有名ですね。

*5:J. H. Holland, Adaption in natural artificial systems, 1975.

*6:L. Davis, Applying Adaptive Algorithms to Epistatic Domains, 1985.

ふれっしゅのーと始めました

あけましておめでとうございます。風霊守(ふれっしゅ)です。

平成30年というキリの良い年を迎え、何か新しいことを始めようと思い、
意を決してはてなブログを始めてみました!

気になったこと、調べたこと、私の日常の出来事、等々、
心に移りゆくよしなし事をそこはかとなく書きつけていきます。

 

ブログ開設までの経緯

個人Webサイト(2003年〜)

  • 平成15年に開設した古き良きWebサイト
  • 中学時代に雑学コンテンツを気合い入れて作成
  • HTML直書きなので更新負荷が結構高いのが悩み
  • そして、次第に日記メインになっていく…

mixi日記(2008年〜2010年)

  • 大学生になりmixiで日記を書き始める
  • マイミク限定公開で気兼ねなく内輪ネタを書ける
  • でも折角文章を書くならもっとたくさんの人に見てもらいたい…

Twitter(2010年〜)

  • 行き着いた先はTwitter
  • 短文投稿型なので息を吐くようにツイートできて楽
  • たくさんの人に見てもらえるのでモチベーションも上がる!
  • しかし情報を体系的にまとめるという点では不利…

はてなブログ(2018年〜) ←New!!

  • 長文で情報をまとめておきたいなら、やっぱりブログ!
  • 旅行、歴史、漢字、数学、等々、書き留めておきたいネタは結構ある
  • Twitterで適当なことをつぶやいて、まとめたくなったらブログ化、という流れ
  • WordPressも良いのだけど環境を整えるのがちょっと面倒臭かった
  • はてなブログなら環境設定不要なので、文章を書くことに集中できる

 

というわけで、これからはこの『ふれっしゅのーと』にあれこれ書き留めていきます。
モチベーションが長続きすればよいのだけれども。