Нахождение трех ячеек в матрице с максимальной общей суммой - PullRequest
0 голосов
/ 29 мая 2018

У меня есть жадное решение для следующей проблемы.Я хочу знать, как это доказать?

Проблема заключается в следующем: Учитывая n x n 2D матрицу неотрицательных целых чисел, найдите три такие ячейкичто сумма этих ячеек и соседних ячеек максимальноЕсли две выбранные ячейки имеют общие соседние ячейки, соседние ячейки участвуют в сумме только один раз, а две ячейки считаются смежными, если они имеют общее ребро.

Наивные грубые решения работают в O (n 6 ) .Я написал жадное решение, которое работает в O (n 4 ) .Жадное решение использует эту идею, что ячейка с максимальной общей суммой себя и соседних ячеек всегда является частью ответа.Я протестировал оба решения на нескольких тестовых примерах, и результаты идентичны.

В жадном алгоритме сначала я выбираю ячейку с максимальной общей суммой себя и соседних ячеек, а затем перебираю все возможные пары ячеек.

Теперь мой вопрос таков: почему эта жадная стратегия работает?Я хочу доказательства.Спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

Это не работает.Извините,

20  1 40  1 40  1 20
20  2 40  3 40  2 20
20  1 40  1 40  1 20
 1  1 20 20 20  1  1
 1  1 20  2 20  1  1
 1  1 20 20 20  1  1

3 имеет наибольшую сумму себя и всех соседних ячеек.Однако на самом деле лучше всего выбрать 3 ячейки со значением 2.

Edit

Видимо, вы имели в виду что-то отличное от меня под "смежным".Попробуйте этот пример:

 1  1  1  1  1  1  1
20  2 40  3 40  2 20
 1  1  1 20  1  1  1
 1  1 20  2 20  1  1
 1  1  1 20  1  1  1
 1  1  1  1  1  1  1
...