Блог пользователя empaktus

Автор empaktus, история, 7 месяцев назад, По-английски

I have a list of pairs of strings (or pairs of hashes) called V. I want to create a list W by removing elements from V such that W has as many pairs as possible and: There are no i,j such that W[i].first==W[j].first There are no i,j such that W[i].second==W[j].second I know it can be solved with max-flow, but the complexity would be at least O(|V|^2) because that would be the amount of edges in the graph. Is there any algorithm faster than that?, the algorithm might be probabilistic.

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

»
7 месяцев назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

This is literally maximum matching. But the complexity should be $$$O(V \sqrt{V})$$$ if one uses Dinic/Hopcroft-Karp for solving the maximum matching.

»
7 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

The amount of edges would be |V|.