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 件のコメント:
コメントを投稿