실제 생활에서 NP 완료 또는 NP 어려운 문제


17

누구든지 업무에서 NP 완료 또는 NP 어려운 문제 (휴리스틱 또는 차선책을 찾는 등)를 정기적으로 해결하는 실제 사례가 있습니까? 예약, 계획, VLSI 설계 등에서 발생한다는 것을 알고 있지만 오늘날 정기적으로 수행하는 프로그래머 또는 엔지니어를 고용하는 주요 산업에 대한 아이디어를 얻으려고합니다. 예를 들어, 전문 지식이나 라이브러리를 개발해야한다면, 프로그래밍 최적화의 일부로이를 사용할 수있는 조합 최적화는 무엇입니까?

개인 계정이 있습니까?


"정기적으로"는 무엇을 의미합니까
Conrad Frix

@Conrad, 나는 주관적인 아이디어를 추측합니다. 나는 노력의 5-10 % 이상이 np-complete 또는 np-hard 문제를 해결하는 데 중점을두고 있다고 말하고 싶습니다.
highBandWidth

게임에서의 AI 프로그래밍은 NP-complete 일 가능성이 있다고 생각합니다.
Michael K

많은 NP-hard 문제가 있습니다 (유한 한 리소스를 사용하여 예약 및 계획하는 것은 대개 NP-hard입니다). 그러나 조합 최적화는 잘못된 길입니다. 100을 생성 할 수있는 것! 도메인 별 휴리스틱을 적용 할 수있는 것보다 가능한 빨리 조합하는 것이 훨씬 유용하지 않습니다.
David Thornley

@David, 조합 최적화로 조합을 생성하는 것은 아닙니다. 나는 k-SAT 또는 Traveling Salesman Problem 등과 같은
일련

답변:


8

내가 생각할 수있는 것 중 일부 (대부분 내가 관련된 것들) :

  • 언어 및 컴파일러를위한 개발 환경. 다음과 같은 질문 :이 문법은 모호한 언어를 생성합니까? (이 문제는 실제로 결정할 수 없습니다!)
  • 자료 복구. 부분적으로 손실 된 데이터 패킷을 재 조립하거나 조각난 파일을 복구합니다. (공장 복잡성)
  • 소프트웨어 보안. 관찰 된 동작이 그 원인 일 수 있는지 여부를 판단하기 위해 소프트웨어를 통해 가능한 모든 실행 경로를 평가합니다. (멈춤 문제?)
  • 물류 센터. 전송 패킷, 크기 및 이동 위치를 기반으로 전송 사용 최적화 (최소 지수)

최단 경로 찾기, 간호사 일정 예약 등과 같은 많은 표준 예가 있지만 조합 최적화에 관심이 있다면 다음에 대해 모두 알고 있습니다.)


물류 회사에서 실제로 이러한 최적화 문제를 해결하는 데 전념하는 프로그래머가 있습니까? 아니면 이러한 작업의 대부분이 일반적으로 한 번만 해결되고 대부분의 회사에서 반복 되는가? 여러 가지 예는 +1입니다. 이 중 하나에 참여 했습니까?
highBandWidth

내가 처음으로 도구를 작성한 두 번째는 동료가 작업하는 것입니다. 새로운 물류 알고리즘을 통해 몇 퍼센트의 추가 성능을 달성하면 수백만 달러를 절약 할 수 있기 때문에 대규모 물류 회사는이 분야에서 적극적으로 연구를 수행 할 것으로 기대합니다. :)
Deckard

나는 여행하는 세일즈맨 역할에 대해 인터뷰했습니다. 대기업은 여정이 10 % 정도 개선 될 수 있도록 박사 학위로 가득 찬 방을 가졌습니다. 매일 수백만 달러의 가치가 있습니다. 그래서 그 장소가 존재합니다. 라우팅과 스케줄링은 두 가지 큰 문제입니다. 1000 명의 직원과 2 ~ 3 개의 교대를 운영하는 공장이 있다고 상상해보십시오. 이제 다음 200 개 규칙과 모든 사람의 선호 사항을 염두에두고 다음 달에 모두가 일할 수 있도록 일정을 예약하십시오 ...

