状態遷移を考える時の状態の定義について、考えてみたことのまとめ

状態遷移を考える時の状態の定義について、状態とは何かというレベルから考えてみた。

背景

仕事で関わっている生産管理の仕組みの中で、ある製品を作るために必要とされる材料について、
その状態遷移考える必要があり、客先のIT部門がスパゲッティのように矢印が絡み合った、ずいぶん複雑な状態遷移図を提出してきました。

状態遷移図が複雑化する事の弊害は良く知られている事だと思っていましたので、
こういう状態が本当に必要なのか?という趣旨の指摘をいくつかしたところ、客先の怒りを買ってしまいました。

打ち合わせが終わった後で、何が良くなかったのかを考えてみようと思って状態遷移図を前に頭を動かしてみたのですが、
そもそも、私自身が状態遷移図に登場する状態をどのように定義するべきなのかを知らない事に気づきました。

そこで、ネット上をあたってみましたが、状態遷移図の描き方や状態遷移図の活用方法
—— そこからもう一歩踏み込んで有限オートマトンについての議論につなげている記事はいくつもみつかるのに対して、
「状態とは何で、どういう基準で定義するべきものなのか」を議論している記事を見つける事はできませんでした。
そんな訳で、この記事では、自分自身の頭で状態について考えてみたことまとめてみました。
(個人で考えた範囲なので、特に後半はまとまりきっていないですが、ご容赦ください)
「状態について考えるなら、こういう資料があるよ!」とか、「この発想はここが変だ」というのがあれば、ぜひご意見をいただきたいです。

発想の土台に「生産管理の仕組み」があるので、それがバイアスになっている可能性が高く、
「状態」一般についての議論ができているとは思っていませんが、この記事が同じような悩みを持っている人の一助になれば幸いです。

「状態」を辞書で引く

まずは言葉の定義からあたってみる事にします。
お手軽に使えるgoo辞書で引いてみると、「人や物事の、ある時点でのありさま。
とあります。

今回議論しているような状態について、英語で表すときに使われる"State"をOxfordの辞書で調べてみると「The particular condition that someone or something is in at a specific time.」とあります。


私はこれを「ある時点での、人や物の詳細な様子」と読み解きました。
この感じからすると、英語でも日本語でも、状態の指す意味合いは大差ないように感じます。

翻って複雑だなあと思った状態遷移図を見つめながら考察していくと、いくつかの事が分かってきました。

状態は、大きく2種類に分けられる

今回、考察した状態遷移図そのものを見せる事は出来ないのですが、遷移図で表現されている状態は
「ある材料がどこにあるか」で特徴づけられる状態と「ある材料に対してある操作をした時にどうなるか」
で特徴づけられる状態に大別できることが分かりました。

この考えを突き進めてまとめると

  • 材料が「どこ」に置いてあるかで表現される状態。
    ここで言う「どこ」は、物理的な場所か、論理論理的場所かを問わない。
  • 材料に対してある操作をしたときに、操作に対するリアクションとして表現される状態。
    ものの価値に対して変化を与える事で表現される状態。

ではなかろうかという考えに達しました。

可逆と不可逆

ここで、学生時代に習った熱力学の講義がよみがえってきました。
熱力学で理想気体について議論しているときに、可逆的な状態と不可逆的な状態を扱ったことを思い出したのです。

これを当てはめると、どこにモノがあるかで表現できる状態は可逆状態で、モノに対して操作をした結果得られる状態は不可逆状態であると推定できます。
可逆と不可逆の違いは、熱力学のアナロジーから考えれば、色々な変化経路をたどった後でもエントロピーが変化しているか否かで特徴づける事ができ、
ものの情報(今回扱っている材料の場合には、より抽象化した、モノの価値の情報)に変化があったかで特徴づける事ができそうだという理解に達しました。

何を状態にするか

そこまで考えて、当初の状態遷移図をシンプルにする作業に戻ります。
最初にやったのは、現状の状態遷移図に描き表されている状態が、大別したどちらのパターンにあるのかでした。
パターン分けするうえでは、状態遷移図の遷移を表す矢印が、不可逆的な価値変化を伴うかという点に注目しました。
例えば保留登録という処理は、保留解除という処理で元の状態に可逆的に戻る事ができるとされているので、「保留」は可逆状態です。
材料の消費が起こった後に使用済み在庫の状態に遷移するケースでは、消費した後の在庫は消費前の在庫に対して使用できる量が減っているので、不可逆的な状態遷移と分類します。

まとめ:シンプルな状態遷移を作るために

モノの価値に着目して状態遷移図を見直してみると、価値変化のある状態遷移と価値変化のない状態遷移が混在していて、
非常に複雑な状態表現になっている事が分かりました。

今回は、価値変化の無い状態を切り出して、場所の移動という別のシーケンスで表現しなおしました。
すると、一緒の状態遷移図上では別の状態として扱われていた状態が、
材料がある場所からある場所へ移動するという同じ表現で考えられるようになったり、
状態Aの材料に対して、操作Sを加えると状態Bになるのに、そこから価値変化なしで状態Aに戻っている遷移のような、
状態遷移図上は価値が変化しないはずの状態遷移になっているのに、実際には価値変化が生じているケースを発見でき、
状態Bから状態Aに変化するための操作が抜けている事を発見する事も出来ました。
こうして整理する事で、本質的な材料の状態を扱う状態遷移図はシンプルにすることができたと思っています。

もちろん、全体を見渡すためには、別々にした遷移図(価値変化のある状態遷移と価値変化の無い状態遷移)を組み合わせて見る必要があり、
組み合わせてしまうと見かけ上は複雑さが取り除かれていないように見えます。

しかし、上記のような観点で一度状態遷移図を整理しなおしたところ、
スパゲッティのように絡み合っていた状態遷移がずいぶんスッキリ理解できる程度には落とせたかなと感じています。

状態遷移図は複雑なのが当たり前という状態に対して、他のエンジニアの方がどんな対応を取っているのかを、ぜひ教えていただきたいです。