흥미로운 조합 최적화 문제 생성


9

메타 휴리스틱에 대한 과정을 가르치고 있으며 프로젝트라는 용어에 대한 고전적인 조합 문제의 흥미로운 사례 를 생성해야합니다 . TSP에 집중하자. 우리는 차원 그래프를 다루고 있습니다 . 물론 임의의 에서 가져온 값으로 비용 행렬을 사용하여 그래프를 생성하려고 시도했지만 경로 비용에 대한 히스토그램 (많은 임의의 경로를 샘플링하여 그려 짐)이 있음을 알았습니다. 매우 좁은 정규 분포 ( 는 이지만 는 약 )입니다. 이것은 대부분의 임의 경로가 평균보다 낮고 최소 비용 경로가 임의 경로에 매우 가깝기 때문에 문제가 매우 쉽다는 것을 의미합니다.200(0,1)μ 100σ4

그래서 나는 다음과 같은 접근법을 시도했다 : 행렬을 생성 한 후 그래프 주위를 길게 무작위로 걸어서 (Bernoulli with ) 가장자리 값을 임의로 두 배 또는 절반으로 줄입니다. 이것은 모든 값을 낮추는 경향이 있으며 결국 0에 도달하지만 올바른 단계 수를 취하면 around 및 around 으로 분포를 얻을 수 있습니다 .(0,1)=0.5μ2σ1

내 질문은, 우선 흥미로운 문제에 대한 좋은 정의 인가? 이상적으로는 다중 모드 (가장 일반적인 이웃 기능)이며 최소값 근처에 경로가 거의 없으므로 대부분의 임의 솔루션이 최적에서 멀리 떨어져있는 인스턴스를 원합니다. 두 번째 질문은이 설명에서 그러한 특성을 가진 인스턴스를 어떻게 생성 할 수 있습니까?


3
OR에서 연구 한대로 TSP 벤치 마크 라이브러리를 찾으십시오 (예 : Applegate 등의 TSP에 대한 작품 검색) (예 : here )?
닐 영

2
많은 인스턴스 가있는 TSPLIB 가 있습니다.
adrianN

감사합니다. 링크를 확인하고 도움이되었지만 내 질문은 특정 인스턴스를 해결하려는 것이 아니라 좋은 조합 문제를 일으키는 원인에 대한 통찰력, 나중에 확장 할 수있는 통찰력을 찾는 것입니다. TSP 이외의 다른 문제.
Alejandro Piad


1
@Alejandro, 숨겨진 도둑질 문제 는 당신이 찾고있는 것의 예 일 수 있습니다. 또한 만족스러운 임의의 인스턴스가 어려운 것으로 간주 되는 연구를 검색 할 수도 있습니다 .
Neal Young

답변:


6

더 어려운 인스턴스를 생성하는 일반적인 방법 중 하나는 다음과 같습니다.

  • 무작위 문제 인스턴스로 시작하십시오.
  • "숨겨진 백도어"내장 : 좋은 솔루션 (이미 존재하는 솔루션보다 훨씬 나은 솔루션)을 임의로 선택하고 문제 인스턴스를 수정하여이 솔루션을 문제 인스턴스에 강제로 포함시킵니다.

예를 들어, TSP의 경우 다음과 같은 작업을 수행 할 수 있습니다. 랜덤을 선택하여 랜덤 문제 인스턴스 생성(0,1)비용 매트릭스. 그런 다음 문제 인스턴스를 조정하여 더 나은 솔루션을 숨기십시오. 각 정점을 정확히 한 번만 방문하는 둘러보기를 임의로 선택하고 해당 둘러보기의 가장자리 가중치를 줄입니다 (예 :(0,) 어디 <1; 기존 무게를 줄입니다. 또는 고정 된 확률로 기존 모서리를 수정하십시오). 이 조정 절차를 통해 최적의 솔루션이 선택한 특별한 여행이 될 가능성이 높습니다. 운이 좋으며 합리적인 임베딩을 선택하면 특수 솔루션을 숨긴 위치를 쉽게 식별 할 수 없습니다.

이 접근법은 우리가 트랩 도어 단방향 문제를 만들고자하는 암호화의 일반적인 아이디어에서 비롯됩니다. 비밀 트랩 도어에 대한 지식 없이는 문제를 해결하기가 어렵지만 비밀 트랩 도어에 대한 지식이 있으면 문제가 매우 쉬워집니다. 다양한 트랩 문제에 비밀 트랩 도어를 포함시키려는 시도가 많았으며 (트랩 도어를 추가 한 후에도 여전히 문제의 강도를 유지함) 혼합 된 성공률을 보였습니다. 그러나이 일반적인 접근 방식은 귀하의 목적에 따라 작동하는 것처럼 보입니다.

결과적인 문제는 어려울 수 있지만 실제적인 관점에서 흥미로울 까요? 모르겠어요 나를 때린다. 그들은 나에게 상당히 인공적으로 보이지만, 내가 무엇을 알고 있습니까?

