いかにしてM/M/1 待ち行列理論の問題をとくか

情報処理技術者試験でよく出題されるM/M/1 待ち行列理論の問題の解き方を調べていたところ、- サルでもわかる待ち行列 が見つかった。たいへんよいコンテンツで大いに参考になった。ただ、検討してみて(自分にとっては)より簡単な形にまとまったのでそれを紹介してみる。本家では

何度もトライしたけど待ち行列が理解できない人向けです. 正確な定義や論理展開は重視せず,いかに効率的にこの理論を覚えることができるかに焦点を絞ってみました.

をゴールにしているが、ここではさらにレベルを下げて、何度もトライしたけど待ち行列理論問題が正解できない・すぐ忘れる人向け(理解しなくてもいい)とし、いかに効率的に情報処理技術者試験でこの問題を解くかに焦点を絞ってみた。

結論

λ … 単位時間あたりの、とぼとぼ歩いてくる患者数 [人数/時間]
σ … 単位時間あたりの、さらさらカルテを書いて医者が診る患者数 [人数/時間]

のとき、ターンアラウンドタイム(自分の診療時間を含む)は

ターンアラウンドタイム = $\frac{1}{σ - λ}$

待ち時間は、一人の診療時間は$\frac{1}{σ}$[時間/人数]であることから、

待ち時間 = $\frac{1}{σ - λ}$ - $\frac{1}{σ}$

動機

- サルでもわかる待ち行列 はとても覚えやすく、特にλ をとぼとぼ歩く患者、σ をさらさらカルテを書く医者に見立てるのが気に入った。ただ練習問題を解くときに、まずρ(込み具合)を$\frac{λ}{σ}$で求めてからさらに計算をするのを見て、「それなら最初からλ とσ だけで計算していったらもっと計算が簡単なのでは」と思ったのがきっかけ。するとターンアラウンドタイムが前述のようなとてもシンプルな式になった。

利点

式と計算が簡単になったことに加え、ρ を使わないことによってそもそも覚えることが減った。

また、分母に注目すると、以下のことが簡単にわかる:

ターンアラウンドタイム = $\frac{1}{σ - λ}$

  • 医者の処理能力が増えるほど分母が小さくなり、ターンアラウンドタイムが減る。
  • 患者数が増えるほど分母が大きくなり、ターンアラウンドタイムが増える。
  • 医者の処理能力より患者到着率が上回ると、値がマイナスになってしまい、いつまでたっても終わらない。

これはρ=$\frac{λ}{σ}$ からも同様にわかることだが、割り算が引き算になっていることで、よりわかりやすくなっているように思う。

さらに、うろ覚えでも間違いに気づきやすい。もし式を間違って$\frac{1}{λ - σ}$を計算した場合、値が負になるのですぐに間違ったことに気付く。 いっぽうρ を使う場合、間違えてρ=$\frac{σ}{λ}$ とするとρ > 1 となり、しっかり理解していればρが1以上になるのはおかしいと気付けるものの、負の値になることの気付きやすさには及ばない。

問題を解くのに必要なこと

まずは- サルでもわかる待ち行列 の理解に努める。

そしてλ とσ の意味を正しく覚えておく。「単位時間あたり」に着目しておくとよい。また、問題文中に直接λ やσ の[人数/時間]の値がなく、その逆数の単位である[時間/人数]が示されていることがある。例えば「患者が平均で15分に一人来る」とある場合、λ[人数/時間]は15ではなくその逆数の1/15。単位を手がかりにλとσを求められるようにしておく。

$\frac{1}{σ - λ}$の式は暗記しておくが、待ち時間の式はターンアラウンドタイムの式からから導き出せるようにしておく。そのためには、一人の診察時間が$\frac{1}{σ}$であることを理解しておかなければならない。覚える方法、また忘れてしまった場合はやはり単位を手がかりにするとよい。σ の単位が[人数/時間]でなので、それを[時間/人数]にするには、と考えれば$\frac{1}{σ}$になる。

練習問題

ある病院では、患者は平均で1時間に一人来る。また医者は一人で、平均で1時間に二人処理できる。このときの待ち時間は平均どのくらいか。

