MENU
274,866

スレッドNo.1760

交通渋滞

4 つの市 A, B, C, D があり、これらの間には以下のような移動手段があります。

A-B 間、B-C 間、C-D 間には、それぞれ移動手段 X1, X2, X3 があります。
各 X は、利用者が毎分 50 人以下であれば人数に関わらず 30 分で到着し、利用者が毎分 50 人を超える場合は 1 人超えるごとに所要時間が 1 分増加します。

A-C 間、B-D 間には、それぞれ移動手段 Y1, Y2 があります。
各 Y は、利用者が毎分 30 人以下であれば人数に関わらず 110 分で到着し、利用者が毎分 30 人を超える場合は 1 人超えるごとに所要時間が 1 分増加します。

これについて、以下の 2 つを考えてください。

(1) ある日、A 市から D 市まで、毎分 70 人が移動しようとしました。
各々自分の所要時間が最短になるよう経路を選択する場合、移動に合計何分かかるでしょうか?

(2) 実際にはその日の早朝に B-C 間の X2 にトラブルが発生し、終日利用不可になってしまいました。
しかしそれでも、A 市から D 市まで、毎分 70 人が移動しようとしました。
各々自分の所要時間が最短になるよう経路を選択する場合、移動に合計何分かかるでしょうか?

引用して返信編集・削除(未編集)

(1)8300(分)
________(20人)________
|<--------------------->|
A--(50人)--B--(30人)--C--(50人)--D
^^^^^^^^^ |_______(20人)________|


(2)10150(分)
_______(35人)________
|<------------------->|
A--(35人)--B--(0人)--C--(35人)--D
^^^^^^^^^ |_______(35人)________|

スペースキーが無視されるので、上記のような表現になっています。

引用して返信編集・削除(編集済: 2024年02月14日 06:50)

総計じゃなくて、各個人の所要時間でお願いします。

(2) は 10150/70 = 145 分で正解です。

(1) は……これどういう計算になったんでしょうか?

引用して返信編集・削除(未編集)

あ、わかりました、合計っていうのが誤解を招いたんですね。

例えば (2) の場合、
Y1→X3 のルートを通った人は、Y1 で 110+5 分、X3 で 30 分、合計 145 分
X1→Y2 のルートを通った人は、X1 で 30 分、Y2 で 110+5 分、合計 145 分
いずれの場合も所要時間の合計は 145 分。

と、合計というのはこういう意味のつもりでした。

引用して返信編集・削除(未編集)

はい。
合計って何をもっての合計だろうとずっと思っていたんですが、
各々自分の所要時間の表現があったので、全員の所要時間の合計で比較してしまいました。
後はプログラムで70人の分岐の仕方を分類し
(1)では全部で2556通りに分類でき、かかる全員のタイムの合計での集計での最小値探しを
(2)では上記のB-C間の通行が0人のパターン(全部で71通り)を集め、この中での最小値を探しました。
所要時間は何人が同じルートを選択しているかによって異なってくるので、一個人だけで最短時間のコースは
選べないからどうしても統計的処理になってしまいました。
(1)は(50+30+50)(人)*30(分)+(20+20)(人)*110(分)=8300(分)です。
また第2位は
A-B:50|B-C:31|C-D:51|A-C:20|B-D:19(人)
で(50+31)*30+51*31+(20+19)*110=8301(分)
または
A-B:51|B-C:31|C-D:50|A-C:19|B-D:20(人)
で51*31+(31+50)*30+(19+20)*110=8301(分)
の移動で起こる。
ちなみに(1)の正解は何ですか?
140(分)ということなんでしょうか?

引用して返信編集・削除(編集済: 2024年02月14日 07:00)

(1) はその人数にはなりませんね。
というのは、Y1→X3 の経路を通ろうとする人は 110+30 = 140 分かかることになりますが、
X1→X2→X3 に変更すれば (30+1)+30+30 = 91 分で済み、こちらに使用経路を変更するはずだからです。


プログラムで考えるなら、こう考えてみてください。

手順 1:70 人それぞれに番号をつけ、ランダムな経路を選択する
手順 2:1 番の人から順に、「もし自分が他の経路に変更したら自分の所要時間が短くなる場合、そっちに変更する」を 70 番の人まで実行
手順 3:手順 2 で誰か 1 人でも変更があった場合、誰も変更しなくなるまでさらに手順 2 を繰り返す
手順 4 :各々の移動時間が何分になったかを出力

もし可能であれば、X2 が完全に運休するのではなく、
・遅延で +5 分かかる場合
・遅延で +10 分かかる場合
・遅延で +15 分かかる場合
……
・遅延で + 70 分かかる場合
も出してみてください。
面白いことになります。

引用して返信編集・削除(未編集)

