Я учусь для алгоритма экзамена, и я не могу найти способ решить следующую проблему:жадный алгоритм матрица 0 1
ВХОД: Положительные целые числа r1, r2 .... гп и c1, c2 .... cn
OUTPUT: матрица с n по n с такими номерами 0/1, что для всех i сумма i-й строки в A равна ri и сумма i-го столбца в A есть ci, если такая матрица существует. Рассмотрим следующий жадный алгоритм, который строит строку за строкой. Предположим, что были построены первые строки i-1. Пусть aj - число 1 в j-м столбце в первых строках i-1. Столбец ri с максимальным значением cj-aj присваивается 1 в строке, а остальным столбцов назначаются 0. То есть, столбцам, которым по-прежнему нужно больше всего 1, даны 1. Формально доказать, что этот алгоритм корректен с использованием аргумента обмена.
Так что я пытался сделать так, как с большинством жадных проблем, с которыми я столкнулся, состоит в том, чтобы обернуть его в индукции, предположим, что строки до i-й строки в жадном решении и оптимальное решение одинаковы и затем попытайтесь изменить i + 1-й ряд, чтобы он соответствовал жадным и доказывал, что он не создаст менее оптимальное решение для оптимального заданного. то сохраняйте его для итераций k-i до тех пор, пока все решения не будут похожи.
После попытки этого безуспешно я попробовал ту же идею только для каждой координаты, предположим, что координата ij является первой, которая не соответствует и снова не удалась.
Затем я пробовал использовать другой подход, предполагая, что у меня есть набор шагов в жадном и своп целом алгоритме (который в основном та же идея, что и первый), и все же мне не удалось найти в котором гарантируется, что я не создал менее оптимальное решение.
Заранее благодарим за любую помощь.