ZTシステム構成図7.ZEL #15 selectedcardで水平スプリット

ZTシステム構成図7.ZELの全体図を#15 selectedcardで開いて,系統並び替えの出口検査で水平スプリットを検出.

この図面には6個のTYW婚が出現している.

  1. #2067:#2066 baselist基本世代枠(2)+→#773 baselist基本世代枠(0)
  2. #2131:#2130 topUndo(1)+→#767 topUndo(0)
  3. #2139:#2138 anod[](4)+→#1057 anod[](1)
  4. #2211:#2210 Bobject(3)+→#912 Bobject(0)
  5. #2219:#2218 Bobject(9)+→#1093 Bobject(1)
  6. #2311:#2310 nodule(24)+→#902 nodule(0)

スプリットの原因となっているのはbaselist基本世代枠だ.baselist基本世代枠は3つ仮ノードを持っている.(0) #773, (1) #1067, (2) #2066だ.(0)はtribelistの子ども,(2)はtopolgyの子ども,(1)がTYW本人ノードで配偶者GENELISTを持っている.うち,(2)はかけ離れた位置にある.(1)と(2)が同一セグメントと認定されるタイミングを調べてみよう.いや,違う.(1)は不可視でセグメント値を持っていない.消去された仮ノードだ.(2)はLDRで,(0)がTYW本人だ.(0)と(2)のセグメントブロックがマージされるタイミングでは下図のようになっている.

image

この操作自体には問題はない.問題はそれ以前に起きている.前方(画面右)の黒いブロックは144というセグメント値を持っている.その次の草色のブロックは29で,上記のタイミングでこのブロックは前方のブロック144と接触する位置まで移動しているが,その後方になる黒のブロックはいずれも144という値を持っている.つまり,すでにこの時点で誤りが発生している.

image

!解けた!ただし,この解はまだ,暫定的なものだ.MAXIMALGRAPH::mergeUpperSegmentで「goodsonが上位ノードの枠内にあり,結婚点が一致している場合は子ども枠上位ノードと接合」するという規則を一時的に止めることによって得られた結果だ.この修正が果たして一般的に通用するものであるかどうかは今のところ不明だ.⇒いや,これは外しても大丈夫なようだ.この条件に合致するものは相当あるが,なしでも問題なく解けている.この論理の問題点は対象結婚枠が「タイト」でなくても上位ノードと接合できるという点だ.

上記サンプルを#24 UNDOCHAINでソートして三極検定レッドラインオーバーが発生した.かなり無茶苦茶なひどい図面になっている.

image

SUWではなく,単純にブレークすれば正常な図面が出力される.

image

TRIBELIST::AdjustTribeGenerationで「先祖ノード絶対世代番号不一致」が大量発生している.⇒この問題は後から見ることにする.mergeUpperSegmentで上記の修正を元に戻せばエラーは解消するが,それでは元の木阿弥だ.UNDOCHAINのケースとselectedcardが両立するような解決案として,goodsonでマージする条件として対象結婚枠がIsElderWifeBoxではないという条件を付け加えた.これでどちらも通るようになった.

これが問題の完全解になっているとは思われないが,少なくともこれまでよりはましな解になっていることは確かだと思う.現行リリース版ではエラーが多発しているので,「バレンタイン・バージョン」と称する版を所内リリースした.

「先祖ノード絶対世代番号不一致」の問題に移ろう.この事象もよく分からないところがある.絶対世代番号と物理世代番号の間で14もの差が出ている.それだけでなく,エクスポートした重婚グラフもかなりおかしい.この図面は仕上がりで12世代だが,重婚グラフでは11世代しか出ていない.

image

そもそも先祖ノードが「配列要素」となっているのが意味不明.

image

ここには,couplingかないしCOUPLINGが来なくてはならないところなのだが… しかし,婚姻グラフ(多重グラフ1)の連結成分リストの出力は正しいように思われる.SIMPLEGRAPH:dumpComponentを書き直して,簡単なリストを出力する関数SIMPLEGRAPH::dumpComplistを作った.

SIMPLEGRAPH::dumpComplist 連結成分リスト sc=1 list=#1848 k COMPLIST 1848
   1 [0]coupling COUPLING
   2 [1]pagesetup PAGESETUP
   3 [1]familytree FAMILYTREE
   4 [2]topology TOPOLOGY
   5 [2]linktable
   6 [2]namesort NAMESORT
   7 [2]partialmap PARTIALNAME
   8 [2]undosys UNDOSYSTEM
   9 [2]extraslot2
  10 [3]SIMPLEGRAPH graph3 keisengraph graph2 graph1 tajugraph1 tajugraph2 tajugraph3 tempgraph copygraph
  11 [3]MARGTABLE MDB
  12 [3]UndoChain UNDOCHAIN UndoCurptr undochain
  13 [3]longtable RecordList
  14 [3]CARDTABLE PDB
  15 [3]tribelist TRIBELIST
  16 [4]complist
  17 [4]starttribe TRIBEBOX
  18 [4]treeview TREEVIEW
  19 [4]BASETABLE
  20 [4]undotop
  21 [4]baselist基本世代枠 GENELIST
  22 [4]nodelist NODELIST
  23 [4]anod[]配列
  24 [4]anod[]配列
  25 [4]edgelist
  26 [5]topUndo UNDONODE
  27 [5]配列要素 CARDLINK
  28 [5]EDGELIST
  29 [5]配列要素 MARGLINK
  30 [5]GENEBOX GENEBOX
  31 [5]COMPLIST
  32 [5]ARRAY
  33 [6]MARGBOX margbox
  34 [6]nlist
  35 [6]NAMEBOX nambox
  36 [6]anod[]
  37 [6]pairlist PAIRLIST
  38 [7]NLIST< LISTNODE,CID>
  39 [7]PAIRBOX PAIRBOX
  40 [8]LIST LIST
  41 [8]Bobject Bobject
  42 [9]所属グループ
  43 [9]衝突検定リング
  44 [9]圧縮検定リング
  45 [9]DATALIST DATALIST
  46 [9]描画Yリスト
  47 [9]親参照リスト
  48 [10]nodule

連結成分リスト 成分数=48 ノード数=86 世代数=11 min=0 max=10

世代数は11でこれは実際の系図出力より1少ない.この食い違いがどこで生じているのかを見ておこう.ノード数=86は実際のカード数188より大分少ないが,これは終端ノードを省いているためだ.これを追加したグラフを作ってもよいが,効率を落とすだけなので省くのが正解だと思う.世代数が1少ないというのも同じ理由だ.確かに省略されている分,間違い易い.

多重グラフ1の連結成分リストは完全に正しいと言ってよいだろう.重婚グラフは節点数が46で成分数48より2少ない.重婚グラフの節点は重婚クラスタであり,多重グラフ1の連結成分に他ならないのでこの食い違いは問題だ.落ちているのは,1 [0]coupling COUPLING と2 [1]pagesetup PAGESETUP のようだ.いずれにしても重婚グラフがまちがっているか,ないし,エクスポートでやり損なっているかのいずれかだ.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA