論理ゲームのデータ構造/控除規則/手がかりの十分なセット?


11

私は、アインシュタインのパズルに似たロジックゲームの開発について考えてきました。これには、新しいゲームのリプレイごとに異なる手がかりが含まれます。

提供する手がかりが一意のソリューションを指すことを保証するために、さまざまなエンティティ(ペット、家の色、国籍など)、控除規則などを処理するためにどのデータ構造を使用しますか?

控除ルールを考えられる手掛かりと一緒にプレイする方法を考えるのに苦労しています。どんな洞察もいただければ幸いです。


1
プレイするのはあまり面白くないと思います。一度解いた後、別のルールでもう一度やっても、数独をプレイするのと大差はありません。
o0 '。

4
一方、人々は彼らに飽きる前に数百の数独を行います。数字や名前を入力するだけでなく、答えをある種のアクションインワールドに結び付ければ、人々はそれが数独だと不平を言うことさえありません。

これは私にこのゲームを思い出させます:nick.com/games/series.html
CeeJay

3
私は見てとることを示唆しているエベレットKaserのゲームを-彼が作ったトン特に、この種のゲームのをシャーロックまさにそのパズルに触発された、だけでなく、その他のゲーム、いくつかのハニカムホテルや彼の最新のゲーム、ハドソン夫人。これは、この種の動作を確認するのに役立ちます。
Michael Madsen、

@ジョー:あなたが言うことは技術的に正しいです、ここで重要なことはあなたが何をしているのかを知ることです。数独のようなゲームをやっていることは、気づいている場合は問題ありませんが、何か他のことをしていると考えれば、ほぼ間違いなく結果につながります。
o0 '。

回答:


4

ワオ。これは、リチャードバートルがArtificial Intelligence and Computer Gamesを書いたときにゲームの未来にとって重要であると考えられていたような昔ながらのAIセマンティックWeb が役立つ状況であるように見えます。基本的に、いくつかのデータリスト(データベーステーブルなど)があり、最初のリストでは、次のように、物事が相互にどのように関係するかについてのルールを指定します。

a PERSON must LIVE IN a DOMICILE
a PERSON must OWN an ANIMAL
a PERSON must DRINK a BEVERAGE
a PERSON must SMOKE a CIGARETTE BRAND
a PERSON must BE OF a NATIONALITY
a DOMICILE must BE IN a POSITION
a DOMICILE must BE OF a COLOR

次に、カテゴリのインスタンスがあります。

ANIMAL: dog snail zebra fox horse
BEVERAGE: milk tea OJ coffee water
CIGARETTE BRAND: Kools Parliaments Luckies OldGold Chesterfields
NATIONALITY: Englishman Spaniard Ukrainian Japanese Norwegian
POSITION: first second third fourth fifth
COLOR: red green yellow ivory blue

これらのデータ構造は状況を完全にカプセル化していません-一意性の制約が必要であり、一部のカテゴリにPOSITIONは、「右側」、「左側」、および「次へ」の処理が必要なメタルールが必要です。たとえば、「」の概念ですが、問題の構造はそれらを強く示唆しているようです。

これがあなたを遠くに連れて行くならDunnoですが、それが役に立てば幸いです。


4

私の推奨は、AIMAプロジェクトで提供されている制約充足問題(CSP)のPythonコードを確認することです。辞書(連想配列/ハッシュテーブル)を使用して、有効な制約を追跡します。また、min-conflictsやAC3など、CSPの解決に使用されるいくつかのアルゴリズムの実装があります。

このコードには、リンクした問題と同様に、サンプルのZebra問題が例として含まれています。


1

これは実際には非常に深くなります。ウィキペディアがそれについて決して言及しないのは奇妙です。

あなたが探しているのは、おそらくフィッチの証明のようなもので到達できる非常に難しい証明です。そのため、与えられたデータから物事を差し引こうとしています。たくさんのがありフィッチ証明ビルダーあなたのための作業の多くを行います。しかし、いくつかの演習は証明するだけではありません。

