최소 비용 최대 흐름 알고리즘은 특정 종류의 선형 프로그램에 대한 해법 일뿐입니다.
선형 프로그램을 효율적으로 해결할 수있는 것은 convexity입니다.이 경우, 두 개의 가능한 흐름 F와 G가있는 경우 [0, 1]의 모든 t에 대해 흐름 tF + (1-t) G가 가능합니다. 비용 (T) + (1-t) G) ≤ 비용 (F) + (1-t) 비용 (G)을 갖는다. 사용자의 목적은이 기본적으로 FixedCost 수단 [1, X, C1 ≤ C2에서 FixedCost 0 [X + 1, Y]는 (C1 - C2) X 같은 것을 보인다 ≤ 0 :
6| .
5| .
4| .
3| .
2| .
1| .
0.----------
0 1 X
을
아마 [1, X]> 0의 FixedCost가 중요하지만 NP-hard 문제가됩니다. 그래프에서 Steiner 트리를 줄이면 각 에지의 용량을 무한대로 만들고 Steiner 트리 문제에 의해 지정된 첫 번째 유닛과 그 이후의 유닛에 대해 0이됩니다. k - 1 슈타이너 터미널 중 하나를 용량 k - 1의 소스로 만들고 다른 하나는 용량 1로 싱크하십시오. k - 1 단위의 가장 저렴한 플로우를 요청하십시오.
간단한 예를 들어 이해할 수 있습니까? 최대 용량이 10 인 에지가 있고 그 가장자리의 플로우가 5보다 작 으면 비용은 amount_of_flow * 10이고 플로우가 5보다 클 경우, 비용은 amount_of_flow * 20입니다. –
첫 번째 에지의 단위당 비용은 10이며, 두 번째 에지의 단위 비용은 20입니다.이 경우 10 단위의 유동성은 150이었습니다. 그러나 @redoubtable이 언급했듯이,이 문제는 일반적으로 NP 하드로 보입니다. – maniek