배경
이 글을 쓰는 시점에서 P 대 NP 문제는 여전히 해결되지 않았지만, Norbert Blum의 새로운 논문에 대해 이미 잘못되었다고 의심되는 P! = NP라는 증거를 들었을 것입니다.
이 백서에서 논의 된 문제는 파벌 문제 입니다. 적어도 그것이 신문 기사에서 읽은 것이므로 틀렸다면 수정하십시오. 어쨌든 다음 변형을 해결하는 프로그램을 작성하고 싶습니다.
작업
많은 학생들이있는 큰 학교가 있다고 가정 해 봅시다. 이 학생들은이 학교에 친구가 있습니다. 학생들 의 명단 은 서로 친구 인 학생으로 만 구성된 그룹 입니다.
귀하의 프로그램은 입력으로 친구 인 학생 쌍을 받게됩니다. 이 정보에서 프로그램은 가장 큰 도관 의 크기를 찾아야합니다 . 학생들은 정수 ID 로 식별됩니다 .
수학적 용어를 선호하는 경우 방향이없는 그래프의 가장자리가 각각 두 개의 노드로 식별된다는 의미입니다.
입력
입력은 비어 있지 않은 양의 정수 쌍 목록입니다 (예 :) [[1,2],[2,5],[1,5]]
. 예를 들어 배열 배열, 각각 두 개의 숫자를 포함하는 텍스트 줄 등의 합리적인 형식으로이 입력을 취할 수 있습니다.
산출
예상되는 출력은 단일 숫자 n >= 2
입니다. 최대 크릭의 크기입니다. 위의 입력 예를 사용하면 3
모든 학생 ( 및 )이 서로 친구 1
이므로 결과는 입니다.2
5
테스트 사례
[[1,2]]
=> 2
[[1,2],[3,1],[3,4]]
=> 2
[[1,2],[2,5],[1,5]]
=> 3
[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])
[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])
[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
[52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
[1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
[1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])
다른 테스트 사례의 결과를 확인 하기 위해이 (멍청한) 참조 구현 ( -d
플래그로 추가 출력을 인쇄 )을 사용할 수 있습니다 .
규칙
- 프로그램은 유효하지 않은 입력에 대해 정의 된 결과가 필요하지 않습니다. 따라서 다음과 같이 가정 할 수 있습니다.
- 항상 적어도 한 쌍 의 ID를 얻 습니다.
- 각 쌍은 서로 다른 두 개의 ID로 구성됩니다.
- 쌍이 두 번 나타나지 않음 (ID의 자리를 바꾸는 것은 여전히 동일한 쌍입니다)
- 알고리즘이 입력 크기의 상한을 설정할 수 없습니다. 언어 / 환경에 의해 설정된 순수한 기술적 한계와 한계 (예 : 스택 크기, 계산 시간 등)는 물론 불가피합니다.
- 표준 허점은 금지되어 있습니다.
- 이것은 code-golf 이므로 바이트 단위로 측정 된 가장 짧은 코드가 우선합니다.
- 알고리즘에 다항식 시간 복잡성
-1
이있는 경우 코드 크기에 관계없이 즉시 점수를 매기 지만이 경우 다른 곳에 솔루션을 제출할 수 있습니다. ;)
-1
있다 잘 자격 )