Weekend Mathematics問題/問題76



76.ハイウェイ計画

ある砂漠に、一辺100マイルの正方形の頂点に4つの都市があった。



この4都市を結ぶハイウェイが計画されたが、バブル時代のO計画(400マイル)は、バブル崩壊とともに、Z計画(341マイル)、H計画(300マイル)、X計画(283マイル)へと縮小された(小数点以下四捨五入)。
それでもある賢者は、「もっと短い経路がある」と言い出した。それは?










問題の出典


超々難問数理パズル
芦ヶ原伸之
講談社ブルーバックス






答えと解説





答えと解説

解答・その1

(ペンネ−ム:teki)

<真面目な解答>
この問題、数学では結構有名な問題で、「最短シュタイナー問題」と呼ばれてい ます。図を添付すれば分かり易いのですが、あえて言葉だけで説明します。 この場合の最短経路は、正方形の各頂点から30°の角度で直線を引き、その交 点同士を結んでできる経路となります。 この場合の経路の長さは、正方形の1辺を100マイルとすると100×(1+ )マイル≒273マイルですね。

正方形の場合の最短経路



<ふざけた解答>
道路の幅の記述がないので、幅100マイルの道路を造ってしまえば、長さは1 00マイルで足りますね。 ただし、建設費はいくらになるか、保証の限りではありません(^^;;)



解答・その2

(ペンネ−ム:mhayashi)

答え:


\    /
  \/ 
   |
  /\     ↑
/    \   ↓


