The road coloring problem を読んでました。 問題自体知らなかったのですけど、abstract にオートマトンと書いてあったので、ついふらふらと。

この記事 の説明はちょっと変だな。スタート地点がどこであっても「青赤赤青赤赤青赤赤」のぴったり９歩 動くと必ず黄色の地点にいる、というのがこの色分けのポイント。 今どこにいるのか、どこで止まればいいのかすらわからなくても目的地に到着できるのです。 記事にあるような「目的地をいつかは通りがかるような色の列」なら40マイクロ秒くらいで 解かれてると思う。

論文に乗ってた具体的な構成法は、(1) "Spanning Subgraph" を適当に１個作る。 Spanning Subgraph とは、"元のグラフの頂点を全部含む" && "それぞれの頂点について、 それを始点とする辺を１個だけ含む" グラフ。Spanning Subgraph は必ず、「ループとループにぶら下がったツリー」 が何個か並んだ形をしていることに注意。 (2) 作った Spanning Subgraph の「ぶら下がったツリー」部分の高さに注目。 一番高いツリーが１個だけだったらOK、3に進む。同じ高さのツリーが２個以上あったら、 この問題の前提とするグラフでは、どっちかのツリーを変形して「もっと高く」できるのでそうする。 (3) そうしてできた Spanning Subgraph に属する辺を全て同じ色（例えば 赤）で塗る。 残りの辺は他の色で適当に塗る。

…という感じ。これが求める色塗りになってることの証明は背理法なので、 具体的にどう色をたどれば一カ所に集合できるのかは、証明からは直接読み切れてないですが、 直感的には、「赤をたどりまくってループの上に合流して、時々別の色で別のツリーにジャンプ」 を何回か繰り返したら一カ所に集まる感じかな？

"The solution is not that complicated. It's hard, but it is not that complicated," Trahtman said in heavily accented Hebrew. "Some people think they need to be complicated. I think they need to be nice and simple."