あえてシンプルな問題にしたのは、単に公式に当てはめて答えを出す前に、情景と答えをイメージしてもらいたいため。そうすれば公式や計算を間違えたときにおかしいと気づける可能性が上がるし、理解が深まる。

解答だが、解くにはまずそろえる単位時間を決める。1時間か1分が考えられるが、ここでは1時間にする。

λ = 1
σ = 2
ターンアラウンドタイム = 1/(2-1) = 1[時間]
待ち時間 = ターンアラウンドタイム - $\frac{1}{σ}$ = 1 - 1/2 = 1/2[時間] = 30[分]

平均で30分待って、自分の診療を30分してもらって、合計1時間かかる。イメージと合っていただろうか。

ここで医者の処理速度が2倍になり、1時間に4人診られるという条件に変えてみよう。すると$\frac{1}{ρ-λ}$のρ が2から4に変わるので、ターンアラウンドタイムが1/(2-1)=1から1/(4-1)=1/3になる。式がシンプルなので、ρ やλ の変化がどのようにターンアラウンドタイムに反映されるか、$\frac{ρ}{1-ρ}$を使う場合よりもイメージしやすい。

もっと練習してみたい人のために以下を挙げておく:
平成29年秋期問23 プリンタの平均印刷時間|ネットワークスペシャリスト.com
令和3年春期問23 M/M/1の待ち行列モデル|ネットワークスペシャリスト.com

補足

情報処理技術者試験にも以下のように$\frac{ρ}{1-ρ}$をベースにした問題が出題されるので、$\frac{ρ}{1-ρ}$もやっぱり押さえておかなければならない。場面に応じて両方使いこなせるのがよい。

平成26年秋期問2 M/M/1の待ち行列モデル|ネットワークスペシャリスト.com
令和元年秋期問2 M/M/1の待ち行列モデル|ネットワークスペシャリスト.com

夫婦同姓が義務付けられている国は世界中で日本だけ?

夫婦別姓はあきらめなきゃ、なんてない。 - 井田 奈穂 | LIFULL STORIES

それまでにも疑問を感じてきた夫婦同姓ですが、大量の名義変更に走り回っていた頃、法律によって強制されるのは世界中で日本だけという事実を知って驚愕しました。

について疑問に思ったので調べたこと・考えたことのメモ。

世界中で日本だけ

試験やクイズの正誤問題で「すべて〜である」「~だけ」のように強い制約がついている場合、たいてい答えは×になる。というのは、「すべて〜である」が○であるためにはすべての事例を調べそれが正しいことを確認しなければならないためだ。これは時に困難(または不可能)である。いっぽう×であるためには反例が一つ見つかれば十分なので、情報の裏取り作業が容易だ。

「夫婦同姓が義務付けられている国は世界中で日本だけ」という命題に対しては、もしこれが「先進国の中では日本だけ」なら別に違和感はなかったのだが、第一感として「さすがに他にもいくつかあるのでは?ちゃんと全部調べたの?」と感じた。

「世界中で日本だけ」の根拠

「夫婦同姓が義務付けられている国は世界中で日本だけ」と言われる根拠は

夫婦同姓は日本だけ? 主流は選択型、原則別姓の国も:朝日新聞デジタル

一方、政府は最高裁判決に先立つ15年9月、ある答弁書閣議決定していました。結婚すると、夫婦が同姓を名乗るよう法律で義務づけている国があるかどうかという問いに対し、「現在把握している限りでは、我が国のほかには承知していない」というものです。

と思われる。政府・官僚が調べた範囲では、反例が見つからなかったらしい。ただ、この時点では私はまだ「反例の一つや二つは結構すぐ見つかるんじゃないか」と思っていた。海外ニュースで、レイプされた女性側が逆に死刑になるような、わけのわからない男女差別が行われている国の話を聞く。そういう国で夫婦別姓のような女性の権利が認められているとは思えなかった。

反例探し

海外の夫婦別姓状況

に海外の夫婦別姓状況がまとめられている。量が多いのでひとまずアジア・中東の10か国を見ていくことにする。

いつの情報か

