表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
属する者  作者: 酒井順
28/67

第28章 解法(1)

第28章 解法(1)


第1話 分解


 僕のTSPの解法を記述したいと思います。


 完全グラフG(V,E)が、あるとします。

この時、集合Vの頂点数をNとします。

集合Eの辺数は、N(N-1)/2となります。

単純パス数は、O(N!)となります。


 ここで、集合Eの全ての元は、有限線分です。

必ず、始点と終点を持ちます。


――――――――――――――――――――――――――――――――――――――――

 「絶対条件=(ABS)」

 グラフGの単純パスが最短距離をとる時、その単純パス内のEの、

どの2つの元をとっても、有限線分の内側で交差しない。

――――――――――――――――――――――――――――――――――――――――


 この事は、既に証明されていると思います。

証明する事は、簡単に出来ます。

なので、ここでは省略します。


――――――――――――――――――――――――――――――――――――――――

 「定義」

点集合Vを{n:n1,n2,...nn}とする。

辺集合Eを{e:e1,e2,...en}とする。

グラフGは無効グラフである。

nは、座標を持つ。

(すると、eは、距離を持つ。)

――――――――――――――――――――――――――――――――――――――――


ステップ-1


ステップ-1-1


 集合Eから任意の元e1を選びます。

TSPは、完全グラフなので、集合Eのどの元を選んでも、問題ありません。

そして、元e1を木構造のRootとします。


 e1は、始点と終点からY=aX+bで表現出来ます。

この時、e1と集合Eの全ての元(e)との関係は次のいずれかです。


① 不等式 Y<aX+bに(e)の始点と終点は含まれる。…集合L

② 不等式 Y>aX+bに(e)の始点と終点は含まれる。…集合R

③ 等式 Y=aX+bとなる(e)は存在しない。

  (何故なら、その(e)は点となるからである)


 不等式 Y<aX+b に始点か終点を持ち、

 不等式 Y>aX+b のその反対側の端点を持つ。

 この時、e1と(e)は交点を持つ。

その時、

④ 交点がe1の線分の内側にある。…集合X

⑤ 交点がe1の線分の外側にある。…集合C


 ここで、集合E=L+R+X+Cとなります。

「+」表記を用いたのは、集合L、R、X、Cが交わる事がないからです。

ここで、(ABS)より集合Xは、単純パス候補から外れます。


ステップ-1-2


① 集合Lの始点と終点から点を抽出します。…集合PL

② 集合Rの始点と終点から点を抽出します。…集合PR

③ 集合CからY<aX+bに属する点を集合PL に加えます。…集合PLC

④ 集合CからY>aX+bに属する点を集合PR に加えます。…集合PRC


 くどいかもしれませんが、③の点と④の点は、集合Cの始終点の対になります。


これは、次と等価です。

点集合Vの元(n)を座標(nx,ny)とした時、

① 不等式 ny<=anx+b…集合PLC

② 不等式 ny>=anx+b…集合PRC

③ ny=anx+bを始点か終点に持つ(e)は集合Cに属する。


ステップ-1-3


 ここで、Rootノードが持つ情報は、集合Cの情報と、

e1の情報だけです。

ここで、e1の情報を集合PE={p1、p2}とします。


ステップ-1-4


 これらの集合の特徴は、集合PLと集合PRは、完全に独立している事です。

集合PLと集合PRがパスを構成するためには、必ず集合Cを介さなければなりません。


ステップ-1-計算量


 計算を簡単にするために、集合Xを空集合とします。

また、集合PLCとPRCは均一に分割されるものとして計算します。

ここで、不均一性に触れると本論から外れて、記述が複雑になるためです。

 不均一性の問題は、後回しとしたいと思います。


 Rootノードが持っていた集合Vの頂点数Nは、

集合PLCと集合PRCに分割される事により、それぞれN/2となります。

集合PLCと集合PRCは、深さ=1(奇数深さ)の子ノードとなります。

奇数深さには、意味があります。

それは、ステップ2で記述します。

尚、集合Cは「結合」の時に必要になります。

現在は「分解」の段階です。


ステップ-2


 集合PLCについて考えます。(集合PRCも考え方はPLCと同じです)

集合PLCは、深さ1のノードです。

奇数ノードは、その親ノードとC集合情報を共有します。

次の子ノードは、集合PLCの元全てになります。(N/2個)

深さ=2(偶数深さ)となります。

ここで、集合PE={p1、p2}は、{p1、p2、pn}となります。

 そして、ステップ-1-1に戻ります。

この時、e1={p2、pn}として考えます。

 確認のためです。

集合PEの元は、子ノードには含まれません。


ステップ-3


 Leafは、奇数深さの点数が1以下になった時の直前のノードです。


計算量


 集合LとRは均一に分割されるものとして計算します。

集合Xを空集合として計算します。

 

 上述の両方ともに絶対ありえません。

しかしながら、不均一性の計算量を計算出来るという事は、別な解法の存在を、

意味します。

残念ながら、僕には考え付きませんでした。


 なので、上述で計算量を計算したいと思います。

と、思いましたが厳密に計算出来ません。


 ただ、木の深さが2×logN(低は2)となります。


 今、思いついたのですが、集合Cが空集合の時、全ての単純パスが、

存在しない事を意味するのではないか?

直感的には、未だ受け入れられていません。

 機会を見つけて確認して見ます。

確認できれば「一筆書き」の可否の判定に利用できるかもしれません。

但し、そのためには、Rootを任意とする事は出来ないと思います。


第2話 章の最後に


 数年前は、この事を表現するために10倍以上の記述をした記憶があります。

今、思うのは「大した事じゃなかったのかも?」と、言う事です。

「ほっ」と、一安心です。


 また、集合の記述方法も多くは必要ありませんでした。

数年前には、必須と思っていました。


 グラフ理論を少し学んだ事が、この結果(簡略な表現)を生んだのかもしれません。


 本当に「ほっ」と、一安心です。


 次章は「結合」について、考えたいと思います。



評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