>백엔드 개발 >C++ >부분 집합 평등은 NP-완전입니다.

부분 집합 평등은 NP-완전입니다.

王林
王林앞으로
2023-08-28 23:41:061490검색

부분 집합 평등은 NP-완전입니다.

"부분 집합 합계" 문제라고도 알려진 부분 집합 대응은 예시적인 NP-완전 계산 문제입니다. 일련의 숫자와 객관적인 값이 주어지면 작업은 총 개수가 객관적인 값과 동일한 숫자의 하위 집합이 있는지 확인하는 것입니다. 이 문제의 NP 용량은 다항식 시간 감소를 통해 다양한 다른 NP 완전 문제를 해결하는 능력에서 비롯됩니다. 단순한 정의에도 불구하고 모든 이벤트의 "하위 집합 대응"을 해결할 수 있는 효율적인 계산이 없습니다. 이는 가상 소프트웨어 엔지니어링 및 단순화와 다양한 분야(예: 암호화, 자산 배분 및 동적 문제)에서 큰 의미를 갖습니다. 기능적 응용으로.

사용방법

  • 부분집합 합계 감소

  • 3SAT에서 감소

부분집합 합계에서 줄이기

NP-완전 문제인 "부분 집합 공정성"을 처리하는 한 가지 방법은 NP-완전 문제("전체 부분 집합 수" 문제)를 크게 줄이는 것입니다.

알고리즘

  • "Subset Aggregation" 문제의 경우, 이는 정수 S 묶음과 값 T의 대상입니다.

  • 유사한 집합 S와 목표 자존감 2T를 사용하여 "부분 집합 공평" 문제의 또 다른 사례를 만듭니다.

  • "부분 집합 집합" 문제에서 T로 요약되는 S의 부분 집합이 있다면, 이때 "부분 집합 균일성" 문제에서는 다음과 유사한 부분 집합을 추가하여 T로 요약하는 부분 집합 2T가 있게 됩니다. 그 자체 .

  • "부분 집합 합계" 문제에서 T로 요약되는 S의 부분 집합이 없다고 가정하면 "부분 집합 공정성" 문제에서 2T로 요약되는 부분 집합이 없습니다. 그 자체는 2T를 초과할 수 없습니다.

  • 이러한 쇠퇴는 "부분 집합 공정성" 문제를 해결하는 것이 "부분 집합 집계" 문제를 해결하는 것만큼 어렵기 때문에 NP-완전 문제가 된다는 것을 보여줍니다.

으아악

출력

으아악

3SAT에서 단축

또 다른 방법은 알려진 NP-완전 문제(예: 3SAT 문제)에서 직접 빼서 "부분 집합 대응"이 NP-완전임을 증명하는 것입니다.

알고리즘

  • 조건당 3개의 리터럴이 있는 결합 일반 구조의 부울 공식을 포함하는 3SAT 질문의 예를 제공합니다.

  • 다음과 같이 여러 정수와 대상 값을 사용하여 "부분 집합 균일성" 문제를 다시 논의해 보겠습니다.

  • a.3SAT 방정식의 각 변수에 대해 집합에서 값 1을 갖는 숫자를 만듭니다.

    b. 3SAT 방정식의 각 추가 조건에 대해 집합에서 값 2를 사용하여 숫자를 생성합니다.

    c. 3SAT 레시피의 모든 추가 조건과 모든 요소의 전체 수량으로 목표 값을 설정합니다.

  • 3SAT 방식을 만족할 수 있다면, 만족된 각 조건에 대해 하나의 변수를 선택하여 목표값을 요약하는 "부분집합 동질성" 문제에 부분집합이 있습니다.

  • 3SAT 공식을 만족할 수 없는 경우 "하위 집합 대응" 문제의 하위 집합은 목표 값으로 일반화될 수 없습니다. 왜냐하면 모든 법적 하위 집합은 충족된 절과 관련된 값 2 이상의 정수를 포함해야 하기 때문입니다.

  • 3SAT 문제는 NP-완전 문제로 알려져 있으므로 이 하락은 "부분 집합 자산"의 NP 피크를 나타냅니다.

으아악

출력

으아악

결론

두 접근 방식 모두 "부분 집합 공평" 또는 "부분 집합 집계" 문제가 NP 완전이므로 모든 예에 대한 문제를 해결하기 위한 효율적인 계산을 추적하는 것이 불가능하다는 것을 보여줍니다. 과학자들은 이 문제에 대한 실행 가능한 시나리오를 효율적으로 해결하기 위해 동적 프로그래밍이나 기타 추정 절차를 활용하는 경우가 많습니다.

위 내용은 부분 집합 평등은 NP-완전입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제