최첨단 Maximum Flow 알고리즘이 실용적입니까?


30

를 들어 최대 흐름 문제 , 최근 작년로 개발 적어도 하나, 매우 정교한 알고리즘의 수있을 것 같다. Orlin의 Max는 O (mn) 시간 이상으로 흐르거나 O (VE)에서 실행되는 알고리즘을 제공합니다.

반면에 가장 일반적으로 구현되는 알고리즘은 다음과 같습니다. (완전한 검색을 수행했다고 주장하지는 않습니다.

  • 에드몬드-카프 : ,O(VE2)
  • 푸시-리 라벨 : FIFO 정점 선택을 사용하는 또는 O ( V 3 )O(V2E)O(V3)
  • Dinic의 알고리즘 : .O(V2E)

더 나은 점근 적 실행 시간을 가진 알고리즘이 실제 문제의 크기에 실용적이지 않습니까? 또한 "Dynamic Trees"가 상당히 많은 알고리즘에 관여하고 있습니다. 이것들은 실제로 사용됩니까?

참고 :이 질문은 원래 stack overflow에 대해 요청 되었지만 여기 에 더 적합하다고 들었습니다.

편집 : cs.stackexchange에 대한 관련 질문 , 특히 동적 트리 (일명 링크 컷 트리)를 사용하는 알고리즘에 대해 질문했습니다.이 질문을 따르는 사람들에게 관심이있을 수 있습니다.


1
일반적인 의미에서, 알고리즘이 "실제"인지 "구현"되는지는 약간 다릅니다. 이상적으로 저자는 자신의 알고리즘의 구현을 릴리스 할 것이며,이 경우 일반적으로 사용하는 것이 "실용적"입니다. 그렇지 않으면 TCS 문헌에서 종종 더 많은 예외가 발생합니다. 하지만 종종 "실제"되지는 다른 저자 알고리즘은 때때로 크게 또는 매우 복잡한 의사로 작성된 논문, ... 성공적인 구현은 정확성에 대한 좋은 테스트, 때로는 발굴 과정을 포함 ...에 대한 설명을 제공 "구현"하기
vzn을

3
Andrew Goldberg는 푸시 리 라벨 작업을 기반으로 다양한 최대 흐름 변형을위한 매우 훌륭한 코드 기반을 사용했습니다. 나는 과거에 코드를 사용했으며 매우 깨끗했습니다. 불행히도이 사이트는 기능이 저하 된 것으로 보입니다.
Suresh Venkat

3
@vzn 알고리즘이 실제 구현에 적합한 지에 관심이 있습니다. 그렇지 않은 알고리즘이 있으며, 어떤 사람들은 이러한 "은하 적 알고리즘"이라고 부르는데, 그것들은 뛰어난 점근 적 행동을 가지지 만 오버 헤드가 너무 커서 현재 구현에 실질적인 이득이 없기 때문입니다. (낮은 순서는 중요합니다.) 행렬 곱셈은 제가 생각할 수있는 가장 좋은 예입니다. Max flow가 비슷한 상황인지 궁금합니다.
Rob Lachlan

5
알고리즘이 "실제"인지 "구현"되는지는 약간 다릅니다. - 맞아요. 알고리즘은 실용적이지 않고 구현 될 수 있지만 그 반대는 아닙니다.
Jeffε

답변:


22

위에 링크 된 논문의 저자 중 한 사람입니다.

우리는``최첨단 ''을 사용하여 컴퓨터 비전에서 발생하는 최대 흐름 인스턴스에서 잘 수행되는 알고리즘 (공개적으로 구현 가능한 구현)을 의미한다고 언급하고 싶습니다.

또한 그 좁은 (아직 실용적인) 맥락에서 종종 잘 수행하는 알고리즘은 이론적 보증이 좋지 않은 알고리즘을 추가하고 싶습니다. 예를 들어, 우리 논문 (Boykov-Kolmogorov algorithm)의 ref [5]는 컴퓨터 비전 커뮤니티에서 널리 사용되지만 강력한 폴리 타임 런타임은 없습니다.

마지막으로 누구나 관심이있는 경우 실험 데이터를 http://ttic.uchicago.edu/~dbatra/research/mfcomp/index.html에서 확인할 수 있습니다.

코드도 곧 제공 될 예정입니다.


당신이 그룹에 가입 한 것을 매우 깔끔하게! 환영! 논문에 대한 하나의 질문 [첫 번째 논문부터]. 이 논문에서 사용 된 알고리즘의 선택 과정에 대해 더 많이 듣는 것은 매우 흥미로울 것입니다. 그것은 완전히 정교 해 보이지는 않았습니다. 어쩌면 어떤 알고리즘이 선택되었는지, 어떤 알고리즘이 생략되었는지, 왜, 구현을 얻거나 실행하는 데 어떤 도전이 있었는지, 더 이국적이라고 생각하는 것에 대해 [예 : 웹 페이지?] Orlins와 같은 알고리즘과 최근 구현에 대한 전망 등!
vzn

7

이 질문에 대답하는 방법에는 여러 가지가 있지만 반드시 합의 된 답변 일 필요는 없습니다. 일반적으로 공개 배포를 위해 구현 및 릴리스 된 알고리즘은 "실제"입니다. 그러나 고안되었지만 아직 구현되지 않은 일부 알고리즘은 실용적 일 수 있지만 "배심원이 나올"수 있습니다. **

실용적인 목적을위한 좋은 전략 은 설문 조사를 찾는 것입니다. 또한 실제 알고리즘에 관심이있는 사람들에게는 실제 데이터에 대한 벤치 마크가 예상되는 "실제"행동에 대한 훌륭한 지침이 될 수 있습니다.

벤치마킹 설문 조사는 충분할 수 있지만 실행 가능한 알고리즘 측면에서 잘못 될 것입니다. 이는 최대 흐름에 많은 응용 프로그램이있는 비전 처리 인스턴스와 비교하여 벤치 마크 된 14 개의 "최첨단"최대 흐름 알고리즘에 대한 최근의 철저한 실험적 분석입니다. "최신 기술"은 "구현 된"알고리즘을 지칭하기 위해 취해진 다.

[1] MaxFlow 재검토 : Verma and Batra의 고밀도 시력 문제대한 Maxflow 알고리즘의 경험적 비교

** 일부 이론적 알고리즘은 TCS 커뮤니티에서 점점 비공식적으로 "은하계"로 언급되는 범주에 속하지만 불행히도 TCS 작성자는 현재이 범주에서 알고리즘에 대해 명백하게 자체 레이블을 지정하지 않으며, 게시되거나 일반적으로 허용되는 기준이 없습니다. 블로그 에는 참조가 있지만 "은하계"알고리즘 .

이러한 의미에서 실용성은 아마도 이론적 연구를위한 새로운 차원 일 것이다. 이상적으로이 "실제적인"축 / 기준에 대한 최대 흐름 알고리즘에 대한 조사가있을 것이지만, 작성 당시에는 존재하지 않을 가능성이 높습니다. PCS 알고리즘이 "효율적인"것으로 널리 받아 들여지는 것과는 달리 아직 완전히 공식화되지 않은 TCS에서 가장 최근에 인정 / 승인 된 개념.


3
+1. 이것이 왜 다운 보트인지 확실하지 않습니다. 나는 당신이 연결 한 논문을 읽고 있으며, 적어도 문제 영역에서 실제 접근 방식이 무엇인지 보는 데 매우 도움이되었습니다.
Rob Lachlan

3
로버트 세지는 말했다 비교적 최근의 이야기 것을 실험을하지 않는 알고리즘 디자이너가 추상화 손실되는 것을 될 위험. 이야기는 그래프에서 경로를 찾는 것에 관한 것이며 maxflow 와도 관련이 있습니다. 그것은 질문에 대답하지 않지만 누군가에게 흥미로울 수 있습니다.
Juho

5
@Rob,이 답변의 유일한 관련 부분은 논문에 대한 링크이며 해당 논문이 전혀 연결되지 않은 이유를 설명하는 답은 많지 않습니다. OP가 Google에서 링크를 찾았지만 읽지 않았다고 생각합니다. 나머지 답변은 OP가 전문가가 아니며 여기서 실제로 관련이없는 문제에 대한 OP의 개인적인 관점을 나타내는 일반적인 언급과 논평입니다. 답변은 블로그 게시물이 아닙니다. 관련 논문에 대한 링크는 주석으로는 좋지만 답변을하지는 않습니다. 이것이 하나이면 나쁜 대답입니다. 그래서 내가 그것을 투표 한 이유입니다.
Kaveh February

2
@Kaveh 공정합니다. 나는이 논문이 사람들이 실제로 유용한 알고리즘으로 간주하는 것에 대한 유용한 지표라는 것을 발견했다. 나는 많은 답을 얻지 못한 것에 동의합니다.
Rob Lachlan

3
나는 downvotes도 이해하지 못한다. 포스터가 링크 된 기사를 읽지 않았다고 믿을만한 이유는 없으며 관련성이있는 것으로 보입니다. 공감하지 말고 공감하지 말아야 할 소망을 볼 수 있습니다.
Suresh Venkat

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