카운트 다운 수의 이름 라운드 문제-알고리즘 솔루션?


10

관객 중 브라이트가 아닌 사람에게는 참가자가 6 개의 숫자 세트와 무작위로 생성 된 대상 번호를 갖는 주간 게임 쇼의 세그먼트가 있습니다. 이들은 산술 연산자 만 사용하여 6 개의 숫자 중 하나만 사용하여 목표 수에 도달해야합니다. 모든 계산은 양의 정수 여야합니다.

예 : Youtube : Countdown-가장 특별한 숫자 게임?

자세한 설명은 Wikipedia : Countdown (게임 쇼)에 나와 있습니다.

예를 들면 다음과 같습니다.

  • 참가자는 6 개의 숫자-두 개의 큰 (25, 50, 75, 100 포함 가능) 및 네 개의 작은 (숫자 1 ... 10, 각각 풀에 두 번 포함)을 선택합니다.
  • 촬상 숫자가되어 75, 50, 2, 3, 8, 7의 타겟 번호로 주어진다 812.
  • 한 번의 시도는 (75 + 50-8) * 7-(3 * 2) = 813입니다 (이는 대상의 5 이내의 해에 대해 7 점을 얻습니다)
  • 정확한 답은 (50 + 8) * 7 * 2 = 812입니다 (목표와 정확히 일치하는 10 점을 얻었을 것임).

분명히이 문제는 TV가 출현하기 전에 존재했지만 위키 백과 기사에서는 이름을 밝히지 않았습니다. 또한이 게임을 내가 참여한 초등학교에서 게임이 "Crypto"라고하는 클래스 간 경쟁으로 보았지만 검색하면 아무 것도 나타나지 않습니다.

나는 거기에 몇 번 참여했다 아빠는 무차별 문제에 시도한 Excel 스프레드 시트를 작성, 나는 그것이 (단지 것을 어떻게 작동하는지 기억하지 않았다 일, 어떤 Excel의 65535 행 한계)하지만, 반드시 문제에 대한 알고리즘 솔루션이 있어야합니다. 인간의 인식 방식과 같은 방식으로 작동하는 솔루션이있을 수 있습니다 (예 : 병렬로 숫자를 '충분히 근접한 다음 찾기'하고 '작은'작업을 수행).


1
나는 이것을 그래픽으로 해결했습니다. 노드를 사용하여 계산 결과와 모서리를 표시하여 그 수에 대해 수행 할 수있는 연산을 표시 한 다음 그래프 검색 알고리즘을 사용하여 원하는 경로를 찾으십시오
ell

1
규칙을 읽으면 선택한 숫자가 (1, 1, 2, 2, 3, 3)이고 대상 수가 999 인 경우와 같이 완벽한 솔루션에 도달 할 수없는 것 같습니다. 모든 알고리즘의 목표는 가장 가까운 솔루션을 찾는 것입니다.
Rich Smith

1
@ell : 그래프 검색 솔루션은 기본적으로 무차별 검색입니까?
Martin

구현에서 깊이 우선 검색을 사용했지만 Dijkstra와 같은 것을 사용할 수없는 이유는 알 수 없습니다.
ell

1
미국에서도 비슷한 쇼가 있습니다 : 우리는 몇 주 동안 한 집에 약 6 개의 문맹이없는 바보를 집어 넣고 서로 이야기하고 서로 소리 를 지 릅니다 . 그것은 우리 TV가 인기있는 쇼에서이 지적 능력에 도달하는 정도에 가깝습니다.
RBarryYoung 23

답변:


4

면책 조항 :이 답변은 그 질문에 완전히 대답하지 않습니다. 그러나 설명하기에는 너무 깁니다.

NP 하드? 이 문제는 NP-hard 일 수 있다고 생각 합니다.

배낭 문제 의 특별한 경우를 고려하십시오 .

양의 정수 세트와 양의 정수 b가 주어지면, 그 서브 세트의 모든 정수의 합이 b 와 같도록 세트의 서브 세트가 있습니까?

이것은 카운트 다운 문제와 다소 비슷하게 들리며 훨씬 더 단순 해 보입니다. 그러나 배낭 (및이 특수 배낭의 경우)은 NP-hard (물론 NP-complete)입니다.