このページにある情報がどれくらい最新情報を反映しているかはわからない。はてなブックマークのコメントには「2000年より前の資料」とある。ただしタイの備考に2003年以降のことが書いてある。また韓国の※に「韓国では同姓同本禁婚制度を廃止する家族法改正の動きがあります。近いうちに法改正が実現しそうです。」とあり、家族法が実際に改正されたのは2005年。

タイの例

1.自己の名+夫あるいは妻の姓

とあり、最初これは今の日本と同じ仕組みで、さっそく反例が見つかったかと思った。しかし備考を見ると

2003年の憲法裁判所判例以降、婚姻した女性が姓の変更をする義務はないものと解釈されている。どちらを選択すべきかについては、議論が続いている(参考:Thai Law Online)。

とあり、誤解だったようだ。参考リンク先には

Since a 2003 ruling by a constitutional court, Thai women no longer have the obligation to adopt their husbands’ surnames after marriage. Instead, this has become a personal question and whether to change the surname or not can still be a matter of great debate for couples.

とあり、現行日本と同じではなく、選択的夫婦別姓であるようだ。

サウジアラビアの例

1.自己の名+父の名+祖父の名+父の姓

を見たとき、選択肢が一つしかなく、これは夫婦同姓が日本以外に存在することの反例だと思った。しかし備考に

このほかに曾祖父の名、高祖父の名も付け足すことができる。婚姻によって姓が変わることはない。婚外子も実父の姓を名乗る。

のようにあり、よくわからない。ただ「婚姻によって姓が変わることはない」とはっきり書いてあるので、夫婦同姓の強制ではないのだろう。

フィリピンの例

1.自己の姓+自己の名+夫の姓
2.自己の名+夫の姓
3.ミセス+夫の名+夫の姓

婚姻をした女は、1〜3に掲げる事柄を行うことができる。

これは自己の姓は変わらないものの、夫の姓が必ず付くことになり、名前の変更は必ずされると解釈できる。さらに、もし夫側の名前に妻の姓がつかないのなら明確な男女差別だ。

夫婦別姓はあきらめなきゃ、なんてない。 - 井田 奈穂 | LIFULL STORIES

なんで名字を変えたくないのかと聞かれるたび、「生まれ持った自分の名前だから」という他、答えがないという井田さん。

という人にとってこれが許容できるとは思われない。ただ、フィリピンの事情が今も変わらずこうなのかはわからない。

結論

「夫婦同姓が義務付けられている国は世界中で日本だけ」の明確な反例は見つからなかったが、フィリピンのように男女平等の観点からは日本よりも状況が悪いかもしれないと思われる例があった。

いずれにしても「夫婦同姓が義務付けられている国は世界中で日本だけ」と断言するには根拠不十分と思われるため、「夫婦同姓が義務付けられている国は世界中で日本だけとされる」「~といわれている」くらいにしておくのが妥当だろう。

英文和訳とAI

先日、ちょっと興味深い英文和訳例に出会った。

Google 認定教育者レベル 1 模擬問題集 (2020) : Cloud Smog

QUESTION 1

学習目的は生徒が話すときに投影の概念を理解することです。
プロフェッショナルの講演者がパフォーマンスを録画して共有している動画リソースはどこにありますか?

これはGoogle 認定教育者レベル 1 模擬問題集からの引用。全体的にやや不自然だが *1、 ここでは最も意味不明な「投影の概念」に注目したい。おそらく英語から日本語に訳されており、原文は確認できる。

Google Certified Educator Level 1 Exam Answers (2020) : Cloud Smog

QUESTION 1

Your learning objective is to get students to understand the concept of projection when speaking. Where can you find video resources from professional speakers who record and share their own public performances?

私は英文を読んで、the concept of projection の意味がすぐにはわからなかった。その理由は、projection が「投影」のことだと誤解したからだ。学校教育現場では、私が子供の頃はプロジェクターでスクリーンに投影してみせる授業があった。今なら、PC やタブレットの画面を大きなモニターに投影するのだろう。そういうわけで教育のトピックにおけるこのprojection は「投影」という意味だと思い込んだ。

