2010-10-09 1 views
5

이것이 NP 완성일지도 모르겠지만 어쨌든 물어볼 것입니다. 욕심 많은 알고리즘이 내 머리 속에서 작동하지 않는 것 같습니다.모든 항목을 포함하는 태그 중 가장 적은 수의 태그를 찾는 알고리즘?

각 태그가 1 개 이상인 항목 집합이 있으면 모든 항목을 포함하는 가장 작은 태그 집합을 찾고 싶습니다.

편집 :my "solution" here을 참조하십시오.

+0

단순한 알고리즘은 n * 2^k입니다. 태그의 파워 세트를 반복하고 각 태그가 달린 항목이 현재 세트로 덮여 있는지 확인하십시오. n은 태그가 지정된 항목의 수이고, k는 태그의 수입니다. – aaronasterling

+0

그래서 ... 1000 개의 항목과 3000 개의 태그가 있습니다 ... 1.2e906 작업을보고 있습니다 ... 즉, 해결할 수없는 ... 그 계획에 너무 많은 부분. – mpen

+0

@ 마크, 최적의 솔루션을 얻는 가장 순진한 방법은 n * 2^k입니다. 나는 더 나은 방법에 대해 확신하지 못합니다. 근사치를 원한다면 그 이상으로 향상시킬 수 있습니다. – aaronasterling

답변

6

이것은 NP 완성 인 Set Cover 문제입니다. 각 태그는 항목 목록의 하위 집합 을 정의하며,이 합집합이 항목의 전체 목록과 같은 하위 집합 (태그)의 최소 개수를 찾고 싶습니다.

+0

이름이 있었음을 알았습니다 ... 이름이 무엇인지 알 수 없었습니다. 이제 더 자세히 조사 할 수 있습니다. 감사합니다 :) – mpen

관련 문제