We consider a dynamic situation in the weighted bipartite matching problem: edge weights in the input graph are repeatedly updated and we are asked to maintain an optimal matching at any moment. A trivial approach is to compute an optimal matching from scratch each time an update occurs. In this paper, we show that if each update occurs locally around a single vertex, then a single execution of Dijkstra's algorithm is sufficient to preserve optimality with the aid of a dual solution. As an application of our result, we provide a faster implementation of the envy-cycle procedure for finding an envy-free allocation of indivisible items. Our algorithm runs in $\mathrm{O}(mn^2)$ time, while the known bound of the original one is $\mathrm{O}(mn^3)$, where $n$ and $m$ denote the numbers of agents and items, respectively.
翻译:我们考虑加权二分图匹配问题中的动态场景:输入图中边的权重被反复更新,且要求我们随时维持一个最优匹配。一种朴素的方法是在每次更新发生时从头计算最优匹配。本文证明:若每次更新仅发生在单个顶点附近,则在对偶解的辅助下,单次执行Dijkstra算法即足以维持最优性。作为该结论的一个应用,我们为寻找不可分物品无嫉妒分配中的嫉妒循环过程提供了更快的实现。本文算法运行时间为$\mathrm{O}(mn^2)$,而原始算法的已知复杂度界为$\mathrm{O}(mn^3)$,其中$n$和$m$分别表示代理人与物品的数量。