Countdown이 NP-hard라는 증거로 이것을 사용하지 못했습니다. 부서를 제거 할 수 없었습니다. 우리는 천이 2이고 b = 7이라고 가정하십시오. 이것은 배낭으로 해결할 수는 없지만 적어도 문제를 이전하려고 시도한 모든 방법으로 카운트 다운으로 항상 (?)입니다.

카운트 다운이 정말로 지금, 만약 이었다 NP-하드, 우리는 모든 가능성을 시도 무차별보다 훨씬 더 효율적입니다 어떤 알고리즘이 매우 높은 확률로 있다는 것을 추론 할 수있다. (그리고 우리가 그러한 알고리즘을 찾아야한다면, 우리는 매우 유명해질 것입니다.)

아니요, 효율적인 알고리즘 이 있어야 한다고 생각하지 않습니다 .

휴리스틱. 질문에 링크 된 유튜브 비디오는 좋은 예입니다. 참가자가 정확한 답변을 찾았습니다. 처음으로 : 매우 큰 수를 생성 한 다음 나누고 결과를 산출하십시오.

다른 한편으로, 우리 는 3 자리 숫자에 도달하기 위해 (임의의 예) 50 * 75 * 100/2/3/7을 시도 할 필요가 없다고 생각 합니다. 그러나 컴퓨터는 아무것도 느끼지 않으며 간단하게 계산합니다.

결국, 휴리스틱을 구현했는데이 휴리스틱이 정확한 해결책을 찾지 못하면 여전히 다른 솔루션을 시도하여 실제로 아무것도 없는지 확인해야합니다.

유튜브 비디오의 참가자는 많은 가능성을 매우 빠르게 확인하고 해결책을 제공하지 않을 가능성이있는 (또는 가능성이없는) 것을 신속하게 폐기하는 것입니다.

결론. 알고리즘을 구현할 때 a / b / c = a / (b * c)와 같은 동일한 계산을 제거하는 데주의를 기울일 수는 있지만, 이것이 매우 어렵다고 생각하고 이것이 런타임을 크게 향상 시킬지 여부는 알 수 없습니다.

물론 컴퓨터는 많은 가능성을 확인하는 데있어 인간보다 빠릅니다. 그리고 요즘에는 스마트 폰조차도 너무 빠르기 때문에 모든 가능성을 시도하면 1 초 안에이 문제를 해결할 수 있습니다. (나는 이것을 테스트하지 않았다.) 단지 6 개의 숫자가있다. 예를 들어 60 개가 있다면 다르게 될 것이다.


비록 인상적이기는하지만이 예제에 대한 해결책은 처음 나타나는 것처럼 복잡하지 않습니다. 그가 시도했을 수도있는보다 명백한 것들을 뺀 그의 사고 과정은 "(100 + 6) * 3 * 75 / 25를 통해 할 수있는 (100 + 6) * 9를 사용하여 954에 도달 할 수 있습니다. 나는 왼쪽에 50이 있고 50/25는 2이므로 25 "로 나누기 전에 50을 (100 + 6) * 3 * 75를 벗길 수 있습니다.
Tim Down

1

알고리즘은 실제로 그리 어렵지 않습니다.

두 개의 숫자 a와 b가 주어지면 결과 a + b, abs (a-b)를 생성 할 수 있습니다 (음수가 허용되는지 여부를 알 수없는 경우 a-b 및 a + b를 생성 할 수 있음), a * b, 가능하면 a / b 또는 b / a 결과가 정수인 경우. 따라서 가능한 결과는 최대 5 개의 숫자 집합입니다. 이 세트 S (a, b)를 호출하십시오.

6 개의 숫자 a, b, c, d, e 및 f를 사용하십시오.

두 숫자의 각 부분 집합에 대해 생성 할 수있는 숫자를 찾으십시오.

그런 다음 세 숫자의 각 부분 집합에 대해 생성 할 수있는 숫자를 찾으십시오. S (a, b, c) = S (S (a, b), c) union S (S (a, c), b) union S ( S (b, c), a).

그런 다음 4 개 또는 5 개 숫자의 각 하위 집합에 대해 동일하며 6 개 숫자 모두에 대해 동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.