郵便番号の巡回セールスマン問題性

こんにちは、estieのkageyuです。株式会社estieではよく不動産・地理データを見ています。社内ではGeoGuessrがたまに行われていて、市外局番を覚えておくと有利になります。このような「番号体系」が好きなので、今回は郵便番号の話をします。厳密な話をすると細かい話が大半になってしまうので、あまり厳密な話はしません。

電話番号や住所と同じく、郵便番号も構造を持っています。基本的には階層構造を持っており、都道府県-市区町村-町域の階層構造を基本としていますが、配達に特化した採番などがあります。

郵便番号の構造

1,2桁目 都道府県・地域区分局

1,2桁目はおおよそ都道府県と対応します。100通りを47都道府県にまんべんなく割り振るのではなく、郵便物の多い東京都は10~19が割り振られています(もうここで例外があり、都道府県をまたぐ番号もあります。例外は多いですね)。

郵便番号システムが生まれた時代に郵便物の多くは鉄道で輸送されていたため、鉄道路線に沿って郵便番号が割り振られました。地域ではなく路線基準で割り振られており、1桁目は

  • 1:東京鉄道郵便局
  • 2:東京鉄道郵便局
  • 3:長野鉄道郵便局
  • 4:名古屋鉄道郵便局
  • 5:大阪鉄道郵便局
  • 6:大阪鉄道郵便局・米子鉄道郵便局
  • 7:広島鉄道郵便局・高松鉄道郵便局
  • 8:熊本鉄道郵便局
  • 9:金沢鉄道郵便局(・新潟鉄道郵便局)・仙台鉄道郵便局
  • 0:青森鉄道郵便局・札幌鉄道郵便局(・旭川鉄道郵便局)

が担っていた傾向があります(例外は大量)。1から0の順に、東京から鹿児島まで西に向かい(東京門司線)、金沢から北に向かっています(大阪青森線)。駅の郵便室や郵便車内でも仕分けが行われていました。

この鉄道を原型とした番号を引き継ぎ、現在では10~15は東京都江東区にある新東京郵便局など、地域区分局という単位が2桁とほとんど対応しています。

0ではなく1から始まっている理由は、機械が一番読み取りやすい数字だからだと言われています郵便番号 なぜ秋田が「01」東京「10」に? | NHKニュース。例えばMNIST-Digits-Classification/MNSIT_Digits_Classification.ipynb at main · Vaani64/MNIST-Digits-Classification · GitHubを見ても1の精度は他より高く、人間が見る時も「1かどうか」だけなら簡単そうです。郵便番号自動読取区分機が導入されたのは郵便番号制度が始まったのと同じ1968年です。

ちなみに新東京郵便局の正面にある郵便ポストは取集時刻が21:45ごろまであるなど、一般窓口のある地域区分局の近くの郵便ポストは最終取集時刻が遅い傾向にあります。多くの郵便局が閉まった17時以降でも当日消印を狙えます。

90x-xxxx

現在は郵便番号先頭2桁は全て使われていますが、当時は2桁の00~99までの全てを割り振ったわけではありません。特に90は当時は欠番で、後に返還された沖縄に割り振られました。1,2桁目に限らず、郵便番号は新たに割り振られたり欠番になったりしています。

3桁目(中央郵便局)

先頭2桁の地域の代表的な(中心的な)郵便局が0となり、鉄道に沿って1, 2, …と振られることが多いです。1998年2月1日以前は郵便番号の長さは統一されておらず、旧郵便番号(郵便区番号)が3桁であった地域(3桁局)と5桁であった地域(5桁局)では少し異なりますが、5桁局も「親局」と呼ばれる郵便局の3桁に2桁が追加される形になっており、3桁目までは「郵便区番号」です。

「郵便区番号」という名前からも分かりそうですが、3桁局では「郵便区」と対応します。例えば現在estie本社は赤坂郵便局の管轄であるため、107(赤坂・青山近辺)の番号が振られています。郵便番号・バーコードマニュアル 郵便番号 | 日本郵便株式会社

4,5桁目

大ブロック番号(3桁局)

4桁目が路線、5桁目がその路線内での位置(下り順)となっている傾向があります。これも鉄道で郵便物を運んでいた名残です。

郵便区番号(5桁局)

小規模な郵便区は5桁の番号が割り振られており、4,5桁も郵便区の番号でした。

6,7桁目(小ブロック番号・町域番号)

