Доброго времени суток!
Господа, есть следующая задача: придумать алгоритм поиска минимального опорного множества в матрице
, где
или какому-то
Вот, то что придумал я:
1. Найти максимальную связку.
2. Находим элемент в связке такой, что: на его линии существуют нули, которые не могут быть "вычеркнуты" никакими линиями других элементов связки.
3. Вычеркиваем соответствующую линию этого элемента. Причём этот элемент в связке мы более не рассматриваем называем его "вычеркнутым" .
4. Повторяем с шага 2 пока таких элементов не найдется.
5. Если в связке еще остались "не вычеркнутые" элементы , то находим элемент в связке с наибольшим количеством нулей на линии и "вычеркиваем" его. Причём, если оказывается что максимальное количество нулей равно 0 делаем вычеркивание через произвольную линию соответствующего элемента связки.
Примечание:
- линия - строка или столбец А;
- под "вычеркнуть" элемент связки, я имею в виду вычеркнуть линию А содержащую этот элемент;
- через каждый элемент связки проходит только одна вычеркнутая линия, т.е. вычеркивание по строке или по столбцу.
Прошу вас ответить на следующий вопрос: будет ли этот алгоритм работать в общем случае?