MarkovJuniorについて その2 動作と結果

MarkovJunior

行っていることは、以下の4行のソースコードの色の置き換えだけ。

色の置き換えだけで、結果として限られた範囲に隙間なく通路を掘ることが完了している。

 

<markov values=”BRWA” origin=”True”>
  <one in=”RBB” out=”WAR”/>
  <one in=”WBB” out=”WAR”/>
</markov>

 

処理の概要全226工程の置き換え処理の中で40工程を抜粋。

~ 略 ~
<markov values=”BRWA” origin=”True”>
  <one in=”RBB” out=”WAR”/>
  <one in=”WBB” out=”WAR”/>
</markov>

ソースコード動作の私的分析解釈説明。

事前定義部分:
<markov>~<markov/>はMarkovNode処理をするコマンド。処理手順は後述の動作部分4番以降。

 

values=”BRWA“は使う色の宣言。黒(B)赤(R)白(W)灰(A)。

 

origin=”True”は開始始点の宣言(False又は省略で開始始点ランダム)。True指定で中央から開始。

動作部分:
1:色指定values=”BRWA“の1色目のでまず全面を塗りつぶす

2:開始始点指定origin=”True”で中央から開始。

3:色指定values=”BRWA”の2色目の赤を中央に塗る。

2行目の<one in=”RBB” out=”WAR”/>の処理開始
4:全エリア中縦横で1つの部分「赤黒黒」を探索。発見したら「白灰赤」に置き換え。

例1

例2

5:4の処理を部分「赤黒黒」が探索できなくなるまで繰り返す。
※単なる色の置き換えが結果、赤=現在位置、灰=掘り進めた場所固定、白=掘り進めた場所可変、
黒=まだ掘っていない場所、の意味表現。

 

3行目の<one in=”WBB” out=”WAR”/>の処理開始
6:全エリア中縦横で1つの部分「白黒黒」を探索。発見したら「白灰赤」に置き換え。
7:6の処理が1回成功したら4に戻る(ここは繰り返さない)。
※単なる色の置き換えが結果、行き止まった前回探索の再掘り直しの意味表現。
8:6の探索ができない場合、処理完了。

 

 

規則性のある繰り返しの単なる【色の置き換え】が、

結果「まるで試行錯誤して知性があるかのような結果」の図になる。

迷路を自動生成するゲームや、

限られた空間内で指定サイズオブジェクト配置の最適解の模索(どちらかといえば自己組織化)、

樹木の根、地下茎等の根の動作模倣等、

色々と利活用が考えられる。