1998年2月2日、郵便番号が7桁になりました。基本的には旧3桁/5桁の末尾に4/2桁を追加する方式で追加され、町域や大型ビル階層まで個別に指定できるようになりました。1986年には鉄道郵便局や鉄道郵便が廃止されており、6,7桁目は鉄道とは関係なく採番されました。「町域」とは北海道札幌市中央区旭ケ丘程度の粒度の範囲で、郵便局が使う「字(あざ)」のような区分です。

珍しい採番として、新宿NSビルなどでは階数が対応する例があります。

その他

郵便番号・バーコードマニュアル 郵便番号 | 日本郵便株式会社には、「当分の間、算用数字のみを使用します。」と書かれています。イギリスの郵便番号(番号?)にはアルファベットが使われているし、証券コードは最近アルファベットを使い始めました。もしかしたら数字以外の文字を使うかもしれないので楽しみです。

大口事業所個別番号・臨時の個別番号

大量に郵便物が届く場合には、個別の郵便番号を申請できます。また、一時的に大量に郵便物が届く場合(例えば懸賞など)には、臨時の郵便番号も申請できます。一度くらい申請してみたいです。

一番大きい郵便番号「山形県遊佐町菅里一部」

一番大きい郵便番号は「999-8531」で「山形県遊佐町菅里一部」です。この場所には道の駅 鳥海ふらっとがあるため比較的容易に観光できますし、特に消印に郵便番号は関係ないですが、郵便ポストがあります。一番小さい郵便番号は「001-0000」で代表地点が札幌市北区役所に置かれていますが、「北海道札幌市北区以下に掲載がない場合」なので山形県遊佐町菅里一部の方がおもしろいと思って道の駅 鳥海ふらっとに行きました。

郵便番号の記載方法

内国郵便約款の「別記1 郵便番号を記載する方法」には

郵便番号の前後には、「郵便番号」、「〒」その他これらに類する文字又は記号及び「親展」、「至急」、「重要」その他これらに類する文字又は日時並びに会員番号、電話番号、口座番号その他これらに類する事項を記載できません。

と書いてあります。最近会社に届いた郵便物には〒マークが付いていました。気をつけましょう(私も子供のころ書いてしまいましたが…)。

郵便番号順に地図上に線を引いてみる

さて、このブログを書くきっかけになった話をします。なぜかとある社員が郵便番号順に地図上に線を引いていました。どうしてそんなことをしたのかは謎ですが、そのグラフは見ていて楽しいものでした。

郵便番号を順につなげた図。北海道本島

郵便番号はまんべんなく振られているのではなく、郵便物や届け先が多い場所ほど細かく分けるように割り振られていそうです。雑な推測ですが郵便先や郵便物の密度(≒人口密度)と郵便番号の密度も比例すると考えてみます。

郵便番号の構造で述べたとおり、各桁は一筆書きのように番号が振られていきます。そうするとフラクタル的な構造になりそうで、また頂点は日本全体をある程度網羅するように振られているでしょう。そう捉えると、例えばヒルベルト曲線のようなフラクタルな空間充填曲線が似ている気がします。

File:Hilbert curve.svg - Wikimedia Commons  File:Hilbert curve.svg

単位面積あたりの線の長さは点の密度の平方根に比例するため、広い範囲を表示すると都市部が浮かび上がります。ヒルベルト曲線は空間を一様に充填しますが、郵便番号は一様ではないため、人が多い場所ほどぎっしりと点や線が描画されて人口密度と関連します。

市区町村別人口密度(出典:政府統計の総合窓口(e-Stat)「地図で見る統計( jSTAT MAP )」)


(見比べるために再掲)郵便番号を順につなげた図。北海道本島

大局的に見ると人口密度を感じるグラフでしたが、拡大してみるとどうでしょうか。拡大すると画面内の人口密度の差は抑えられますが、それでもやはり中心地は感じられます。そしてカクカクとしたグラフでからはナイトツアーの経路が思い出されます。そして題名にある通り、巡回セールスマン問題の解のグラフと似た形だとも感じました。

熊本付近の、郵便番号順に代表地点を繋いだ図

郵便物は番号順に届ける必要はないですが、特に6桁目や7桁目は連続する地域に順番に振った方が人間はわかりやすいでしょう。また大きな桁で大きく地域を区切っている点も結果的に巡回セールスマン問題の解とにた形状になりやすいでしょう。

