The Art of Multiprocessor Programming 練習問題3と4と5

1章の問題です。

練習問題3

○-----------------------------------
Alice Bob
------------------------------------○

こんな感じに Alice の窓辺に缶を置いてBobの家まで紐を伸ばす。
同様に Bob の窓にも缶を置いて Alice の家まで紐を伸ばす。
Alice は窓辺の缶が倒れている事を確認したら、ペットを庭に放す。
Alice はペットが餌を食べて家に戻った事を確認したら窓にある缶を立ててBobの缶を倒す。
Bob は窓の缶が倒れている事を確認したら庭に餌を出し、窓にある缶を立ててAliceの缶を倒す。

練習問題4
ギブアップ。わかりませんでした。
スイッチの初期状態がONの場合について、ここで答えを教えてもらいました。
スイッチの初期状態が不明の場合はさっぱりわかりません。

練習問題5
最後尾の囚人が他の囚人の帽子を数えて、赤が偶数個あれば「赤」と答え、そうでなければ「青」と答えることにする。
最後尾の一つ前の囚人は自分より前に並んでいる囚人の赤い帽子の数を数えれば、自分が何色の帽子なのかがわかる。これは確定する。
それ以外の囚人は、自分より後ろに並んでいる(最後尾以外の)囚人の帽子の色と、自分より前に並ぶ全ての囚人の帽子の色と、赤が全体で遇数奇数のどちらかであったかがわかるので、
自分の帽子が何色なのかを正確に答えることが出来る。
従って、最後尾以外の囚人は全て助かる。