系列接続問題を「人間関係の解析」から「図形の配置問題」に転換する

ZTシステムの作図法の基本は,系図を系列に分解しそれらの相互位置関係を定めることにある.系列とは先祖ノードの直系血族とその配偶者の集合であり,自ずと木を構成するから系列単体を描画するというのは初歩的な課題だが,入り組んだ系列の相互関係を定めるというのは必ずしも容易ではない.この部分に関してはこれまでにも何度も試行錯誤的な作り替えを実施してきた.このような試行錯誤に終止符を打つために提案されたEstablishMajorTribeChainが廃止されたのは2019/02/04だ.系列優先ノードの選択基準を緩和するという方向に動き始めたのはこの頃からと思われる.緩和の方向性は最終的には,系列の接続関係を「人間関係の解析」から「図形の配置問題」に転換するという方向を目指していたのではないかと思う.この方向性はまだ完結したとは言えないが,大幅に緩いものになってきていることは確かだ.

SUPPORTSIMPLEGRAPHオフのシステムで源氏物語全系譜6.1.ZELの全体図を#4 明石中宮で開いてTribeRelocationの【5.2】重婚同類グラフ検定の事後処理を行なうステージでLIST::nextで停止した.前にこのエラーが発生したときには,対象リストを取り違えているという論理ミスがあったが,今回はどうなっているのだろう?

今回は事前にplist->find(pbox)を試しているにも関わらず発生している.このエラーが発生する一つ前に,「ノード対世代不一致」というのが起きて,PairBoxGeneChangeが実行されている.この関数の中でノード対が削除される場合がある.いや,そもそもエラーは(!find(listnod))ではなく,(PHASE > INITIALSTATE)という理由だ.

明らかにPAIRLIST #1443のbottomlistの値が間違っている.⇒PairBoxGeneChangeの実行で不良が発生している.NAMEBOX:RetrieveGhostでノード対を破棄したときに起きているようだ.⇒plist->deleteElement(pairbox, true);で発生している.PAIRLISTはdeleteElementを持っていない.⇒PAIRLIST::dataCountDownでリスト終端ノードが端点共有である場合を見落としていた.

同上サンプルを開いて,TribeRelocationの【7.8】多重カードゼロを検査して変化なしなら検定打ち切りステージでTRIBEBOX:SetMinorTribeのエラーが発生した.DisConnectedGraphを強制モードで実行しているところだ.障害系列は#1120 先祖=#801 左大臣(梅枝)(0)で優先仮ノードはNAMEBOX:#1336 今上(2),関係は配偶者,優先実ノードは#415 明石中宮(0)で関係は養子,所属系列は#1056 先祖=#427 一院(0)の始系列だ.この接続関係は「逆婚姻関係」と呼ばれるものに相当する.DecideTribeTypeはPRIME_BTWLEFTを返している.確かに,今上(2)はDOUBLYBLESSED,明石中宮(0)はRIGHTHUSBANDだから,PRIME_BTWLEFTという判定は正しい.

ここの論理は,優先仮ノードが配偶者で系列種別が婚姻関係でも逆婚姻関係でもない場合で,この系列が始系列であった場合の代替ノードを探すというものになっているが,始系列でない場合は無動作なので当然配偶者のままになっているから,明らかにおかしい.また,始系列の場合は通常は基準ノードが最初から確定しているのだから,代替を探すということ自体かなり奇妙な感じがする.複数系統の場合にはこのようなことが起こり得るかもしれないが,いずれにしても,始系列以外でここで停止するというのは誤りだろう.

同上サンプルを#48 四宮(桐壷院の)で開いてTRIBEBOX:DecidePrimaryNodeで停止した.優先仮ノード不在エラーが起きている.障害が起きているのはTRIBEBOX: #1068 先祖=#811 大臣(橋姫)(0)で,優先ノードはCARDLINK:#546 @70浮舟[0].浮舟は仮ノードを4つ持っているが,うち3つは一院系列,他の一つは常陸介系列で,橋姫系列というのは存在しない.

浮舟の母は2つ結婚を持っている.相手は八宮と常陸介で,浮舟は両方に属しているがどちらも相手方の系列で展開されているのだろう.従って,大臣(橋姫)系列の優先ノードとなり得るのは浮舟の母だけだ.DecidePrimaryNodeではこの後,TRIBEBOX:GetAlternativePrimeNodeで代替候補の浮舟の母を見つけているので,問題はない.つまり,ここでは停止しなくてよい.

予想されていたことだが,非連結系列が出てしまった.

同上サンプルを#81 弘徽殿女御で開いて,TribeRelocation【11】系列包括矩形領域を集積して系統を並列配置するステージで非連結系列が発生した.「始系列参照パスが途切れている系列」が3件.

  1. #110566 先祖=#789 左大臣(真木柱)(0)[27] 優先=#653 左大臣の女御(0)→#425 冷泉院(0) →主系列#110502:摂政太政大臣 type=婚姻関係
  2. #110568 先祖=#853 宰相の娘(0)[28] 優先=#853 宰相の娘(0)→ #425 冷泉院(0) → 主系列#110502:摂政太政大臣 type=婚姻関係
  3. #110570 先祖=#857 中納言の娘(0)[29] 優先=#857 中納言の娘(0)→#425 冷泉院(0)→主系列#110502:摂政太政大臣 type=婚姻関係

少しおかしい.これら3系列はすべて摂政太政大臣系列を参照しているが,摂政太政大臣系列は始系列ではなかったのか?⇒Majortribeが設定されていないためのようだ.いや,設定されているが,TRIBEBOX:GetMajorTribeでNULLを返している.GetMajorTribeでは

  1. 始系列である場合
  2. 仮ノードがノード対を持っている場合
  3. 仮ノードがBTW右手本人の場合
  4. 仮ノードがBTW左手本人の場合
  5. 仮ノードがノード対参照先実ノードで系列種別が逆婚姻関係の場合

以外は有効な系列接続関係と認めていない.しかし,現行ではもっと多様な関係が許されている.これには,親子関係による接続が含まれていないし,配偶者→配偶者の参照も認められていない.これを以下のように整理した.

  1. 仮ノード:本人 x 実ノード:本人 → 親元関係
  2. 仮ノード:本人 x 実ノード:配偶者 → 婚姻関係
  3. 仮ノード:配偶者 x 実ノード:本人 → 逆婚姻関係
  4. 仮ノード:配偶者 x 実ノード:配偶者 → BTW左接続関係/BTW右接続関係

すべてこの区分で解決した.

▲同上サンプルを#94 明石の上で開いて,DecidePrimaryNodeを実行中,MARGBOX::GetUpperNodeで「親ノード不正」エラーが発生

コメントを残す

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

CAPTCHA