프로젝트 기록

PROJECT RECORD

Erdős 문제를 풀어보며, 계산이 확인할 수 있는 범위를 나눴다

EN 한국어

1, 2, 4, 8에서 수 세 개를 골라 더해 보자. 같은 수를 여러 번 골라도 된다면 1 + 1 + 4와 2 + 2 + 2가 모두 6이 된다. 수를 고르는 순서만 바뀐 경우가 아닌데도 합이 겹친다. Erdős 241번을 살필 때 만든 검증 코드에는 이 작은 집합을 일부러 실패하는 입력으로 넣었다.

문제가 요구하는 것은 이런 겹침이 없는 집합이다. 1부터 N까지의 정수 중에서 수를 골라, 순서를 무시한 모든 세 수의 합이 서로 달라지게 한다. 같은 수를 반복해서 쓰는 경우도 포함하며, 이런 집합을 B₃ 집합이라고 부른다. 241번 문제는 이 조건을 지키면서 집합을 얼마나 크게 만들 수 있는지 묻는다.

이번 탐색에서는 가능한 접근법을 검토하면서, 작은 입력에서 직접 확인할 부분을 별도 코드로 묶었다. 나는 좋은 예가 조건을 만족하는지만 보는 데서 그치지 않고, 조건을 깨는 입력도 제대로 걸러지는지 함께 확인하도록 했다. 남은 것은 문제의 해답이 아니라, 두 종류의 검사와 일반적인 주장 사이에 어디까지 연결이 있는지 살핀 기록이다.

세 수를 고르는 규칙부터 맞췄다

검사에서 1 + 2 + 4와 4 + 1 + 2를 다른 합으로 세면 모든 입력이 곧바로 실패한다. 반대로 같은 수의 반복을 금지하면 원래 문제보다 약한 조건을 검사하게 된다. 그래서 첫 코드는 수 세 개를 중복 허용 조합으로 열거하고, 각 합에 어떤 조합이 먼저 대응했는지 저장하도록 구성했다. 이미 나온 합에 서로 다른 조합이 도착하면 그 두 조합을 충돌 근거로 돌려준다.

위의 1 + 1 + 4 = 2 + 2 + 2는 이 구분을 확인하기 좋은 사례다. 두 조합은 원소의 순서만 다른 것이 아니므로 실제 실패로 처리해야 한다. 검사 결과를 참·거짓 하나로만 남기지 않고 합과 두 조합을 함께 돌려주면, 문제 정의를 잘못 옮겼는지 입력 자체가 조건을 깨는지 확인할 수 있다.

첫 검사에는 원소 수가 4개부터 10개까지인 고정 집합 일곱 개를 넣었다. 이 수는 탐색으로 발견한 새로운 최적값이 아니라, 여러 계산식을 같은 입력에서 비교하기 위해 코드에 지정한 검사 범위다. 각 집합에서 원소를 하나씩 지운 뒤에도 B₃ 조건이 유지되는지 확인하는 항목도 함께 두었다.

같은 계산을 다른 구현으로 다시 세기

삼중합의 중복 여부를 확인한 뒤에는 같은 집합에서 덧셈과 뺄셈으로 특정 정수를 만드는 방법의 수를 셌다. 예를 들어 r₂(x)는 a − b = x가 되는 순서 있는 쌍의 수이고, r₄(x)는 a − b + c − d = x가 되는 네 수의 선택 수다. 이런 개수를 비교하면 집합의 덧셈 구조를 수치로 다룰 수 있다.

첫 코드에서는 r₂의 값을 먼저 구한 뒤 두 차이의 조합으로 r₄를 계산했다. 두 번째 검사는 첫 코드를 불러오지 않고, 네 수를 직접 모두 고르는 반복문으로 같은 값을 계산하도록 따로 구성했다. 같은 함수를 두 번 실행하는 것보다 구현을 달리해야 공통 코드에 숨어 있는 실수를 찾을 여지가 생긴다. 여기서 ‘별도 검사’는 소프트웨어 구현이 분리돼 있다는 뜻이며, 외부 연구자가 증명을 검증했다는 뜻은 아니다.

두 번째 코드의 대상은 1부터 14까지의 모든 부분집합이다. 가능한 부분집합 2¹⁴개, 즉 16,384개를 훑으면서 B₃ 조건을 만족하는 것에만 관련 계산식을 적용하도록 했다. 이것은 코드에 정해 둔 유한 검사 범위다.

작은 예에서 맞는 식을 어디까지 쓸 수 있을까

검토한 접근 중에는 이러한 표현 개수에 가중치를 주어 더하고, 그 합으로 집합 크기의 상한을 얻으려는 방식이 있었다. 코드에는 중심에서 멀어질수록 작아지는 삼각형 가중치 max(0, u − |x|)를 넣고, u를 집합 크기의 제곱에 비례하도록 바꿔 보는 항목이 있다. 한 점의 값만 보는 대신 주변 값이 전체 부등식에 얼마나 기여하는지 비교하려는 검사다.

이 부분에서 유한 계산과 일반적인 증명을 분리했다. 몇 개의 집합에서 부등식이 맞아도, N이 계속 커지는 모든 경우에 원하는 상한이 나온다는 결론은 따라오지 않는다. 9월 2일 연구 기록에서도 검토한 경로가 알려진 상한을 개선했다거나 241번을 해결했다고 결론내리지 않았다. 특정 가정 아래의 방법 한계에 관한 주장은 별도의 증명 검토 대상으로 남겼다.

구간을 덮는 문제에서는 남은 조건을 따로 적었다

같은 대화에서 이어서 살핀 687번 문제는 다른 대상이다. x 이하의 소수마다 나머지 한 종류를 고른 뒤, 그 조건들로 1부터 시작하는 정수 구간을 얼마나 길게 빠짐없이 덮을 수 있는지 묻는다. 가령 한 소수에 대한 조건으로 걸러진 수와 다른 소수에 대한 조건으로 걸러진 수가 겹칠 수 있어, 각 조건이 덮는 개수를 단순히 더해서는 전체를 셀 수 없다.

이 시도에서는 구간에서 걸러지는 수와 조건 간 겹침을 추정하는 체 방법을 검토했다. 기록에는 일반적인 개선에 필요한 균일한 이차 추정이 미증명인 채로 남아 있다. 여러 매개변수 선택에 걸쳐 성립해야 하는 그 단계를 확보하지 못했으므로, 241번의 유한 검사 결과를 가져와 687번의 진전으로 합치지 않았다.

2026년 9월 8일 확인한 문제 목록에는 두 문제 모두 OPEN으로 표시돼 있다. 이 기록에서 남길 수 있는 구체적인 작업은 검사 규칙을 코드에 옮기고, 잘못된 입력과 다른 구현으로 그 규칙을 점검하며, 일반적인 결론에 필요한 미증명 단계를 분리한 것이다. 다음에 이 노트를 다시 펼치면 검사 범위를 그대로 재현하는 일과 남은 증명을 다루는 일을 각각 시작할 수 있다.

연구 목록 · 작업 목록

Research index · Work index

Woong Works에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기