문제

우리는 minecraft 과 같은 게임을 디자인하고 있습니다 $ i_1, i_2, ..., i_n \ I $ < / span> $ r_1, r_2, ..., r_m \ r $ . 조리법은 함수 $ r : (i \ times \ mathbb {n} \ times \ mathbb {n}) ^ n \ Plightows i \ times \ mathbb {n} $ , 그건 몇 가지 항목을 가져 간다. 음수가 아닌 정수 가중치로 다른 항목의 정수량을 생성합니다.

예를 들어, minecraft 의 케이크의 레시피는 다음과 같습니다.

3 milk + 3 밀 + 2 설탕 + 1 달걀 $ \ 틀리기 $ 1 케이크

... 그리고 횃불에 대한 레시피는 다음과 같습니다.

1 Stick + 1 석탄 $ \ 틀리 달러 $ 4 횃불

일부 조리법은 가역적 일 수 있습니다. 예를 들면 다음과 같습니다. 9 다이아몬드 $ \ leftrightarrow $ 1 다이아몬드 블록

레시피의 조합이있는 경우 우리가 시작한 항목을 더 많이 얻기 위해 반복적으로 적용 할 수있는 항목을 더 많이 얻으려면 플레이어가 악용 할 수 있습니다. 우리는 항목을 보존하거나 아마도 일부 항목을 잃을 수도있는 조리법으로 게임을 디자인하거나 (진짜 세계의 열역학적 엔트로피를 쉽게 태울 수 없을 수 없을수록) 더 많은 것이 더 바람직합니다.

은 일련의 조리법이

인지 결정할 수있는 효율적인 알고리즘이 있습니다.

  • 항목을 보존합니까?
  • 비 효율성에 항목을 잃고 있습니까?
  • 이득 항목?

게임이 불균형 한 경우 문제가되는 조리법을 찾을 수있는 효율적인 알고리즘이 있습니까?

내 첫 번째 생각은 그래프 구조 / 최대 유량 문제가 있지만 매우 복잡하며 탈출 문제와 유사합니다. 아니면 SAT 문제로 공식화 될 수 있습니다. 이는 현재 코드를 코딩하려는 것입니다. 그러나보다 효율적인 것이 존재할 수 있습니다.

우리는 매트릭스 $ \ mathbf {r} ^ {m \ times n} $ ^ {m \ times n} $ ^ {m \ times n} $ \ {m \ times n} $ \ {m \ times n} $ \ {m \ times n} $ 입니다. 조리법에 의해 조리법에 의해 생산되는 경우, 조리법에 의해 생산되는 경우 항목이 양성인 경우 칼럼 항목이 부정적이며 사용하지 않으면 0이됩니다. 그래프 사이클 탐지를위한 잘 알려진 매트릭스 방법과 마찬가지로 $ \ mathbf {r} $ 을 일부 고전력으로 인상하고 각 행의 합계를 얻으려면 항목을 확인할 수 있습니다. 합계가 계속되고 균형을 유지하거나 부정적으로 가십시오. 그러나 나는 항상이 일이 일하고 있지 않다.

모든 토론, 코드 또는 권장 독서가 매우 높이 평가됩니다.

도움이 되었습니까?

해결책

이것은 선형 프로그래밍으로 solvable되어야합니다.

배경 및 설정

상태 벡터가 가지고있는 각 항목의 수의 수의 벡터가되도록하십시오. 가능한 항목이 우유, 밀, 설탕, 계란, 케이크, 다이아몬드, 그런 다음 규칙

3 milk + 3 밀 + 2 설탕 + 1 달걀 $ \ 틀리기 $ 1 케이크

$ (- 3, -3, -2, -1,1,0) $ 을 추가하여 상태 벡터에 영향을줍니다. 따라서 $ a_i $ $ i $ th 규칙의 변경 벡터를 나타냅니다.

항목을 얻는

나는 선형 프로그램에 대한 실현 가능한 해결책이 존재하지 않고 항목을 얻는 방법이 있다고 주장한다.

$$ A_1 x_1 + \ dots + a_n x_n \ ge (0,0, \ dots, 0), x_1 \ ge 0, \ dots, x_n \ ge 0 $$