9

터치 패널 제조 문제와 같은 여행 세일즈맨을 해결하기 위해 시간 제약 시뮬레이션 어닐링을 사용했습니다. 각 패널의 레이저 에칭 사이클 시간에서 밀리 초마다 면도를하면 장비의 처리량, 활용도 및 수익성이 증가하므로 스 크라이 빙 경로 사이의 데드 타임 (비 스크라이브 링 경로)을 최소화하기 위해 많은 노력을 기울였습니다. 분명히 최적화 할 수 없었습니다).

최적화 계산이 더 최적의 경로에 의해 절약되는 시간보다 오래 걸릴 수있는 위험을 감수 할 수 없었기 때문에 시간 제한 알고리즘을 사용하여 문제의 NP 경도를 극복했습니다. 기계가 패널을 적재 위치에서 레이저 헤드가 가장 가까운 코너로 이동하는 동안 시뮬레이션을 실행할 시간이있었습니다. 이 알고리즘은 거의 수백 밀리 초 내에 완료되지 않았지만, 항상 이전에 사용했던 단순하고 적응성이없는 모델 (나선 또는 뱀 경로)보다 더 나은 스크라이브 경로를 반환했습니다.


2
멋지다. 그러나 모든 패널이 동일한 패턴을 가질 것이라고 생각했으며 모든 위젯에 대해 문제를 반복해서 반복하지 않고 한 번만 해결하면됩니다. 왜 매번 해결해야 했습니까?
highBandWidth

2
이상적인 패턴은 각 패널에 대해 동일했지만 패널의 기계적 정렬, 공정에서 이전 레이어의 위치 및 레이저 스 크라이 빙 헤드의 타일 특성으로 인해 각 패널에 대해 하위 패턴의 동적 세트를 계산해야했습니다. 개별적으로 optmised. 특히 시간 제약 조건에서 작업하는 것은 흥미로운 문제였습니다.
Mark Booth

7

여러 로컬 DNA 서열 정렬의 생물 정보학 문제에 대해 (현재 실제로) 작업하고 있습니다. 이것의 요점은 어떤 공통 속성 (ChIP-chip 실험에서 비슷한 발현 프로파일 또는 동일한 전사 인자 결합)을 가진 유전자의 많은 서열이 어느 시점에서 강하게 정렬되면, 아마도 그 공통된 이유를 발견했을 것입니다 특성. 그런 다음 다시 문제의 통계적 측면에 더 관심이 있습니다. NP-hard이지만 실제로 휴리스틱을 사용하여 많은 것을 잃지 않습니다. 문제의 흥미로운 부분 인 IMHO는 신호대 잡음비 문제입니다.


1
고전적인 조합 / AI 접근법 또는 통계적 접근법을 사용하고 있습니까? 어떤 식 으로든 모든 최신 nlp, 클러스터링, 기계 학습은 np-complete 문제를 처리하지만 일반적으로 통계적 관점에서 공격을받습니다. 그럼에도 불구하고 흥미롭고 관련성이 있습니다. 이것이 학계 나 산업계에 있습니까?
highBandWidth

@ highBandWidth : 내 접근 방식은 통계적입니다. 나는 학계에 있습니다. 내가하고있는 연구의 핵심은 통계 문제를 무시하고 조합 문제 인 나쁜 일이 발생한다는 것입니다.
dsimcha

3

NP 완전 / 하드가 무엇을 의미하는지는 잘 모르겠지만 공급 자동 계획 은 일종의 문제 라고 생각 합니다.

100 개의 제품 SKU : 맥주에 대해 90 일 전달 수요 계획이 있습니다. 100 개의 제품 SKU는 다음에서 제공됩니다.

  • 10-15 종류의 기본 1 차 양조 재료가 있으며, 1 천 리터 큰 캔으로 양조되며 하루가 걸립니다.
  • 양조 후 일부 재료를 추가해야하며 (누설?) 10-15 일 동안 휴식을 취하면 15-20 종류의 레벨 2 재료가 있습니다.
  • 마지막으로 준비가되면 일부 재료를 추가해야합니다. 음료수 맥주라고하는 3 단계 재료입니다. cc가 있습니다. 30 종류의 맥주;
  • 맥주는 3 dl, 5 dl로 병에 담을 수 있으며 때로는 특별한 necklacigng (레벨 4)를 얻은 다음 5x4 상자, 6 팩 (레벨 5)으로 포장 할 수 있습니다.