DD++さんの説明を十分理解していないかも知れませんが誘導に従って考えてみると
1人目は当然各駅を通るコースで
30+30+30=90分で行く。
2人目も
30+30+30=90
以下
50人目も90
51人目は条件より
31+31+31=93
52人目は
32+32+32=96
・・・・・・・
66人目は
46+46+46=138
ここで
67人目はこのコースだと
47+47+47=141
だが
A-Cコース+C-Dコースを選択すれば
110+30=140
なので、こちらが短時間となりコースを変更して進むことになる。
この変更を行ってもそれ以前の人はなんらコースを変更する必要は感じない。
以下68,69,70人目も当然このコースでいくことを選択する。(各自の所要時間は同じく140分)

だから70人が移動するのに140分が最小時間と考えてしまうのですが、どこの何がおかしいのでしょう?
なお70人の所要時間は皆同じでなくてもバラバラでも構わないのでしょうか?

引用して返信編集・削除(未編集)

GAI さんが誤解されているポイントは 2 つです。

1 つめ、
> 51人目は条件より
> 31+31+31=93
ですが、渋滞による遅延は自分が何人目かではなく一気に何人通ろうとしているかで決まります。
(通る人数を「70 人」ではなく「毎分 70 人」としているのはこのため)
つまり、51 人が X1-X2-X3 を選択するのは、51 人目が 93 分かかるのではなく、51 人全員が 93 分かかることを意味します。

2 つめ、
> 67人目はこのコースだと
> 47+47+47=141
> だが
> A-Cコース+C-Dコースを選択> すれば
> 110+30=140
ですが、X3 は渋滞が発生しているので 後者は 110+47 = 157 分になりますね。
(これも、移動が「毎分 70 人」であることに注意してください)

> なお70人の所要時間は皆同じでなくてもバラバラでも構わないのでしょうか
構いませんが、しかしその場合は遅いルートから早いルートに変更したがる人がどこかにいると思います。
だから、毎分人数が非整数でもよいとすれば、結果的には全員同じ所要時間に収束するはずです。
整数人数限定で考える場合は、1 分の差は残るかもしれませんね。

引用して返信編集・削除(未編集)

考えれば考えるだけ混乱してくるんですが
66人の集団で各市を巡れば(Xの手段のみ)かかる時間は各自共通で46*3=138分ですよね。
もしYの移動手段を使えばAからD市に一人でも最低110+30=140分の時間での非効率の行き方なので
70人が一斉に移動する手段はYの手段を取り入れないのがよく、単純にXだけの移動手段で
70人が共通に50*3=150分を使えば、これが最短の所要時間になるんではないのかな?

引用して返信編集・削除(未編集)

そうです。(1) は 150 分で正解です。
全員が X を利用した場合でも 50 分なので、どんな場合でも Y を 1 回利用するより X を 2 回する方が短く済みます。
よって全員が X のみを利用することになり、所要時間は 50*3 = 150 分です。

一方で、改めて (2) の場合、145 分が正解です。
X2 が運休しているので経路が完全に分離した 2 つしかなく、渋滞がなければどちらの経路同じ時間です。
ということは全員渋滞の影響が少ない方へ行こうとするので、各経路を 35 人ずつが利用して、所要時間は 115+30 = 145 分です。

ということで。
A-D 間の交通のみを考えるなら、X2 は存在する方が交通の便が悪くなる奇妙な経路なのでした。
これがゲーム世界の話で本当に A-D 間の移動しか行われないなら、X2 は即刻撤廃すべきということになります。
現実では B 市や C 市の住人もいるでしょうから X2 撤廃とは行かないでしょうけど。

引用して返信編集・削除(未編集)

参考として。
X2 に渋滞とは別原因で遅延が発生し、所要時間が 30 分からふえた場合を 5 分刻みで計算したものがこちらです。
(毎分の人数なので、経路利用者数は非整数もアリとしています)

BC 間  合計時間(毎分の X1-X2-X3 経路利用者数)
30 分 …… 150 分(50 人)
35 分 …… 155 分(50 人)
40 分 …… 160 分(50 人)
45 分 …… 158 分 20 秒(145/3 人)
50 分 …… 156 分 40 秒(140/3 人)
55 分 …… 155 分(45 人)
60 分 …… 153 分 20 秒(130/3 人)
65 分 …… 151 分 40 秒(125/3 人)
70 分 …… 150 分(40 人)
75 分 …… 145 分(35 人)
80 分 …… 140 分(0 〜 30 人)
85 分 …… 145 分(0 人)
90 分 …… 145 分(0 人)
95 分 …… 145 分(0 人)
以下ずっと145分(0 人)

あまりに直感的でない結果なんですが、なんでこんな現象が起こるんでしょうね?

引用して返信編集・削除(未編集)

このスレッドに返信

ロケットBBS

Page Top