2013年6月16日日曜日

L search memorandam (1)

Lsearch は、「三国同盟」または「陰の三国同盟」と呼ばれる。または「定員確保」や「予約」などと呼ばれることがある。

L search は先に示した U search と同じアルゴリズムを使って首尾よく求めることができる。U search は Candy matrix を使って、Ur(行) と Uc(列) の2種類があったが、L search はLb(ブロック), Lr(行)、 Lc(列)の3種類がある。そして、gb-、gr- gc- の3種類の g_matrix をcandy matrixのかわりに使う。 T search も同じマクロを使い、殆んど同じアルゴリズムで求められる。

さらに、U search でみたように、room=2,3,4,5 は同じマクロで求められる。このあたりの関係や記号の扱いは、

http://kmatsu4.blogspot.jp/2012/11/u-search-memorandam-1.html

を参照されたい。

特に、Pencil Work の経験から開発された「定員確保」と「陰の定員確保」の技の名称は、PCを使った Candidate Table (Candy matrix)から来る ” Hidden ” と ”Naked ”のNaming と逆の印象を与え、理解しにくい面があるので、注意を要します。

大雑把な説明をすると、3部屋に特定の3人しか入れないのに、それ以外の予約客が紛れ込んでいて(特定客が隠れた状態になっている)その部屋から追い出す(消去する)のが、Hidden Triple という技で、単に「三国同盟」とか「定員確定」とか呼ばれています。
 また、3部屋宛に特定の三人で予約が決まっていて、ハッキリと裸の状態にあるのに、他の部屋にも、Double Booking されているので、その予約を取り消す(消去する)というのが、Naked Triple という技です。

”Ryuzen”ソフトでは、数学用語により、 Explicit =  Naked ,    Implicit = Hidden を使っています。

 L ( Implicit Triples ) を例にとり、search flow を説明しよう。 

① L_search ( M45, 5 )
              > Lb_search    ( M45, 8)
              > Lr_search    ( M45, 9)
              > Lc_search    ( M45, 10)

② Lb_search >  hot_candy
                           Vb_Vr_Vc
                           Qb_Qr\Qc
                           Gb_Gr_Gc
                           deform_Lb     ( M46,10)  
                           scf
                           Bcf

③ deform_Lb
                      room=3
                      hidden_block_basic_deform  

④ hidden_block_basic_deform  ( M46,  4)
                      basic_setting
                kind = "hidden"
              kind1 = "B"
              flagM = kind & kind1 & room
        For igrp=1 to z
                     empty_cell_in_block  (M46, 1)
                     block_select_menber  ( M46, 11)
                      column_block_judge ( M46,111 )
        Next igrp

⑤ deform_Lr
                      room=3
                      hidden_row_basic_deform  

⑥ hidden_row_basic_deform  
      basic_setting
     kind = "row"
     kind1 = "R"
     flagM = kind & kind1 & room

    For ilin = 1 To z
     row_select_number
     column_row_judge
    Next illin

⑦ deform_Lc
                       room=3
                      hidden_column_basic_deform 

⑧  hidden_column_basic_deform  
      basic_setting
     kind = "collumn"
     kind1 = "C"
     flagM = kind & kind1 & room

    For ilin = 1 To z
     row_select_number
     column_row_judge
    Next illin

 To be continue :
        

0 件のコメント:

コメントを投稿