동적 프로그래밍 문제를 해결하는 방법


9

나는 최근에이 질문에 부딪쳤다 : " 'true', 'false', 'and', 'or', 'xor'기호로 구성된 부울식이 주어집니다. 예를 들어 'true와 false xor true'를 괄호로 묶어 true로 평가하는 두 가지 방법이 있습니다. "

나는 그것이 동적 프로그래밍 문제라는 것을 알았으므로 다음과 같은 해결책을 스스로 시도했다. ABC .... D 여기서 '.'라는 표현이 있다고 가정합니다. x는 모든 연산을 나타내고 xor 및 대문자는 true 또는 false를 나타냅니다. 크기 K의이 표현식이 true를 생성하는 방법의 수는 N이라고하자. 새로운 부울 값 E가이 표현식에 추가 될 때이 새로운 표현식 1을 괄호로 묶는 두 가지 방법이 있습니다. ((ABC .... D) 즉) ABC .... D의 가능한 모든 괄호를 사용하여 끝에 E를 추가합니다. 2. (ABC (DE)) 즉. DE를 먼저 평가 한 다음이 K 크기 표현이 참을 수있는 방법의 수를 찾으십시오.

T [K]가 크기 K를 갖는 표현식이 true를 생성하는 방법의 수라고 가정하고 T [k] = val1 + val2 + val3 (val1, val2, val3)는 다음과 같이 계산됩니다.

1) E가 D와 그룹화 될 때

i) D의 값을 변경하지 않습니다

ii) D의 값을 반대로한다

첫 번째 경우 val1 = T [K] = N. (이것은 초기 ABC ... D 식으로 줄어듦). 두 번째 경우에는 D의 값이 반전되고 val1 인 dp [K]를 다시 평가하십시오.

2) E가 전체 표현으로 그룹화되는 경우.

// val2는 'true'의 개수를 포함합니다. E는 괄호로 묶은 ABC의 모든 인스턴스 중에서 'true'를 제공하는 표현식으로 생성합니다 ....... i) true 인 경우 E. true, val2 = N

ii) true.E = false 인 경우 val2 = 0

// val3에는 'true'가 포함되어 있습니다. E는 괄호로 묶은 ABC의 모든 인스턴스 중에서 'false'를 제공하는 표현식으로 생성합니다 ....... D

iii) false.E = true 인 경우 val3 = (2 ^ (K-2)-N) = M. 크기 K를 가진 표현식이 거짓을 생성하는 방법의 수 [2 ^ (K-2)는 크기 K의 표현식을 괄호로 묶는 방법의 수입니다].

iv) false.E = false 인 경우 val3 = 0

이것은 내가 생각한 기본 아이디어이지만 솔루션 http://people.csail.mit.edu/bdean/6.046/dp/dp_9.swf를 확인했을 때 의 접근법은 완전히 다릅니다. 누군가 내가 뭘 잘못하고 있는지, 어떻게 DP를 해결할 때 어떻게 나아질 수 있습니까?

미리 감사드립니다.


질문이 잘못되었습니다. true and (false xor true) = (true and false) xor true(둘 다로 줄이면 쉽게 볼 수 있음 false xor true).
피터 테일러

좋은 질문입니다! DP에도 나아 져야합니다. 일부는 "아 .. DP는 단순한 재귀에 관한 것"이라고 말합니다. 아니에요!
Florents Tselai 2016 년

@Florents Tselai는 귀하의 의견을 보았습니다. 왜 그렇지 않다고 생각합니까?
John Donn

답변:


9

많은 것들과 마찬가지로 그 답은 다음과 같습니다.

연습, 연습, 연습.

그건 그렇고, 당신의 솔루션에서 당신은 정말 초기에 사소한 실수를함으로써 막 다른 골목에 도착했다고 믿습니다. "이 새로운 표현을 괄호로 묶는 두 가지 방법이 있습니다." 방법에 대해 (A.B.(C.D.E)), 예를 들면?


"X를 잘하는 방법은 무엇입니까?" - "X를 해!" ... 합리적으로 들린다 ;-)
Joachim Sauer

2

나는 연습이 가장 필요하다는 occulus에 동의하고 DP를 사용하여 해결할 수있는 문제의 패턴을 인식하는 데주의를 기울여야한다고 덧붙이고 싶습니다 (CLRS에서 잘 설명되어 있습니다)

동적 프로그래밍과 관련된 spoj 문제는 여기에서 찾을 수 있습니다. :)


downvote 전에 의견을 작성하여 개선 할 수 있도록 :)
nischayn22

그 링크가 작동하지 않습니다!
deebee 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.