Я ищу алгоритм для нахождения положений всех седловых точек в матрице NxN.Алгоритм поиска седловых точек в двумерном массиве
Поиск по другим ответам на StackOverflow, а также на других сайтах в целом, я нашел решения, касающиеся седловых точек, которые работают в одном направлении. То есть, я хочу найти седловую точку, которая может быть максимальной в ее строке и минимуме в ее столбце, или минимум в ее строке и максимуме в ее столбце.
Например, учитывая:
array = {
{ 10, 15, 20, 15, 10 }
{ 5, 10, 15, 10, 5 }
{ 0, 5, 10, 5, 0 }
{ 5, 10, 15, 10, 5 }
{ 10, 15, 20, 15, 10 } },
седловые точки являются 10-х в углах и 10 в середине.
Я могу найти их наивно довольно легко, но я хотел чего-то более эффективного. Мне сказали, что это можно сделать в O (n^2).
Я подумал, что, возможно, я мог бы исправить координату x и итерации через y-координату, чтобы найти все максимумы и минимумы, а затем отменить процесс, зафиксировав y-координату и итерацию через координату x, но я могу " t достаточно визуализировать его достаточно хорошо, чтобы реализовать эту идею.
Любая помощь была бы принята с благодарностью.
Что первая строка будет '{10, 15, 20, 15, 12}'? Последнее значение равно 12, а не 10. Остается ли оно седловой точкой? Всегда ли элементы в строке/столбце кривые вверх или вниз, или строка/столбец может содержать несколько интервалов с чередующимися изгибами? –