橋をかけろの手筋整理

コンセプティスのブリッジパズル (橋をかけろ) の上級お試しパックが全部解けたよ

 

 

橋をかけろの難しめの手筋について、自分の理解を書きます。

すでに橋かけプロのむっきさんによる手筋解説があるのですが (以下)

seesaawiki.jp

仮定の占める部分が多く、個人的になかなか消化できていませんでした。

最近ちょっとした橋かけブームがあり、改めて手筋を考えた結果少し整理できたので、記事としてまとめておきます。

 

手筋の分類

橋をかけろの手筋は、起因するルールに沿って次の 3 つの種類に分類できます。

  1. 分断回避
  2. 数字の評価
  3. 橋の衝突

分断回避はひとつながりのルールから、数字の評価は島の数や橋の本数の制約から、そして橋の衝突は橋の交差禁からきています。

たとえば「4 の島の周りに 2 の島が 2 つあると、別方向に伸びる」というのは分断回避の手筋ですね。また、基本的な手筋の「角の 3」「端の 5」などは数字の評価によるものです。橋の衝突による確定は難しいものが多いですが、上級手筋の「壁際のはさみうち」などはその例ですね。

 

以下、系統別に詳しく解説します。

 

分断回避と AB 原理

まずは分断回避について。よくあるのが、1 の島やそれに準ずる島の集まりによって、ひとつながりになる経路が制限される、というものです。

1 の封鎖」とよぶとわかりやすいかもしれません。

 

さて、1 の封鎖以外にも、分断回避を意識した手筋があります。

それが次の「AB原理」です:

 

AB 原理

いくつかの島を選んで、以下の条件を満たす A 群・B 群 の 2 つのグループが作れたとする:

  1. A 群の島同士・B 群の島同士が隣接しない (=橋で結べない)。
  2. A 群の島の数字の合計と B 群の島の数字の合計が一致する。

このとき、A 群のある島から B 群以外の島に橋が伸びる。

 

理由は単純で、A のどの島からも B の島に橋が伸びると、A, B の島のみで分断してしまうからです。なお A, B 以外の島が存在することを暗に仮定しています。

 

この主張ではグループについての仮定をゆるくしていますが、適用する状況としては A の島のほとんどが B の島と隣接しているケースになります。外部に伸びる島が 1 つなのが望ましいですね。なお B 群と外部の隣接状況は無視して大丈夫です。

イメージとしては、A  群の島と B 群の島が交互に並んでいるような感じでしょうか。

 

注意点として、グループについての「A 群の島同士・B 群の島同士が隣接しない」という仮定を欠かすことはできません。橋の本数のカウントが変わってしまうからですね。

 

例を見ておきましょう。

まず、初級手筋の「角の22」は、グループ分けするまでもないですが一応 AB 原理で説明がつきます。また端付近での 2332,  23232 の孤立回避も、交互にグループ分けすることで説明できます。

 

少し複雑な例をあげます。

f:id:SP1_puzzle:20210901031215p:plain

左のように角に島が並んでいる状況で、一見角の 2くらいしか進展がなさそうですが、ここでは右のようにグループ分けすることで AB 原理が適用できます。

緑の A 群、黄の B 群の数字の和はどちらも 7 で、A 同士・B 同士は隣接しません。角の 2 は他の島に伸ばせないので、5 から上に脱出する必要があるわけですね。

 

さらに高等な例を見ておきます。

f:id:SP1_puzzle:20210901032228p:plain

今度も角で A 群 B 群に分けました。どちらも和が 10 で一致しています。したがって緑の 3 の島のどちらかから上に橋が伸びることになり、左端の 3 から横に伸びないことが分かります。

 

数字の評価と拡張 AB 原理

さて次に数字の評価について。「ある島から見て 4 方向に島があって、そのうち 3 つに最大限橋を伸ばして数字が足りないとき、残り 1 方向に橋が伸びる」といった議論の手筋ですね。

「見ている島が大きな数字で、その周りに 1 などの数の小さい島がある」といった、数字に偏りがある場合に使えます。つながりによらずに決まることに注意しましょう。

 

もう少し高級なものとして、さっきの AB 原理と似た議論ができる場合があります:

 

拡張 AB 原理

いくつかの島を選んで、以下の条件を満たす A 群・B 群 の 2 つのグループが作れたとする:

  • A 群の島同士・B 群の島同士が隣接しない (=橋で結べない)

A 群の島から B 群以外の島に橋が伸びる本数の合計を a,

B 群の島から A 群以外の島に橋が伸びる本数の合計を b とおいたとき、

a と b の差は、A 群の数字の合計と B 群の数字の合計の差に等しい。

 

これも理由は明白だと思います。

 

例として、ボックス形を挙げておきます。長方形型に 4 つの島が並んでいるとき、対角同士をグループにして適用できます。

 

f:id:SP1_puzzle:20210901035302p:plain

図の例ではもともと 4 から 上に引けますが、 3 から右にも引けます。右図のように分けると差が 3 だからですね。

さらに、角でない 2 の島に橋が入ってくると、緑から 4 本外に出ることが確定して、今橋を引いているところがどちらも 2 本だとわかります。

このボックス系は角以外にも出現しますし、終盤の詰めで出てくることが多い印象です。

 