ユーザーが計算を行うべきかどうかわかりません。その場合は、3SATなどの多項式時間では元に戻せない問題に注意してください。

使いたいデータ構造は、なんらかのRuleクラスが欲しいと思います。ルールは、タイプに応じて何でもかまいません。述語論理には多くのルールがないので、これを継承することで克服できます(if、iff、and、or、not ...)。これらのルールを評価する必要があるだけです。そして、ルールが実行できる唯一のことは、trueまたはfalseを返すことです。それが述語論理で行うことだからです。大学では、この本をJohn Kellyから読むよう勧められました。

クラスに戻る:数学で通常の計算を実装するのと同じように、これらの問題が表示されます。+オペレーターとは?これには2つのパラメーターが含まれており、それ自体で新しい方程式にすることも、数だけにすることもできます。ルールも同じだと思います。新しいルールをパラメーターとして、またはブール値(いわゆる述語)だけを使用できます。

これが特に参考文献に役立つことを願っています。詳細を知りたい場合、または私が間違った方向に進んでいる場合は、教えてください。


問題は、有限(そして小さな!)モデルに対する述語論理の単なる証明ではありません。または、賞金を上げるのではなく、私は答えたでしょう。目標は問題を解決することではありません-目標は自動的に、そして興味深い方法で問題を作成することです。

@ジョー問題は、たとえ小さなセットであっても、3SATの問題のままです。ANDとORだけを作成すると、満足できない結果になる可能性があるため、ランダムパズルを生成するだけでは非常に難しいと思います。パズルには少なくともいくつかの制限が含まれている必要があります。時々、後方推論が答えになる可能性があります(解決策を
用意

一般的な述語論理は、実際には3SATよりも困難です。ただし、最新の証明アルゴリズムは実際には非常に優れています。それとは別に、単純にモデル、パズルを生成し、ソリューションをチェックすることは線形時間で行うことができます-秘訣は提供された制約がユニークで発見可能なソリューションを確実に生み出すことです。

@Joeそれでは、このパズルを作成するために確実にできる制約はありますか?それでも問題は、どのデータ構造を使用するかでした。だからRuleクラスはいいアイデアだと思う。これらの制約のモデル化は、やはり私が考える述語論理によって行われます。
マーニックス

0

私は良い答えはありませんが、同じ種類の問題に関するヒントを探して、githubにこのリポジトリを見つけました:

https://github.com/nateinaction/Zebra-Puzzle

手がかりを選択し、パズルを解けるようにするために必要な手がかりの数を決定するためのいくつかのロジックが含まれています。


-1

それを解決する上でこれがあります。

もちろん、逆方向に作業することはそれほど難しくはないと思います。それはこのようなリストがあります:

  • フレッドレッドドッグ

  • スティーブ・ブルー・キャット

  • ビルパープルクジラ

  • エリックシアンイルカ

これは簡単に生成でき、それから一連のルールを構成します。

ストレージについては、それぞれ個別のもののセットではないので、[フレッド、スティーブ、ビル、エリック]と答えのセット[フレッド、レッド、ドッグ]です。次に、「NAMEはACTION OBJECTを(しない)」にします。

あなたがそれに取り掛かったとき、ユニークなソリューションは本当に重要ですか?ゲームがそれらをリストに分割できる限り、「セット1にクジラが含まれていない」ことを確認してください。


2
秘訣は、問題をさらに難しくしたいということです。生成したルールが、可能な組み合わせの90%を有効な回答として認めた場合、それは興味深いパズルではなくなります。

それは妥当なポイントだと思いますが、与えられた手がかりの数を減らすだけの解決策ではありませんか?
共産主義者のダック

1
いいえ。仕様不足は多くの有効な結論につながる可能性が高くなります。過剰仕様は、1つの非常に明白な結論につながる可能性があります。優れた論理パズルは両方を回避します。

ああ、なんとか逃した。考えられる場合は、より良い解決策を試して追加します。
共産主義者のダック

Joe:最初のコメントは正解です。手がかりを一緒にジャムできるパズルは、幼稚園のアートプロジェクトほどパズルではありません。
taserian
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.