저는 프로그래밍에있어서 매우 새롭기 때문에 누군가가 저에게 올바른 방향으로 나를 가리킬 수 있기를 희망합니다.요구 사항을 충족하는 항목의 조합은 어떻게 찾을 수 있습니까?
나는 ~ 2400 명으로 구성된 목록을 가지고 있으며 각 사람은 적어도 23 가지 조건 중 하나를 가지고 있습니다 (각 사람의 상태는 조건이있는 경우 1, 그렇지 않은 경우 0 중 하나입니다).
E.G. Jon의 조건이 1, 5, 6이면 Jon의 출력은 {1,0001100 ...}이됩니다.
다음은 각 조건에 맞는 사람의 수를 표시합니다. 따라서 조건 1의 희망 숫자가 10 명이고 조건 2의 희망 숫자가 5 인 경우 조건 1을 가진 10 명과 조건 2를 가진 5 명이 필요합니다 (두 사람 모두 조건 1과 조건 2를 계산할 수 있습니다) .
또한 정확히 30 명을 선택하고 가능한 한 원하는 조건 수에 가깝게하려고합니다. 단 하나의 조건에는 최소 3 명이 있어야하고 10 명 이하의 사람이 있어야한다는 엄격한 제한이 있습니다.
이 작업을 수행 할 수있는 방법이 있습니까? 그렇다면 어떻게해야합니까? 나는 이것을 무차별 적으로 시도했지만 많은 조합이 해결책을 얻지 못하게했다.
편집 : 여기에 오명 4 조건 목록과 작은 예입니다
Person 1: {1,0,0,1}
Person 2: {0,1,1,1}
Person 3: {0,0,0,1}
Person 4: {1,0,0,0}
Person 5: {1,0,0,1}
원하는 숫자 2,1,1,2 }. 아이디어는 3 명을 선택하고 가능한 한 원하는 수의 조건에 최대한 근접해야한다는 것입니다. 이 예제에서는 사람 1,2, 및 4가 선택됩니다. 나는이 아이디어를 23 가지 조건을 가진 2400 명으로 확대하고 30 명을 선택해야한다. (목록 크기와 조건의 수를 늘릴 수 있어야하지만) 30 명으로 구성된 조합이 있는지는 알 수 없다. 정확한 일치가 발생합니다.
그 점을 명확히하는 데 도움이 되었습니까?
문제 사양이 약간 모호하게 들립니다. 두 가지 유형의 문제가 있는데 하나는 조건 'i'를 충족하는 'x'명을 선택하고 'i', 'j', 'k'조건을 만족하는 30 명을 선택해야합니다. , .. 또는 가능한 한 많은 조건이 있습니까? 첫 번째 유형은 쉬운 것처럼 보입니다. – norio
작은 프로세스 예제로 원하는 것을 설명해야합니다. 예를 들어 5 명과 3 가지 조건을 사용할 수 있습니다. – Alperen
순수 * python-3.x * 코드에서이 작업을 수행하거나 * z3py * 또는 [pysmt] (https://github.com/)와 같은 기성 라이브러리를 기꺼이 사용하고 싶습니까? pysmt/pysmt)? –