ダイヤモンド                                 戻る

 当HPがいつもお世話になっているHN「YI」さんからの出題です。
                                       (平成26年4月12日付け)

 画像を見て答えてください。

1.左の「1」からスタートする。分かれ道にさしかかったら好きな方向に向かう。ただし、左に
 戻らず、右に右にと進んでいく。いちばん右に到着したときに、通った数字の合計が最も大
 きくなるような進み方を答えよ。

2.このような問題について、どのようなネットワークでも答えを導ける一般的な方法を考えよ。


 この問題は中学二年生のときに作りました。同級生は誰も相手にしてくれなかったのを覚え
ています。





























(答) らすかるさんが考察されました。(平成26年4月12日付け)

   1→12→13→14→27→21→20 だと思います。


 DD++さんが考察されました。(平成26年4月13日付け)

 1.の解は、らすかるさんの解と同様に、「1、12、13、14、27、21、20」で、合計108 が最大。

 2.について、右から順に以下の作業をする
   ・一番右の列の各マスはそのままにしておく。(今回は、20をそのままに)
   ・右から二番目の列の各マスについて、その右に繋がっている数のうち最大のものを
   加えて書き換える(今回は上からそれぞれ41、39、37に書き換える)
   ・右から三番目の列の各マスについて、その右に繋がっている数のうち最大のものを
   加えて書き変える(今回は上からそれぞれ61、67、50、68、52に書き換える)
   ・左端まで繰り返す(今回は108になり、これが合計の最大値)
   ・左端からスタートし、右に繋がっているうち最大の数が書いてあるところを選んで進む
   ・数字を全部戻してその経路を通るのが答え


(コメント) なるほど、DD++さんの逆算の方法が自然な計算ですね。
      私の備忘録の「スケジュール問題」による解法と同じ考え方です。


 YI さんからのコメントです。(平成26年4月13日付け)

 DD++さんの解法はわかりやすいですね。私が考えていたのは、もっと分かりにくい考え方
でした。

・任意の点Aから点Bへ向かう道筋をルートと呼ぶ。
・ある2つのルートについて一方を通るともう一方を通ることができない場合、二つのルート
は独立であるとする。

1.適切な2点A、Bを考え、AからBへ向かう最も点数の高いルートを探す。それが判定でき
 なければ、別の2点を選びなおす。

2.AからBに向かうルートに接しているルート、つまりルートA、Bから「開いている」ルートを
 すべて探す。

3.2で選んだすべてのルートに対して独立、かつ、1.で見つけたルートに含まれていない、
 ルートA、Bの部分をすべて消去する。

4.これを繰り返すと、答えのルートだけが残る。

(具体例)で説明すると、
1.画像の左側の1と8を選択。1から8に向かうルートは上側のほうが点数が高い。
2.A,Bから開いているルートは、15-12と10-15
3.1-10は1のルートに含まれていないが、10-15と独立でないので、残しておく。10-8
 は、条件に合うので、消去する。