2011-01-25 3 views
0

Мне дана задача написать алгоритм для вычисления максимального двухмерного подмножества матрицы целых чисел. - Однако я не заинтересован в помощи для такого алгоритма, я больше заинтересован в понимании сложности для лучшего худшего случая, который может решить это.Максимальное двумерное подмножество

Наш текущий алгоритм подобен O ​​(n^3).

Я рассматривал, что-то подобное делит и побеждает, разбивая матрицу на ряд подматриц, просто добавляя элементы внутри матриц; и тем самым ограничивая число матриц, которые нужно рассмотреть, чтобы найти приближенное решение.

+0

Это будет сама матрица, не так ли? ;) – John

+0

Что? - Не уверен, что я получу то, что вы сказали, действительно ли это не зависело бы от количества отрицательных чисел в матрице? – Skeen

+0

Ahh хорошая точка. Вы сказали, что целые числа не являются неотрицательными целыми числами. ;) Итак, вы ищете суб-прямоугольник чисел внутри вашей матрицы, чтобы сумма чисел в этом прямоугольнике была максимальной, чем сумма всех возможных прямоугольников? – John

ответ

0

Я понял, что нет лучшего способа сделать это. - По крайней мере, пока неизвестно человеку. И я собираюсь придерживаться решения, которое я получил, главным образом потому, что он прост.

0

Худший случай (исчерпывающий поиск) определенно нет хуже чем O (n^3). В Интернете есть несколько описаний этого.

Лучшим случаем может быть намного лучше: O (1). Если все элементы неотрицательны, то ответ - сама матрица. Если элементы неположительны, то ответ - это элемент, имеющий значение, самое близкое к нулю.

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