하위 집합 합계의 특별한 경우
-
28-09-2020 - |
문제
복잡성 이론 과정에서 다음과 같은 문제를 해결했습니다.
$ a :={a_1, \ dots, a_n \} \ subset _ {\ mathrm {finite}} \ mathbb {n} $ 다음 조건이 적용되도록 $ \ mathbb {n} $ 에서도 $ b $ : $ a_i $ 은 $ a_ {i + 1} $ 을 모든 $ i
주어진 조건으로 인해 $ B $ 은 첫 번째 $ a \ neq 1 $의 배수가되어야합니다.. $ a_1 \ neq 1 : b= a_1 \ cdot x $ .이 x를 찾는 것은 부분 집합 합계 문제로 돌아갑니다.
도움이되는 모든 도움이 될 것입니다.
해결책
짧은 알고리즘은 @ $ a $ > $ a $ 에서 가장 큰 숫자를 찾고 $ b $ . $ b $ 이 0이되면 솔루션이 발생합니다. $ a $ 의 모든 숫자가 $ b $ 출력 번호보다 큰 지점에 도달하면 < / P>
다음에서는 알고리즘에 대한 공식적인 설명과 정확성 증명을 나열합니다.
여기에 알고리즘에 대한 공식적인 설명이 있습니다. $ a_0= a, b_0= b $ 및 $ b_i $ $ i $ -the-threed의 "수학 용기"> $ b $ --th 반복. $ a_i $ $ a $ 이후 $ i $ - the 반복. 그런 다음 알고리즘은 다음과 같습니다. 각 단계에서 $ i= 1, \ dots $ $ a_j $ 을 $ A_ {i-1} $ $ b_ {i-1} $ 보다 크지 않습니다. 그러한 숫자가없는 경우 출력 번호가 없으면 그렇지 않으면 $ b_ {i}= b_ {i-1} - a_j $ 및 $ a_i= a_ {i- 1} \ setminus \ {a_j \} $ . $ b $ 이 0과 같으면 출력 예, isoterate
청구 1. 이전 알고리즘은 해당 질문에 설명 된 하위 집합 합계의 제한된 경우의 주어진 인스턴스의 정답을 출력합니다.
우리가 주장을 증명하기 전에 우리는 보조 주장을 증명합니다.
청구 2. $ a_1, \ dots a_n $ $ $ 오름차순으로. 그런 다음 $ \ sum \ limits_ {i= 1} ^ {k-1} a_i
증명. (청구 2). $ k $ 에 대한 유도로 증명. n= 1의 경우 합계가 비어 있습니다. 이제 우리는 $ k $ 에 대해 그것을 증명합니다. $$ \ sum \ limits_ {i= 1} ^ {k-2} a_i + a_ {k-1} <2a_ {i-1} \ leq a_i, $$ 첫 번째 불평등이 유도 가설으로 인해 보유하고 두 번째는 $ A_ {k-1} $ 나누기 때문에 $ a {k} $ .
증명. (청구됨) 알고리즘이 예를 출력하는 경우, 주어진 세트에서만 숫자 만 선택하고 $ b $ .
이제 우리의 알고리즘이 출력하지 않으면 주어진 인스턴스가 아님이 아닙니다. 이를 위해 $ i $ 에서 $ a_j $ 을 선택하는 것을 선택합니다. 주어진 인스턴스의 솔루션에는이 요소가 있어야합니다. 우리는 $ i $ 에 대한 유도에 의해 이것을 증명합니다. $ a_j ', j'> j $ 은 $ b_i $ 보다 엄격하게 큽니다. 유도 가설에 의해 $ a $ 의 모든 이전의 선택이 하나가 존재하는 경우 솔루션의 일부였습니다. 클레임 1, $ \ sum \ limits_ {i= 1} ^ {j-1} a_j $ < $ a_j $ $ a_i $ 은 $ a_j $ 과 따라서 $ A_J $ 을 선택하지 않으면 모든 작은 요소를 선택하면 $ b $ span>. 따라서 $ A_J $ 을 선택해야합니다.
다른 팁
문제의 추가 특별한 경우 : $ a_i= c ^ {i-1} $ 일부 $ c \ ge 2 $ .예를 들어 $ C= 10 $ 이면 $ a_1= 1, a_2= 10, a_2= 100,A_3= 1000, \ dots, a ^ n= c ^ {n-1} $ .
이 경우 $ 0 \ LE B
이 문제에 대해 생각하는 데 도움이되는지 확인하십시오.