У меня есть матрица sqaure и меньший квадрат, который перемещается внутри матрицы во всех возможных положениях (не выходит из матрицы). Мне нужно найти наименьшее число во всех таких возможных перекрытиях.Переместить квадрат внутри большой матрицы, найти минимальное число в перекрытии
Проблема в том, что размеры обоих могут достигать тысяч. Любой быстрый способ сделать это?
Я знаю один способ - если есть массив вместо матрицы и окно вместо квадрата, мы можем сделать это в линейной времени с использованием Deque.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Примеры
Матрица:
1 3 6 2 5
8 2 3 4 5
3 8 6 1 5
7 4 8 2 1
8 0 9 0 5
Для квадрата размера 3, всего 9 перекрытые возможно. Для каждого перекрытия минимальных чисел в виде матрицы является:
1 1 1
2 1 1
0 0 0
Похоже, вы хотите выполнить 2d корреляцию. В зависимости от языка и библиотек, которые вы используете, но существуют эффективные методы: например, http://stackoverflow.com/questions/1100100/fft-based-2d-convolution-and-correlation-in-python – YXD
@MrE Да, он похож на корреляцию, но его некоррелирование является линейным пространственным фильтром, но это является нелинейным. Кроме того, я не могу использовать библиотеки. – Bruce
Что такое «наименьшее число во всех таких возможных перекрытиях»? – ypnos