第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倍以上の記述をした記憶があります。
今、思うのは「大した事じゃなかったのかも?」と、言う事です。
「ほっ」と、一安心です。
また、集合の記述方法も多くは必要ありませんでした。
数年前には、必須と思っていました。
グラフ理論を少し学んだ事が、この結果(簡略な表現)を生んだのかもしれません。
本当に「ほっ」と、一安心です。
次章は「結合」について、考えたいと思います。




