정확한 알고리즘에 사용되는 근사 알고리즘


11

근사 알고리즘은 일정한 상수까지 출력을 줄 수 있습니다. 이것은 정확한 알고리즘보다 만족스럽지 않습니다.

그러나 시간 복잡성에서는 일정한 요소가 무시됩니다.

따라서 다음과 같은 트릭이 가능한지 또는 일부 문제 를 해결하기 위해 사용되었는지 궁금합니다 .BA

  1. 근사 알고리즘을 사용하여 문제 를 해결 하여 솔루션 를 일정한 인수 로 얻습니다 .SAS
  2. 런타임이 가중치에 의존 하지만 가 올바른 솔루션 인 한 작동 하는 문제 해결하는 정확한 알고리즘을 사용하십시오 .S SBSS

이런 식으로 근사는 근사 알고리즘의 "하위 절차"이며 1 단계에서 손실 된 상수 요소는 2 단계에서 삼킨다.


올리지에서 수학 SE
sdcvvc

와 의 무게가 무엇을 의미하는지 명확히 하시겠습니까 ? SBAS
오카모토 요시오

이것은 비공식적입니다. 구체적으로 : 는 검색 문제입니다 . 는 최적화 문제로 간주되므로 (솔루션에 약간의 무게 가 ) 는 관계의 구성입니다. A B AA,BABA
sdcvvc

답은 모음 일 것입니다. 커뮤니티 위키를 만드는 것이 더 적절하다고 생각합니다.
오카모토 요시오

큰 목록 태그를 추가하면 충분하므로 커뮤니티 위키 IMHO로 만들 필요가 없습니다.
Gopi

답변:


12

파라미터 화 된 복잡성 예는이다 kernelization정점 커버 문제 Nemhauser와 속보의 정리를 이용.

최소 정점 커버 문제에서, 무 방향 그래프 G가 주어지고 최소 크기의 G의 정점 커버를 찾아야합니다. 무 방향 그래프의 정점 커버는 모든 가장자리에 닿는 정점 하위 집합입니다.

첫 번째 단계에서 근사값을 사용하는 정확한 알고리즘은 다음과 같습니다.

1 단계 : 최소 정점 커버 문제의 정수 선형 프로그래밍 공식을 설정합니다 . 선형 프로그래밍 이완의 기본 최적 솔루션은 반 적분 (즉, 모든 좌표가 0, 1 또는 1/2 임) 인 것으로 알려져 있습니다. 이러한 기본적인 최적 솔루션은 선형 프로그래밍을위한 일반적인 다항식 시간 알고리즘으로 찾을 수 있습니다 (또는이 특별한 경우에는 네트워크 흐름 문제로 공식화 할 수 있으므로 다항식 시간으로 조합하여 해결할 수 있습니다). 이러한 기본적인 최적 솔루션을 갖추면 원래 정수 선형 프로그래밍 문제에 대한 가능한 솔루션을 얻도록 반올림합니다. S를 해당 정점 하위 집합으로 설정하십시오. S는 주어진 최소 정점 표지 인스턴스의 2 근사값입니다.

2 단계 : S에 의해 유도 된 하위 그래프에서 최소 정점 커버를 찾습니다 (예 : 철저한 검색). Nemhauser and Trotter의 정리에 따르면이 하위 그래프에는 원래 입력 그래프의 최적 솔루션이 포함되어 있습니다. 따라서이 접근 방식의 정확성은 다음과 같습니다.

이 알고리즘의 고정 매개 변수 알고리즘에 대해서는 Niedermeier의 책을 참조하십시오 .


11

한 가지 예는 트리 분해 및 작은 폭의 그래프와 관련이 있습니다.

일반적으로, 경우에 우리는 나무 분해를 부여, 주어진 그래프 문제를 해결하기 위해 동적 프로그래밍 적용하는 매우 간단 최적으로합니다. 실행 시간은 트리 분해 폭에 따라 다릅니다.B

