さめがめの最適解を求めるアルゴリズムを
作ろうとしています。

□□●●□□●□●
○■●■●■●■□
○●●●□○□○●
□■●■●■●■□
■●□○□○□○●
□■●■●■●■●
■○□○□○□■□
□■●○●■●■□
■□□○□■□■■

ルール:
 隣り合う2つ以上の連続した同じ種類の記号は消去できる。
 重力あり。消えたら下に詰める。
 連続で消せたら高得点

この仕様で、連続して消せる最大の回数を求めるのと、
完全に消去するという二つをそれぞれで考えたいのですが、
総当りだとものすごい時間がかかりそうなので、何か
数学的な理論や手法などはないでしょうか。

1)消せるブロックの集合を探す
2)ブロックを消す
3)消えたブロックの上のマスを落とす
4)1)に戻る

特に1)の部分の隣り合う2つ以上の連続した同じ種類の記号を
探すのが結構時間がかかりそうなので時間短縮する方法が
あれば教えてください。