「巡回セールスマン問題の最適解では線が交差することはない」などの明らかに違う場所もありますが、ドイツのCityに対して計算された巡回セールスマン問題の解に雰囲気は似ています。人口密度が高い場所で密度が高くなる様子はドイツのCityでも見て取れます。郵便番号順の経路はどの程度「巡回セールスマン問題っぽい」のでしょうか。

Germany Home > German Tours https://www.math.uwaterloo.ca/tsp/d15sol/dhistory.html

巡回セールスマン問題との比較

巡回セールスマン問題っぽさを定量的に扱うのは難しいですが、まずは経路長を比較してみましょう。Haversine距離の計算などは時間がかかるので、距離の計算は中心の緯度経度で近似します。郵便番号が多すぎると計算に時間がかかるので北海道だけに絞って計算しました。距離行列はnumpyで計算し、巡回セールスマン問題はfast_tspのfind_tourを使って解きました。

郵便番号順につなげた場合は30525 kmで、巡回セールスマン問題の結果は13386 kmでした。巡回セールスマン問題の結果はfast-tsp.find_tour(duration_seconds=60)なので厳密解ではないですが、それでも郵便番号順の移動は約30525/13386≒2.28倍の距離になるので巡回セールスマン問題の解としてはよくありません。郵便番号は道路などを考慮して作成している一方で、今回計算した巡回セールスマン問題の経路は海も山も完全に無視した経路なので当然です。

次に巡回セールスマン問題の経路のうち、郵便番号順の経路と同じ辺が採用される割合(エッジ一致率)を見てみます。北海道全体で見ると次の図のようになり、青い辺(一致した辺)がちらほら見えます。エッジ一致率を見ると42%となっており、8191レコードにしてはかなり高い一致率ですが、図からは42%も一致しているようには見えませんね?

巡回セールスマン問題の経路。郵便番号順の経路にも現れる辺を青、そうでない辺を赤で図示

拡大したものが下図で、大量に一致している細かい辺があります。

拡大図。黒点が代表点で、直線に見える場所にたくさんの代表点がある場所も…

郵便番号の構造を考えると、郵便番号順が連続していても大きな桁が切り替わるときには巡回セールスマン問題の解とはあまり関係なく、小さな桁が切り替わるときには巡回セールスマンの問題の解と近くなるでしょう。この仮説を北海道内で検証してみると下のようになり、確かにそのような結果が出ています。(7桁一致は郵便番号が同じ地域が複数ある場合です)。

先頭から一致している文字数 辺が一致する割合
1(007-0895→040-0000) 0%
2 0%
3 1.6%
4 3.6%
5 15.9%
6(001-0010→001-0011) 48.4%
7 35.9%

おまけ

郵便番号の代表地点を使っているため、「大分県大分市以下に掲載がない場合(33.239445, 131.609726)」などの地点が集中する場所も見つかります。これは正確な位置ではないために生まれてしまう形状ですが、このような形状は何と似ているんでしょうか。人流データにありそうだとも思いました。

代表点に集中するグラフ

おわりに

今回は郵便番号と巡回セールスマン問題の関係について述べました。郵便番号の歴史や郵便番号の振り方が巡回セールスマン問題に似ていることもおもしろいですが、その可視化をマクロに見る場合とミクロで見る場合では見えるものが違う点もまた興味深いところです。

こうした違いを眺めていると、データを見ることの楽しさと難しさの両方を感じます。どのスケールで見るか、どの軸で切り取るかによって、同じデータでもまったく違う物語が見えてくるからです。

データ分析というと、正しい答えを見つける作業のように思われがちですが、実際には「どう見るか」を試行錯誤するプロセスでもあります。少しズームアウトしてみたり、逆にズームインしてみたり、別の視点から並べ替えてみたりするだけで、これまで気づかなかったパターンが突然浮かび上がることがあります。

データを見ることは探索に少し似ています。地図を広げて全体の形を眺めることも大事ですし、細い路地に入り込んで細部を観察することも同じくらい大事です。その往復の中で、データが持っている構造や背景が少しずつ見えてきます。

郵便番号のような身近な仕組みの中にも、物流の効率化や歴史、行政の都合など、さまざまな要素が折り重なっています。それをマクロとミクロの両方から眺めてみると、単なる番号の並びだったものが、少し立体的なストーリーとして見えてくるのが面白いところです。

© 2019- estie, inc.