그러나 일반적으로 트리 분해가 제공되지 않지만 찾아야합니다. 문제 최대한 빨리 해결하기 위해 가능한 가장 작은 너비의 트리 분해를 찾고자합니다. 이제 이것이 문제 입니다.ABA

문제 정확하게 해결하려고 시도 할 수 있지만, 파트 에서 너무 많은 시간을 낭비 할 수 있습니다 . 가능한 접근법 중 하나는 파트 근사 알고리즘을 사용하는 것 입니다. 그런 다음 파트 런타임 시간이 더 길어지면서 파트 가 더 빠릅니다 .A A A BAAAAB


또 다른 예는 컴파일러 및 레지스터 할당 과 관련이 있습니다. 다항식 시간에서 문제 를 해결하는 정확한 알고리즘을 구현했다고 가정합니다 . 알고리즘의 실행 시간은 부분적으로 컴파일러가 CPU 레지스터에 변수를 얼마나 잘 할당했는지에 달려 있습니다. 이것이 우리의 문제 입니다.ABA

컴파일러가 근사 알고리즘을 사용하여 문제 를 해결하더라도 문제 의 솔루션 은 정확합니다 . 그러나 문제 의 근사 계수 는 알고리즘 의 실행 시간에 영향을줍니다 .A A BBAAB


treewidth 예는 원칙적으로 작동하지만 그것은 잘 전혀 대략 treewidth 매우 하드 (당신이 파벌에 근접 할 수 있기 때문에)이기 때문에, 그것을 실제로 실행하기 어려울 것이다
수레 쉬 벤 카트

8

정확한 솔루션으로 수렴하는 근사 알고리즘의 예는 LP를 해결하기위한 Ellipsoid 알고리즘입니다. 계수가 합리적인 경우 실행 가능한 폴리 토프의 두 꼭지점 사이의 최소 거리를 계산할 수 있습니다. 이제 타원체 알고리즘은 최적의 솔루션을 포함해야하는 작고 작은 elliposoid를 반복적으로 계산합니다. elliposoid가 그러한 단일 꼭짓점 만 포함하기에 충분히 작 으면 본질적으로 최적의 꼭짓점을 찾았습니다. 이것이 LP가 약한 다항식 인 이유입니다.

개요에 더 가까운 예를 들어 평면에서 포인트를 포함하는 가장 작은 디스크를 찾기위한 Matousek의 알고리즘을 고려하십시오 . 알고리즘은 먼저 반경 2의 2-approixmation을 찾고 평면을 적절한 그리드로 분할 한 다음 느린 알고리즘을 사용하여 각 그리드 클러스터 내부의 문제를 정확하게 해결합니다. k

마지막으로, 변경 기술을 따르는 많은 알고리즘 (임의의 샘플을 취한 다음 원하는 것을 얻기 위해 일부 수정을 수행)을 진행하면 그러한 프레임 워크에 빠지게됩니다. 한 가지 귀여운 예는 무작위 샘플링을 사용하여 중앙값을 계산하는 알고리즘입니다 (Motwani 및 Raghavan의 책 참조). 계산 기하학 (Computational Geometry)의 랜덤 화 된 증분 알고리즘 중 상당수가이 프레임 워크에 해당합니다.


4

많은 출력 감지 알고리즘이이 기술을 사용합니다. 예를 들어 다음은이 기술을 사용할 수있는 간단한 문제입니다.

문제 . 배열 A [1 .. n ] 가 주어집니다. 여기에서 각 요소는 A가 정렬 된 경우의 위치에서 최대 k 개의 위치에 있습니다.

예를 들어, 아래에 표시된 A [1..7]은 k = 2에 대한 입력 배열 일 수 있습니다 .

k 를 알 수 없다고 가정 하고 배열을 O ( n log k ) 시간 으로 정렬하는 알고리즘을 설계하십시오 .

문제 출처 : Algo Muse Archive.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.