Вопрос

У меня есть график в форме прямоугольной сетки, то есть n узлов и 2 н края, все смежные узлы соединены. Это означает, что это двухцветно, и, следовательно, на него можно делать двусторонние сопоставления.

Каждый (непрашенный) край имеет вес, назначенный ему - либо -2, -1, 0, 1 или 2. Никакие другие значения не допускаются

Как бы я пошел по нахождению сопоставления на этом графике, который максимизирует сумму весов в соответствии с сопоставлением? Псевдокод был бы хорошим, не беспокойтесь со специфическими языками.

В идеале я ищу алгоритм, который проходит в квадратичном времени - возможно o (n ^ 2 log n) в худшем случае.


Прежде чем предлагать решение, я попытался сделать максимальный сопоставление, используя края веса 2, то весом 1 (не переходя по краям веса 2). Я забил 98% с этой реализацией (проблема со стороны информатики Олимпиада), и удивляясь, что такое 100% раствор.

Это было полезно?

Решение

Не уверен, почему вы думаете о мин. Разрез не гарантированно даст вам соответствие в этом случае. Что вам нужно сделать, это решить проблему присваивания.Проблема назначения. Отказ Последовательный кратчайший алгоритм математики решает его в O (EV Log V), который в вашем случае является O (N ^ 2 log n).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top