AB 原理の意義

ここまで AB 原理と拡張 AB 原理について説明しましたが、その意義についてもう少し考察しておきます。

 

まず AB 原理で大事なのは、「分断回避を数字のみから判断できる」ということです。一直線などの比較的簡単なパターンはまだいいとして、それ以上の複雑なパターンで橋を引かずに分断を判定できるのはとてもうれしいですね。

もちろん、良いグループ分けを探索するのは必須で、そこは感覚をつかむ必要がありそうですが。

 

数字について探索するという意味では、数字の評価の手筋に近いともいえます。

実際、AB 原理は拡張 AB 原理の特殊ケース (a=b のとき) で、外に 0 本伸びると分断されるというところが本質なのでした。その弊害として、すでに外部に橋が引かれているような状況では使いづらいです。

一方で、拡張 AB 原理の方は純粋な本数評価のため、すでに外部に橋が引かれていても適用されます。むしろ「合計の少ない方のグループに橋が引かれているせいで、もう一方から外部にたくさん橋を引く必要がある」、といった議論もできますね。

 

話を変えて、「A 群の島同士・B 群の島同士が隣接しない」という仮定について。

これ制約のせいで、 A 群・B 群が市松に存在するような形、正確には A 群・B 群まとめて二部グラフのケースにのみ適用されることとなります。

ただし、局所的に見る分にはあまり困ることはなさそうです。島が直線で並んだり、格子状に並んだりしている箇所に適用することが多く、そんな場面でだいたい使えます。

 

あとは地味なメリットとして、AB 原理の適用によりどの島から橋が伸びるか混乱しづらくなる、という点もあります。個人的に橋をかけろはハタン率が高めのパズルだったのですが、AB 原理を意識することでハタン率が大きく改善した気がします。

 

AB 原理はそこそこ強力なのですが、配置が微妙にずれた場合に適用しづらく、結局仮定が必要になりがちという問題があります。次の図などがその一例です:

f:id:SP1_puzzle:20210902183551p:plain

なんなら上にあげた高等な例も、「どちらかが上に伸びる」と認識して利用するのは、実戦では難しそうです。

もう少し考え方の整理が必要かもしれませんね。

 

橋の衝突はチェイン

もう一つの系統の手筋として、橋の衝突について考えます。橋をかけろのルールのうち、橋の交差禁に由来するものですね。

これまでの分断回避の AB 原理および数字の評価の手筋では、橋の本数のカウントをして使っていました。一方、交差禁では橋の有無を考えることになります。

「橋が 1 本以上あるかないか」「2 本目の橋があるかないか」といった命題でチェイン・リンクを作ることになるわけです。なおパズルにおけるチェインの話は、以下の記事を参考にしてください。

sp1-puzzle.hatenadiary.jp

 

チェインの伸ばし方の例について。

橋が衝突することは、橋の有無についての弱チェインとみなせます。

一方で強チェインは数字がらみで発生することが多そうです。たとえば 3 の島の周りに 3 つ島があるときは、どの島に対しても橋の有無で強チェインが引けます。2 の島がらみの挙動もよく出てきます。

また分断回避で引かれる橋もチェインとしてに組み込めます。AB 原理とのハイブリッドもあります。

 

さて難しい問題では、チェイン・リンクが長く、また分断回避が絡むようなケースが出てきてしまい、リンクを追うより仮定してしまった方が早いことが往々にしてあります。AB 原理でもあった、「結局仮定した方が早い」問題ですね。

そのあたりの整理が今後の研究課題かなと思います。

壁際のはさみうちはまさしくチェイン・リンクによる手筋ですが、そのようなチェインの短いパターンを列挙するとか、そういう方向性になるかもしれません。

実戦的な話だと、3 方向に伸びる島について、L 字の 2 方向 の両方に伸びると仮定して、L 字を連鎖させて矛盾させ、残り 1 方向に伸びることがわかる、みたいな議論はよく見ますね。

 

島の簡素化・実質的な数字

最後に、島の簡素化についてまとめておきます。

「中央が閉じた 232 が実質 1 の島とみなせる」などといった話題です。

AB 原理の適用の際に、和を取る労力を減らすために、島を簡素化して扱うと便利です。

 

まず、ある島から橋が伸びていて、その方向で島が閉じている場合、その部分は無視して問題ありません。数字もその方向の分を減らして扱うこととなります。頭の中で仮の数字を置いておくと、手がかりの発見がしやすくなると思います。

 

また (拡張) AB 原理 の状況で、B 群の島がすべて外部と隣接しない場合、A 群との数字の差が実質的な島の数字とみなせます。上記の 232 がそれに該当しますね。

特に 1 の島は 1 の封鎖などで分断への制約がありましたが、A 群と B 群の数字の差が 1 のケースでも同様の扱いができます。

個人的には 232, 23332 などの直線のケースしか見たことがないですが、複雑なケースで使えるかもしれません。

 

 

 

手筋のまとめは以上です。

また進展があったら報告します。

 

そういえば、昨日投稿した問題も、今回の手筋整理の中で生まれた問題でした。

puzsq.jp

AB 原理は問題にめちゃくちゃ組み込みやすいです。ちょっとしたスパイスに使うのはいいかもしれませんね。辛すぎるかもですが。