こういうカタチを考えました.(ん〜何計画でしょ? (^^;)
このときハイウェイの長さは最短で 100(1+ 即ち約 273 マイルとなる.



解答・その3

(ペンネ−ム:kiyo)

「最短シュタイナー問題」
(1+)*100≒273(マイル)ですね。



解答・その4

(ペンネ−ム:Y.M)






解答・その5

(ペンネ−ム:巷の夢)

解法と言っても書けません。図を描きながら、試行錯誤で見つけました。



以上より、ケースAの場合に道の長さが最小になる事が分かる。



解答・その6

(ペンネ−ム:Underbird)

下の図より



近似値は、100+173=273(m)
これが最短であることは証明してありませんが、確かこうだったような。







解答・その7

(ペンネ−ム:杖のおじさん)

一部変更(7/9)

BASICプログラムとエクセルで計算してみました。


道路の長さは、ピタゴラスの定理で計算する。



左の図の様な道路を作る。
道路の長さ273.21マイル

◎BASICプログラム  カシオFX-870P、FX-890Pを使用いたしました。

10DIM X(50),Y(50)
20D=0:PRINT"ハイウェイ ケイカク"
30FOR A=0 TO 50
40X(A)=INT(SQR(100^2+(A*2)^2)*200+0,5)/100+100-A*2:Y(A)=A
41REM PRINT Y(A);"-";100-Y(A);"-";X(A)
42REM INKEY$=""THEN 42
50NEXT A
60FOR A=0 TO 49
70IF X(A)>X(A+1) THEN B=X(A):C=Y(A):X=X(A+1):Y(A)=Y(A+1):X(A+1)=B:Y(A+1)=C:D=1
80NEXT A
90IF D=1 THEN D=0;GOTO 60
100BEEP:PRINT"ポイントハ";Y(0);"ト";100-Y(0);"キョリハ";X(0);"Km"
110GOTO 20

EXEを押して実行すると2分8秒で次ぎの結果が得られます

      ポイントハ 29 ト 71  キョリハ 273.21Km 

と表示されます。

◎エクセルでは数式を入力します。

図1図2

 AB
1X長さ
20300
31298.04
42296.16
53294.36
64294.64
75291
・・・・・・・・・
5250282.84

 AB
1X長さ
229273.21
328273.22
430273.24
527273.3
631273.32
726273.42
・・・・・・・・・
520300


B2に入力した数式は次の通りです。

   INT((SQRT(100^2+(A2*2)^2)*200+0.5))/100+100-A2*2

B52までドラッグアンドドロップでコピーします。

B列を2行目〜50行目までを昇順で並べ替えたのが図2です。 一番短い経路が一番上に来ます。
したがって、29マイルの地点を通り、273.21マイルと判明します。

* 計算にあたって、小数点以下の三桁目を四捨五入します。 と書き添えるべきでしたので、書き添えます。
  (追加:2003.5.4.)



解答・その8

(ペンネ−ム:yokodon)

題意の正方形の各頂点を左上から反時計回りにA,B,C,Dとする。
辺AB、辺CDの中点をM、Nとし、更に線分MN上に2点P、Qを、

    ∠APM=∠BPM=∠CQN=∠DQN= π/3

・・・を満たすようにとる。



このとき、AP=BP=CQ=DQ= 100/(mile)
また、MP=NQ= 50/ (mile) だから、PQ= 100(1 - 1/√3) (mile)
従って、5つの線分AP、BP、PQ、CQ、DQを結んで出来る折れ線の全長は

    AP+BP+PQ+CQ+DQ=100×(1 +) ≒273 (mile)

これは、既出4種のどの経路よりも短い。
名付けて、…何でしょうかこれは?(^^;)
#両側刺股計画?




解答・その9

(ペンネ−ム:バレー部)

今回の問題は非常に楽しませてもらいました。証明のない解答ですけれど・・・。 実は母と二人でこの問題を考えまして、私ではなく母がこの形を見つけてしまいました。

こんな形でいいだろうって?

この形というのは、

から に近づいていく形といえますよね。

なぜより の方が短いかというのは、

A→Cに行くとき、A→E→F→C、
B→Dに行くとき、B→E→F→D
E→Fでかぶってる!!

だからEFの長さによって、 より の方が短い時もあるようです。

最小値を求めたい。(正確じゃない気もしますが・・・。)


このとき

   (0≦x≦50)

として、この関数の最小値を求めます。

  として、   x=(150±50)/3

よって、x=(150-50)/3=63.5/3≒21のとき最小値をとりそう。
本当は正式な増減を調べなければいけないところですが、 実際に21ぐらいで275に近いくらいの値がでているのでここではOKとします。



解答・その10

(ペンネ−ム:モルモット大臣)

100m離れた4つの年を左上から時計まわりにA,B,C,Dとして AD、BCの中点をそれぞれE,Fとし、EF 上にEFの中点を対称とした点P、Qをとります。
賢者の言うより短い場合はこのPQ上のPとA,Dを結び、QとB,Cを結んだ時に生じます。


EP=FQ=X(0≦X≦50)と置くときの経路はAP=DP=BQ=CQだから4AP+PQ=F(X)とおく。
三平方の定理から

   F(X)=4(X2+502)1/2+100-2X

   F'(X)=1/2×4×2X×(X2+502)1/2-2=0より

   3X2=502

   X=50/3

増減表は省略しますが X=50/3の時F(X)=100+100=273.205≒273 よって最短経路は273mです。
この時が真の最小である証明はできませんが



解答・その11

(ペンネ−ム:ばんちゃん)

283マイルより短い経路が見つかりましたので投稿します。 尚、最も短い経路であるかは分かりません。 経路は下図の通りです。



上記の形で斜線の角度が60度の時が最短経路になりました。
この時、斜線の長さは57.735マイル、中央の横線の長さは42.265マイルです。
故に、経路は、4×57.735+42.265=273.205マイル(273マイル)
尚、中央の横線をXと置き、全体経路をYとすると

    y=4×√(52+((100-x)/2)2)+x

となります。この式を利用してyが最小の時のxを求めればよいですね。 最近は方程式なんかとは縁遠いので表計算ソフトにてxを変化して求めました。 その結果斜線の角度が60度の時が最短のようです。



解答・その12

(ペンネ−ム:shock8)

「>−<」型に高速道路を繋いで、真ん中の「−」部分の長さが (3-sqrt(3))/3 * 100 (mile)の場合

回答にいたる手順は、まず、蜂の巣型が望ましいだろうということで「>−<」型に 当たりをつけまして、簡略化のために正方形の一辺の長さを1にします。 それから「−」部分の長さをxとして

   全長 f(x) = x + 2*sqrt(1+(1-x)2)

を最小化したいので

   df(x)/dx = 1+(x2-2x+2)-1/2*(2x-2) = 0

を解いて導きました。



解答・その13

(ペンネ−ム:浜田 明巳)

その昔,泡の実験で見た事があります.自然界は最短距離を好む,最小エネルギーで済む事を好む.その時に見た図を頼りにプログラムを作ってみました.
答は273マイルでしょう.



Option Explicit
Const HEN As Double = 100
Sub Form_Load()
    Dim waku As Double
    waku = HEN * 0.2
    Picture1.BackColor = vbWhite
    Picture1.Scale (-waku, HEN + waku)-(HEN + waku, -waku)
    Picture2.BackColor = vbWhite
End Sub
Sub Command1_Click()
    Dim x(3) As Double, y(3) As Double
    Dim x1 As Double, y1 As Double
    Dim x2 As Double, y2 As Double
    Dim x1_min As Double, x1_max As Double
    Dim x1_min0 As Double, x1_max0 As Double
    Dim xx1 As Double, xx2 As Double
    Dim dankai As Integer
    Dim kizami As Double
    Dim min As Double
    Dim wa As Double
    Dim j As Integer
    x(0) = 0: y(0) = HEN
    x(1) = 0: y(1) = 0
    x(2) = HEN: y(2) = 0
    x(3) = HEN: y(3) = HEN
    x1_min0 = x(0): x1_max0 = (x(0) + x(3)) * 0.5
    kizami = 1
    '
    'project ○
    Picture1.Cls
    Picture1.PSet (x(0), y(0)), vbBlack
    For j = 3 To 0 Step -1
      Picture1.Line -(x(j), y(j)), vbBlack
    Next j
    wa = HEN * 4
    Call hyouji(wa, 1)
    Call wt
    '
    'project Z
    Picture1.Cls
    For j = 0 To 1
      Picture1.Line (x(j), y(j))-(x(3 - j), y(3 - j)), vbBlack
    Next j
    Picture1.Line (x(1), y(1))-(x(3), y(3)), vbBlack
    wa = HEN * (2 + Sqr(2))
    Call hyouji(wa, 2)
    Call wt
    '
    'project H
    x1 = x(0): y1 = (y(0) + y(1)) * 0.5
    x2 = x(2): y2 = y1
    Picture1.Cls
    For j = 0 To 2 Step 2
      Picture1.Line (x(j), y(j))-(x(j + 1), y(j + 1)), vbBlack
    Next j
    Picture1.Line (x1, y1)-(x2, y2), vbBlack
    wa = HEN * 3
    Call hyouji(wa, 3)
    Call wt
    '
    'project X
    Picture1.Cls
    For j = 0 To 1
      Picture1.Line (x(j), y(j))-(x(j + 2), y(j + 2)), vbBlack
    Next j
    wa = HEN * 2 * Sqr(2)
    Call hyouji(wa, 4)
    Call wt
    '
    'project minimum
    min = 10000
    For dankai = 1 To 14
      If dankai = 1 Then
        x1_min = x1_min0
        x1_max = x1_max0
      Else
        x1_min = max2(xx1 - kizami, x1_min0)
        x1_max = min2(xx1 + kizami, x1_max0)
        kizami = kizami * 0.1
      End If
      For x1 = x1_max To x1_min Step -kizami
        x2 = x(2) - x1
        wa = x2 - x1
        For j = 0 To 1
          wa = wa + Sqr((x1 - x(j)) * (x1 - x(j)) + (y1 - y(j)) * (y1 - y(j)))
        Next j
        For j = 2 To 3
          wa = wa + Sqr((x2 - x(j)) * (x2 - x(j)) + (y2 - y(j)) * (y2 - y(j)))
        Next j
        If min > wa Then
          min = wa
          xx1 = x1: xx2 = x2
          Call hyouji(min, 5)
        End If
        Picture1.Cls
        For j = 0 To 1
          Picture1.Line (x(j), y(j))-(xx1, y1), vbGreen
        Next j
        Picture1.Line -(xx2, y2), vbGreen
        For j = 2 To 3
          Picture1.Line (x(j), y(j))-(xx2, y2), vbGreen
        Next j
        For j = 0 To 1
          Picture1.Line (x(j), y(j))-(x1, y1), vbBlack
        Next j
        Picture1.Line -(x2, y2), vbBlack
        For j = 2 To 3
          Picture1.Line (x(j), y(j))-(x2, y2), vbBlack
        Next j
      Next x1
    Next dankai
    x1 = xx1: x2 = xx2
    Picture1.Cls
    For j = 0 To 1
      Picture1.Line (x(j), y(j))-(x1, y1), vbBlack
    Next j
    Picture1.Line -(x2, y2), vbBlack
    For j = 2 To 3
      Picture1.Line (x(j), y(j))-(x2, y2), vbBlack
    Next j
End Sub
Sub Command2_Click()
    Unload Me
End Sub
Sub hyouji(ByVal wa As Double, ByVal i As Integer)
    Picture2.Cls
    Select Case i
      Case 1
        Picture2.Print "○";
      Case 2
        Picture2.Print "Z";
      Case 3
        Picture2.Print "H";
      Case 4
        Picture2.Print "X";
      Case Else
        Picture2.Print "最短";
    End Select
    Picture2.Print "計画 経路:"; Int(wa + 0.5); "マイル"
End Sub
Sub wt()
    Dim t1 As Integer, t2 As Integer
    For t1 = -10000 To 10000
      For t2 = -1000 To 1000
      Next t2
    Next t1
End Sub
Private Function min2(ByVal x As Double, ByVal y As Double) As Double
    If x < y Then
      min2 = x
    Else
      min2 = y
    End If
End Function
Private Function max2(ByVal x As Double, ByVal y As Double) As Double
    If x > y Then
      max2 = x
    Else
      max2 = y
    End If
End Function




解答・その14

(ペンネ−ム:夜ふかしのつらいおじさん)

答えは、ウエストのくびれた「H」計画です。(>−<の形)

  1. 隣の都市同士(100マイルの距離)を結ぶ計画は「X」計画(283マイル)より経路が短くなりません。

    1. 4本の「O」計画(400マイル)は明らかです。
    2. 3本の「コ」計画(300マイル)も明らかです。
      (「H」計画と同じ長さの経路です。)
    3. 2本の「=」計画や「L」計画も明らかです。
      なぜなら「=」計画ではあと1本足すと最短の経路が「H」計画と同じになります。
      「L」計画でもあと1本足した最短の経路は「コ」計画に戻ってしまいます。
    4. 1本の「−」計画でも「X」計画より短くなりません。
      残りの2都市と結ぶとき、「V」や「Y」の経路が考えられます。


      ここで、線分ABに平行な直線上の点Pについて、PA+PBの最小値は、Pが線分ABの垂直二等分線上にあるときであることを示します。



      より、x=0(PA=PB)のとき最小になるからです。
      そのとき、 です。

      「V」の経路の場合、a=100とし、さらに100加えると、

       となり、「X」計画より長くなります。

      「Y」経路の場合
          

      を調べます。(0<a<100として)





      この表より、「Y」経路の最小値は、50+200≒287マイルとなり、「X」計画より長くなります。


    次に経路がすべて正方形の内部にある場合を考えます。 経由地の個数について注目します。

  2. 3つ以上の経路が集まるところを経由地と呼ぶことにします。
    1. 経由地を結ぶ経路は閉じない方が短くなります。
    2. 経由地は2つにまで減らすことができます。3角形の2辺の和は他の1辺より長いからです。


      すると、図のような経路が考えられます。

          

      を調べます。(0<a<50として)





      この表より、この経路の最小値は、100+100≒273マイルとなり、「X」計画より短くなります。
      この経路を90°回してみるとウエストのくびれた「H」計画です。






解答・その15

(ペンネ−ム:Toru)

後で使うのでまず補題から、



補題  三角形ABCで角A,角B,角C<120度の時、AP+BP+CPが最小にな るような三角形の内部の点Pは、角APB=角BPC=角CPA=120度となる点 である。

略証  三角形ABCの内部に任意の点PをとりPおよびCをAを中心に反時計方向に 60度回転移動し移動先をそれぞれP’、C’とするとAP=PP’、CP=C’P’ だからAP+BP+CP=BP+PP’+P’C’この折れ線が直線になるときが最 小で、これから角APB=角BPC=角CPA=120度が得られる。


さて本題へ、
4つの都市を左上から反時計回りにA、B、C、Dとする。
ハイウェイの一部が正方形ABCDの外部にある場合は、この部分を正方形から出 る点と入る点をつないで正方形の辺上に移動することでより短いハイウェイになるの で、ハイウェイは全て正方形の辺上あるいは内部にあるとしてよい。
正方形の辺上あるいは内部に任意のハイウェイを作ったとして、このハイウェイで AとC、BとDをそれぞれ結ぶルートを一つずつ選ぶ。これらは必ず存在し、この2 ルートは必ず1つ以上の共有点をもつので、これで4都市を結ぶことになって、それ 以外のルートは削除してよい。
ルートACをAからたどって最初のルートBDとの共有点をP、最後の共有点をQ とすると、PQ間のルートを直線PQで置き換えてよい。(共有点が1個だけの時は P=Qで点となる)
ルートBDはBPQDとなる場合とBQPDとなる場合があるが、対角線ACを軸 に裏返してD→B、B→Dとすれば同じことであるから、BPQDとなる場合を考え る。
するとさらにAP、BP、QC、QDを直線で置き換えてよく、ハイウェイの長さ Lは5つの直線距離の和、AP+BP+PQ+QC+QDで表わされ、これが最小と なるように、正方形の辺上あるいは内部の点P、Qを定めればよい。


まずAP+BP、QC+QDを一定としたまま、Lが最小となるように、P、Qを 移動させる。P、Qはそれぞれ(A,B)、(C,D)を焦点としただ円上を動く (Pが辺AB上あるいはQが辺CDにあるときは、それぞれ線分ABあるいは線分C D上を動く)。2つのだ円が重なる時は、2つのだ円が接するようになるまでどちら かあるいは両方のだ円を焦点を変えずに小さくしてから、P、Qをだ円上で移動させ て、PQ=0とすればより短いハイウェイができるので、2つのだ円が(接する場合 を含め)重ならない時を考えればよい。この場合、AP+BP、QC+QDを一定よ り、Lを最小にするためにはPQを最短にすればよいが、これは、P、Qがそれぞれ のだ円上で、ともにAB(CD)の垂直二等分線上ある時である。
次にAB(CD)の垂直二等分線上でP、Qを移動させる。PQ上(P、Qを含む) に、点Rをとると角ARB、角CRDのうち少なくとも一方は120度より小さいの で、たとえば角ARB<120度とすると三角形ARBに補題を適用して、AP+B P+PRは角APB=120度の時(この時、角RPB=角RPA=120度になる) に最小となる。よってPをAB(CD)の垂直二等分線上で角APB=120度とな る点へ移動する。


次に三角形DPCに同様に補題を適用するとQC+QD+QPは角DQC=120 度の時、最小となるので、QをAB(CD)の垂直二等分線上で角DQC=120度 となる点へ移動することでP、Qが定まった。


以上からP、QはAB(CD)の垂直二等分線上で角APB=角DQC=120度 となる正方形内部の点、この時ルートはAP、BP、PQ、QC、QD、あるいは対 角線ACで折り返して、P、QがAD(BC)の垂直二等分線上で、角APD=角B QC=120度となる正方形の内部の点、この時ルートはAP、DP、PQ、QB、 QCのいずれかで、ハイウェイの長さはAP=B(D)P=CQ=D(B)Q=100/ , PQ=100−100/より100(1+) あるいは273マイル(小数点以下四捨五入)。




解答・その16

(ペンネ−ム:kirkland)

A君「どう考えても、X計画が最短な気がするんですけどねぇ。あっ、分かりました!トンネルですよ!」
先生「はぁ?」
A君「だって、地球は丸いから、地表面を道路で結ぶより、トンネルで地中を直線的に結んだ方が短いじゃないですか。【図1】」



先生「トンネルを掘る方が費用がかかるに決まってるだろ! さて、三角形OABの内部および辺上に点PをとってPO+PA+PBを最小にしたい【図2】。」
A君「またまた、突然ですね。」
先生「ヒントをあげよう。まず、OBを一辺とする正三角形OBQを外側に作る。そして、OPを一辺とする正三角形OPRを図のように作ってQRを結ぶと……。【図3】」
A君「う〜ん、△OPBと△ORQは合同ですね。というのは、Oを中心にOP,OBを60℃回転させたものがそれぞれOR,OQだからですね。」
先生「よろしいよろしい。もう少しだ。」
A君「ということは、PB=RQです。また、△OPRは正三角形なのでOP=PRです。ということは、OP+AP+BP=AP+PR+RQで、これが最小になるのは、4点A,P,R,Qが一直線上にあるときです。このときのP,RをそれぞれP’,R’としましょう。【図4】」
先生「それで?」
A君「△OP’R’は正三角形なので、∠AP’Oは120°ですね。」



先生「いまは、辺BCの外側に正三角形をつくって考えたけど、他の辺の外側につくって考えても同じ事だから、 OP+AP+BPが最小になるのは、∠OPA=∠APB=∠BPO=120°のときだね。少しごまかしたけど。」
A君「すると、【図5】の赤線のように道路をつくると、X計画よりも短くなりますよね。」
先生「その通り!実際の長さを求めるのは小学生には無理だからやめておこう。」
A君「でも先生、この形でトンネルを掘ると、もっと短くなりますよね。」
先生「………」







これも解答でしょう

(ペンネ−ム:kunihiro)

幅100マイルの道路なら距離も100マイルです。
正方形の内側全部が「道路と言い張る。」これですね!



正解者

kiyo teki 巷の夢
バレー部 Toru kunihiro
ばんちゃん Y.M モルモット大臣
浜田 明巳 杖のおじさん Underbird
shock8 夜ふかしのつらいおじさん yokodon
kirkland mhayashi





まとめ

今回の問題は、「最短シュタイナー問題」と呼ばれるもので、ネットワークを組む際に経路を最短にするというきわめて現実的な問題ですね。
答えは「ウエストのくびれたH計画」になるわけですが、この形が最短になるということが前提になれば、変数を設定して距離を表す関数にすれば後は簡単ですが、問題はなぜこの形が最短になるかということだと思います。この説明はさほど簡単ではありません。
Toruさん夜ふかしのつらいおじさんkirklandさんが、その説明をしてくださっています。どうもありがとうございました。
また、 数学の部屋数の流れなどでも、取り上げられていますので、参考にしていただければと思います。







E-mail 戻る top