논리 게임 / 공제 규칙 / 충분한 단서에 대한 데이터 구조?


11

나는 Einstein 's Puzzle 과 유사한 논리 게임을 개발하는 것에 대해 흥겨워 왔는데 , 새로운 게임 재생마다 다른 단서가 있습니다.

제공하는 단서가 고유 한 솔루션을 가리 키도록 보장하기 위해 다양한 엔티티 (애완 동물, 주택의 색상, 국적 등), 공제 규칙 등을 처리하기 위해 어떤 데이터 구조를 사용 하시겠습니까?

가능한 단서와 함께 공제 규칙을 적용하는 방법에 대해 고민하고 있습니다. 모든 통찰력은 감사하겠습니다.


1
나는 그것이 매우 흥미로울 것이라고 생각하지 않습니다. 한 해결 한 후에 다른 규칙으로 다시 수행하는 것은 스도쿠 게임과 크게 다르지 않습니다.
o0 '.

4
반면에 사람들은 지루해지기 전에 수백 개의 스도쿠를합니다. 숫자 나 이름 만 입력하는 것이 아니라 세상에서 어떤 행동을하는 것에 대한 답을 묶어도 사람들은 스도쿠에 대해 불평하지 않을 것입니다.

이것은 저에게이 게임을 상기시킵니다 : nick.com/games/series.html
CeeJay

3
나는 한 번 봐 복용 제안 에버렛 Kaser 의 게임 - 그는했다 t 특히, 이러한 성격의 게임을 셜록 바로 그 퍼즐에 의해 영감을했다,뿐만 아니라 같은 다른 게임의 일부 허니 콤 호텔 또는 그의 최신 게임 , 허드슨 부인 . 이런 종류의 행동을 보는 것이 도움이 될 수 있습니다.
Michael Madsen

@Joe : 당신이 말하는 것은 기술적으로 옳지 여기서 중요한 것은 당신이 무엇을 하고 있는지 아는 것입니다. 스도쿠와 같은 게임을하는 것은 괜찮다는 것을 알면 좋으며, 다른 일을하고 있다고 생각하면 쓰레기 결과를 초래할 것입니다.
o0 '.

답변:


4

와. 이것은 실제로 인공 지능과 컴퓨터 게임 을 쓸 때 Richard Bartle과 같은 구식 AI 시맨틱 웹이 미래의 게임에 중요 할 것이라고 생각되는 상황처럼 보입니다 . 기본적으로 두 개의 데이터 목록 (데이터베이스 테이블 등)이 있으며, 첫 번째 목록은 다음과 같이 서로 관련이있는 방법에 대한 규칙을 지정합니다.

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 코드를 살펴 보는 것이 좋습니다 . 유효한 제약 조건을 추적하기 위해 Dictionary (연관 배열 / 해시 테이블)를 사용합니다. 또한 최소 충돌 및 AC3과 같이 CSP를 해결하는 데 사용되는 여러 알고리즘이 구현되어 있습니다.

이 코드에는 링크 된 것과 같은 샘플 Zebra 문제가 예제로 포함되어 있습니다.


1

이것은 실제로 매우 깊습니다. Wikipedia가 언급하지 않은 것이 이상합니다.

당신이 찾고있는 것은 아마도 Fitch proofs 와 같은 것들에 도달 할 수있는 매우 단단한 증거입니다 . 그래서 우리는 주어진 데이터에서 물건을 빼려고합니다. 많은있다 피치 증거 빌더 당신을 위해 많은 일을한다. 그러나 일부 운동은 교정하지 않습니다.

사용자가 계산을 수행 해야하는지 모르겠습니다. 그렇다면 3SAT 와 같이 다항식 시간에 취소 할 수없는 문제에주의하십시오.

사용하려는 데이터 구조는 일종의 Rule클래스 를 원한다고 생각합니다 . 규칙은 유형에 따라 무엇이든 될 수 있습니다. 술어 논리 에는 규칙이 많지 않으므로 상속하면 (if, iff 및 / 또는 ...이 아닌)이를 극복 할 수 있습니다. 이 규칙 만 평가하면됩니다. 그리고 규칙이 할 수있는 유일한 일은 true 또는 false를 반환하는 것입니다. 그것이 술어 논리로하는 일이기 때문입니다. 대학에서 나는 John Kelly 가이 책을 읽는 것이 좋습니다 .