기본 목표가 실제로 관련성이 있고 TSP의 실제 응용 프로그램을 대표하는 문제 인스턴스를 선택하는 것이라면 전혀 다른 접근법을 제안합니다. 대신 TSP의 실제 응용 프로그램을 조사한 다음 해당 문제의 대표적인 인스턴스를 찾아 해당 TSP 문제 인스턴스로 변환하십시오. 따라서 실제 문제에서 파생 된 문제 인스턴스로 작업하고 있습니다.


나는이 접근법을 매우 좋아하며 실제로 내가 생각해 낸 것에 매우 가깝고 다른 문제에 거의 적응할 수있는 것처럼 보입니다. 저의 초기 동기는 학생들에게 시험 문제를 만들어 내고 있었기 때문에 실제 문제가 발생하지만 인공적인 상황 (학생 알고리즘을 등급 화하려고 시도)에 대해 잘 서버합니다. 어쨌든, 연구 요구 사항에도 적용하려고 노력할 것입니다. 그러나 생성 된 인스턴스가 충분히 대표적인지 판단하기 위해서는 면밀한 검토가 필요합니다. 고마워요, 당신은 내 +1과 수락을 받았습니다.
Alejandro Piad 2016 년

3

솔루션의 특성을 자주 제어 할 수있는 접근 방식은 한 NP 완료 문제에서 다른 문제로 전환하는 것입니다. 이제 당신은 통계적으로 당신의 질문에 "흥미로운"을 정의하지만, 또 다른 깔끔한 접근법은 현장에서 고전적인 문제를 사용하는 것입니다. 내가 가장 좋아하는 것은 factoring / SAT입니다. 요인이 많은 "부드러운"숫자 또는 두 개의 "인자"(하나와 소수) 만있는 소수를 찾는 것은 사소한 일입니다. SAT 인스턴스를 만들어 인수 분해를 해결하면 솔루션이 요인 ​​(실제로 요인의 순열이지만 미리 계산하기 어렵지 않음)입니다.

이 접근법에서는 "재미있는 (interesting)"이라는 정의가 자연스럽게 정의되어 있는데, 이는 P 시간으로 해결할 수없는 어려운 사례입니다. 이 방법은, 그렇지 않으면 복잡성 이론, 즉에서 가장 중요한 의문 해결 할 인수가 아닌 부드러운 번호 하드 인스턴스를 생성하기 위해 보장 인수 분해의 경도를 .

그런 다음 문제 (이 경우 TSP)로 변환하십시오. 이 답변을 작성하려면 SAT에서 TSP로 직접 변환하는 것이 좋으며, 거기에 있다고 생각하지만 익숙하지는 않습니다. 그러나이 질문에서 SAT를 인수 분해하는 것에 대한 참고 자료는 다음과 같습니다 . 정수 인수 분해 문제를 NP 완료 문제로 줄입니다.

팩토링이 마음에 들지 않으면 여러 가지 이유로 먼저 SAT에서 인스턴스를 만드는 것이 좋습니다. 쉽게 전환하기 쉬운 전환 지점 등을 중심으로 조정 된 임의의 SAT 인스턴스로 시작할 수 있습니다. 또는 커뮤니티에서 생성 한 DIMACS 하드 인스턴스 에서 작업 할 수 있습니다. 또는 SAT에서 다른 논리적 "프로그램"을 작성하십시오.


1
TSP와 관련된 추가 링크를 제공하지는 않지만 변환 접근 방식이 마음에 들지만 어쨌든 아이디어에 감사드립니다. 내 +1을 받았습니다.
Alejandro Piad 2018 년

1
@alejandro thx ok 여기에 링크가 있습니다. 예를 들어 슬라이드 28부터 시작하십시오 [학부 과정!], CMSC 451 : SAT, Coloring, Hamiltonian Cycle, TSP 슬라이드 작성자 : Carl Kingsford . SAT → 해밀턴 사이클 (TSP) 변환. 원하는 경우,보다 효율적인 (오버 헤드가 적은) 변환 접근법이 있거나 문헌에 다른 맞춤형 측면이있을 수있다. 더 자세한 내용을 듣고
싶으시면

1
나는 매우 높은 수준의 PDF를 확인했지만 충분히 이해할 수 있습니다. 당분간 @DW 답변으로 필요한 것을 얻었지만 귀하의 접근 방식은 나에게 매우 흥미로운 것 같습니다. 나는 그것을 스스로 시도해야 할 것이다. 나는 이전에 (복잡한 학부 과정에서) 축소를 보았지만 하드 인스턴스를 만들기 위해 실제로 구현하는 것에 대해서는 생각하지 않았습니다. 최적화와 메타 휴리스틱 스에 대한 장기적인 관심이 있으며 관심 분야 중 하나는 흥미로운 벤치 마크 문제를 만드는 것입니다. BTW, 방금 당신을 블로그를 확인, 확실히 다시 올 것이다!
Alejandro Piad 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.