양조에서 포장에 이르기까지 각 작업마다 기계 "라인"이 있습니다. 기계는 더 많은 작업을 수행 할 수 있습니다. 예를 들어 일부 포장 기계는 6 팩 및 3 팩을 만들 수 있지만 다른 기계는 6 팩만 할 수 있습니다. 속도와 같은 제약이 있거나 큰 양조 주전자가 양조를위한 것입니다. 6000, 최대, 8000 l의 맥주 (단, 맥주 종류가 가벼운 경우 최소값은 5000 l이고 최대 값은 7000 l입니다). 그리고 모든 수준에서.

과제 : 내가 언급했듯이 100 종류의 레벨 5 (병에 든 포장 된 물건)에 대한 수요 계획이 있습니다. 5 단계의 모든 기계에 대해 최적의 제조 계획을 세우 십시오 . 기계 스위치를 최소화하십시오 (예 : 병입 .5, .5, .5, .3, .3, .3이 .3, .5, .3, .5, .3, .5보다 낫습니다. 병입 기계의 데드 타임 감소). 고객 별 우선 순위 : 일부 고객은 만료 시간의 50 % 이상 만 맥주를 운송해야합니다. 등

병목 현상 (eh)을 발견하고 존재하지 않는 머신을이 지점에 추가하여 대체 계획을 세우면 최상의 가상 시나리오를 사용하여 새 머신을 구입할 것을 제안 할 수 있습니다.

충분히 어렵습니까, 아니면 섬유 공장 이 어떻게 작동 하는지 말해 주어야 합니까?

(개인적인 언급 : 웹, 은행 및 물류는 까다로운 분야이지만 제조 문제와 비교할 때 아기 장난감입니다.)

면책 조항 : 보안상의 이유로 숫자가 왜곡됩니다.


고용주를 위해 이와 같은 것을 해결하기위한 도구를 사용하고 있습니까?
highBandWidth

1
글쎄, 제조업은 큰 규모의 물류입니다. 그런 점에서 금융보다 확실히 단단합니다. 그러나 적어도 그것은 무작위 방정식과 느슨하게 정의 된 연산 순서가 아닌 정의 된 문제를 처리합니다!
Michael K

1
리소스가 가장 적합한 모든 종류의 스케줄링 알고리즘은 아마도 배낭 문제같을 것입니다 . 이는 NP- 완료입니다.
Scott Whitlock

내 친구가 몇 년 전 Excel + VB에서 DP / SP 시스템을 만들었습니다. 자동 계획이 포함되어 있지 않으므로 앱이 Excel에 비해 너무 뚱뚱합니다. 따라서 우리는 MySQL / PHP / AJAX 기반 협업 확장 가능 (데이터 흐름-일명 흐름 기반 프로그래밍-접근 방식) 스프레드 시트 프레임 워크 (me)를 만들었으며 XLS 버전 (친구)의 biz 로직을 채택했습니다. . 자동 계획도 구현했습니다 (친구). 스프레드 시트를 작성하는 것은 좋은 아이디어 였지만 작동합니다. 가장 중요한 부분 : XLS-> SQL 스위치는 다소 훌륭합니다! 툴 / 플랫폼 (PHP, Java, 원하는 것)을 사용하여 데이터 (예 : 자동 계획)로 무엇이든 할 수 있습니다.
ern0

@ ern0, NP-complete / NP-hard는 기본적으로 모든 가능성을 하나씩 시도하는 대신 취할 수 있다고 가정 할 수있는 바로 가기 수를 나타냅니다. 이론가들은 지름길을 알아 내기 위해 많은 노력을 기울이고 있는데, 예를 들어 ABC가 항상 AC보다 길다는 것을 알고 있다면 더 빠르게 만들 수 있고 최적의 값의 50 % 내에 있음 을 알 수 있습니다. 기타
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.