수업으로 돌아 가기 : 수학을 사용하여 일반 계산을 구현하는 것처럼 이러한 문제가 나타납니다. +운영자 란 무엇입니까 ? 여기에는 두 개의 매개 변수가 포함되는데,이 매개 변수는 자체적으로 새로운 방정식 일 수도 있고 숫자 일 수도 있습니다. 나는 당신이 규칙과 동일하다고 생각합니다. 매개 변수로 새 규칙을 갖거나 부울 (소위 술어) 만 가질 수 있습니다.

나는 이것이 당신에게 특히 도움이되기를 바랍니다. 더 알고 싶거나 잘못된 방향으로 가고 있다면 알려주세요.


문제는 유한 한 (그리고 작은!) 모델에 대한 술어 논리의 증거가 아니거나 현상금을 올리는 것이 아니라 대답했을 것입니다. 목표는 문제 를 해결 하는 것이 아닙니다. 목표는 문제를 자동으로 흥미로운 방식 으로 만드는 것입니다.

@Joe 작은 세트라도 문제는 여전히 3SAT 문제 일 것입니다. AND와 OR 만 만들면 만족스럽지 못한 것들이 생길 수 있으므로 무작위 퍼즐을 만드는 것이 매우 어렵다고 생각합니다. 퍼즐에는 최소한의 제한이 포함되어야합니다. 때로는 뒤로 답 (해결책을 가지고, 밖으로 휴가 일) 될 수있다 추론
Marnix

일반적인 술어 논리는 실제로 3SAT보다 어렵습니다. 그러나 현대식 증명 알고리즘은 실제로 매우 좋습니다. 그 외에도, 단순히 모델을 생성하고, 퍼즐을 만들고, 솔루션을 확인하는 작업은 선형 시간으로 수행 할 수 있습니다.

@Joe이 퍼즐을 만들 때 확신 할 수있는 제약이 있습니까? 문제는 여전히 사용할 데이터 구조입니다. 그래서 나는 여전히 Rule수업이 좋은 생각이라고 생각합니다. 이러한 제약 조건을 모델링하는 것은 여전히 ​​내가 생각하는 술어 논리에 의해 수행됩니다.
Marnix

0

나는 좋은 대답이 없지만 같은 종류의 문제에 대한 힌트를 찾고 github 에서이 저장소를 찾았습니다.

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

단서를 선택하고 퍼즐을 해결하기 위해 필요한 단서를 몇 가지 결정하는 논리가 포함되어 있습니다.


-1

이 문제를 해결하는 데 있습니다.

물론, 나는 거꾸로 일하는 것이 그리 어렵지 않을 것이라고 생각합니다. 다음과 같은 목록이 있습니다.

  • 프레드 레드 독

  • 스티브 블루 고양이

  • 빌 퍼플 고래

  • 에릭 시안 돌핀

어느 것이 쉽게 생성 될 수 있고, 그로부터 일련의 규칙을 구성하십시오.

저장에 관해서는, [Fred, Steve, Bill, Eric]와 일련의 답변 [Fred, Red, Dog]이 각각 별도의 세트가 아닌 이유. 그런 다음 'NAME 님이 액션 오브젝트를 수행하지 않습니다'.

당신이 그것에 도달하면, 독특한 솔루션이 정말로 중요합니까? 게임이 그것들을 목록으로 나누고 '세트 1에 고래가 포함되어 있지 않습니다'를 체크하십시오.


2
비결은 문제가 여전히 어려워지기를 원한다는 것입니다. 생성 한 규칙이 가능한 조합의 90 %를 유효한 답변으로 인정한다면 더 이상 재미있는 퍼즐이 아닙니다.

나는 그것이 유효한 포인트라고 생각하지만 주어진 단서 수를 줄이는 해결책이 아닌가?
공산주의 오리

1
아니요. 사양이 불충분하면 많은 유효한 결론을 내릴 수 있습니다. 과잉 사양은 매우 명백한 결론으로 ​​이어질 수 있습니다. 좋은 논리 퍼즐은 둘 다 피합니다.

아 그래, 나는 어떻게 든 그것을 놓쳤다. 내가 생각할 수 있으면 더 나은 솔루션을 추가하려고 노력할 것입니다.
공산주의 오리

Joe : 첫 의견에 정확히 맞습니다. Willy-Nilly를 단서로 묶을 수있는 퍼즐은 유치원 미술 프로젝트만큼 퍼즐이 아닙니다.
taserian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.