$ A_1 X_1 + \ DOTS + A_N X_N> (0,0, \ DOTS, 0) $ . 여기에서 $ \ ge $ 은 Vectors에서 Pointwise (즉, $ u \ ge v $ iff $ u_i \ ge v_i $ 모든 $ i $ 와 유사하게 $> $ . 이것은 선형 프로그램으로 표현 될 수 있습니다 : $ a_1 x_1 + \ dots + a_n x_n $ 의 좌표의 합을 최대화합니다. 따라서 선형 프로그래밍 솔버를 사용하여 다항식 시간으로 해결할 수 있습니다. 이것은 바운드없이 항목을 얻는 방법이 있는지 여부를 알려줍니다.

왜 청구가 사실입니까? 선형 프로그램에 대한 실현 가능한 해결책이있는 경우에는 바운드없이 일부 항목의 수를 성장시킬 수있는 방법을 제공합니다. 특히 각 항목의 매우 많은 수의 항목으로 시작한 다음 규칙 1 $ x_1 $ 규칙 2 시간 등, $ a_1 x_1 + \ dots + a_n x_n $ . 또한 충분히 많은 수의 항목으로 시작하면 규칙을 적용하는 중간 단계에서 "음성으로가는"것입니다. 이 선형 프로그램에 대한 해결책이있는 경우, 정수의 솔루션을 산출하는 합리적인 솔루션이 있습니다 (해당 상수가 명확한 분모에 대한 곱하기).

반대로, 바운드없이 일부 항목의 수를 성장시키는 방법이있는 경우 선형 프로그램에 대한 해결책이 있습니다. $ x_i $ count $ i $ 횟수가 해당 방법에 적용되며, 이로 인해 선형 프로그램에 유효한 해결책이 발생한다는 것을 알 수 있습니다.

항목 손실

나는 비슷한 동등성이 있다고 믿는다 : 선형 프로그램에 대한 실현 가능한 해결책이없는 IFF가없는 항목을 잃을 수있는 방법이 있다고 믿는다.

$$ A_1 + \ DOTS + A_N X_N \ LE (0,0, \ DOTS, 0), X_1 \ GE 0, \ DOTS, X_N \ GE 0 $$

$ A_1 X_1 + \ DOTS + A_N X_N <(0,0, \ DOTS, 0) $ . 내가 이것을주의 깊게 검사하지 않으므로 내 추론을 확인해야합니다.

보존

마지막으로, 바운드없이 항목을 잃어 버리거나 잃지 않고 항목을 얻을 수있는 방법이없는 경우, 그 값은 보존된다고 생각합니다.

다른 팁

귀하의 문제는 귀하의 $ \ mathbb r ^ {m \ times n} $ 매트릭스에서 matrix의 선형 벡터 조합이 있는지 묻는 것과 같습니다. 긍정적이고 (a) 모든 요소가 $ \ ge 0 $ 및 (b) 적어도 하나의 요소가 $> 0 $ .

(작업의 Order 은 중요하지 않습니다. 일부 명령을 실행하면 일부 항목의 수량이 0 이하로 딥이 될 수 있지만 저수지를 찾을 수 있습니다. 마크 마크를 사용하여 적어도 각 항목이 시작될 많은 부분을 가지고 있다고 가정합니다.)

이것은 선형 프로그래밍에 의해 해결 될 수 있다고 생각합니다. 각 계수에 대한 변수를 만들고 출력 벡터의 각 요소에 대한 $ \ ge 0 $ 제약 조건 (각각 요소는 조리법의 계수 변수 및 일정 계수의 도트 제품이며, 더 많은 $ \ ge 0 $ 각 계수 변수에 대한 제약 조건을 설정하고 기능을 설정하십시오. 모든 요소의 합계. 그것을 한정하기 위해 계수 변수의 합을 일부 상수로 설정하십시오. 1. IFF 솔루션 값은 $> 0 $ , 비 보존이 있습니다!

분수 값은 문제가 아닙니다. 이는 합리적이어야하므로 모든 분모에 의해 항상 곱하기 위해 순수 정수 솔루션을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top