しかしそれでは次の第2文「自身の講演を記録・共有する、プロの講演者による動画はどこで探せますか?」に意味がつながらない。しばらく考えたり調べたりして、このprojection は「投影」ではなく「計画(プロジェクト)」の意味だとわかった。つまりプロの講演者は場当たり的に思いついたことを話すのではなく、事前に話す内容を検討し計画を立てて講演をする。そういう話し方があるのだと理解させることが今回の教育の目的だと第1文で述べていたわけだ。第1文を訳すと「(あなたの生徒の)学習目的が、事前の計画に沿って話すという概念を生徒に理解させることだとします。」くらいになる*2

私がこの第1文を正しく訳すためには、第2文を読んでから、二つの文のつながりを考える必要があった*3。第1文だけ見せられて訳しなさい、ときたら、正しく訳すことはできない。AI はこれを正しく翻訳できるのだろうかと思い、Google 翻訳とDeepL で試してみた結果、

Google 翻訳:

あなたの学習目標は、話すときに投影の概念を生徒に理解させることです。 自分の公演を録音して共有するプロのスピーカーからのビデオリソースはどこにありますか?

DeepL:

あなたの学習目標は、生徒に話すときのプロジェクションの概念を理解してもらうことです。プロのスピーカーが自分のパフォーマンスを録画して公開しているビデオ資料はどこにありますか?

Google 翻訳はprojection を「投影」と誤訳している。DeepL はprojection を無難に「プロジェクション」としているが、プロジェクトとは違ってプロジェクションは一般に使われている日本語とは言えず、適切な翻訳ではないだろう。現在の一般的に利用可能な翻訳ツールでは、まだこの例を適切に翻訳することはできないようだ。

英語のネイティブスピーカーならば第2文を読まずにthe concept of projection when speaking だけで「ああ、計画に沿っての講演の話だな」とわかるのだろうか。いずれにしてもAI がこの文章も適切に翻訳してくれるようになるのは、そう遠い未来ではないのだろう。

*1: Google認定教育者試験受験体験記 - 今日も明日も授業道~国語科女性教員奮闘記~Google認定教育者を目指そう! - ならずものになろう を見るとGoogle 認定教育者の試験の日本語は実際ヘンらしいので、こういう日本語訳になっているのもあえて本番を想定してかもしれない。

*2:受験英語がベースなので、我ながら訳が下手だ。

*3:第1文に下線が引かれていて、そこを訳しなさいと出題されたときに、第2文も読んでつながりを考えないと正答が難しいという意味で、高校生向けとしてなかなかいい英文和訳問題ではないかと思う。

Ubuntu のwhich コマンド

Windows 10にWSL 2 Ubuntu をインストールしている。Debian 系のディストリビューションを使うのは初めてで、まだ慣れない。

ところで、Ubuntu のwhich コマンドが私の常識と異なり、コマンドが見つからなかったときに何もメッセージを表示しない。

# Ubuntu on WSL 2
$ which non_existent_command
$

# Cygwin
$ which non_existent_command
which: no non_existent_command in (/usr/local/bin:/usr/bin:(※以下略)

Cygwin のwhich はGNU 製で、which --version でそれがわかるが、Ubuntu のwhich はバイナリではなくシェルスクリプトで、--version オプションなどはない。あるのは-a オプション(すべて表示)のみ。

まずUbuntu のwhich コマンドがどのパッケージに含まれているか確認してみる。

$ which which
/usr/bin/which

$ dpkg -S /usr/bin/which
dpkg-query: no path found matching pattern /usr/bin/which

/bin -> usr/bin のシンボリックリンクが張られていて、本体は/bin/which のほうだった。

$ dpkg -S /bin/which
debianutils: /bin/which

debianutils パッケージに含まれていることがわかった。そこから少しウェブで検索したが、Ubuntu(Debian)がGNU which を使わない理由はわからなかった。

[2021-11-12追記]
Debian's which hunt [LWN.net] によると、which コマンドはPOSIX に含まれておらず、GNU which 以外にもいろいろな実装がある。GNU which の動作が当たり前だと思っていたことがそもそも間違いだったようだ。