2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Поиск двух элементов приближающих число в матрице
Сообщение06.07.2016, 17:42 


06/07/16
2
Дана матрица $n \times n$, каждая строка и каждый столбец которой упорядочены по возрастанию. Предложите алгоритм, находящий два элемента этой матрицы, сумма которых наиболее близка к заданному числу q. Ограничение по дополнительной памяти — $O(n)$. Изменять исходную матрицу нельзя. Оценка будет зависеть от эффективности вашего алгоритма.

Собственно, понятно, что можно перебрать все пары чисел за $O(n^{4})$. Но сдается мне, что авторы задачи не этого хотят :facepalm:
Как думаете, насколько быстрым можно сделать алгоритм(и как)?
Также, если Вы знаете литературу, которая по вашему мнению может помочь мне прозреть, буду благодарна за ссылки.

 Профиль  
                  
 
 Re: Поиск двух элементов приближающих число в матрице
Сообщение06.07.2016, 17:53 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
Тупой перебор не учитывает условия
arien в сообщении #1136190 писал(а):
каждая строка и каждый столбец которой упорядочены по возрастанию.

Упорядоченность элементов позволяет организовать что-то наподобие метода "вилки". Например, начать с суммы элементов из "середины" матрицы, тогда будет ясно, какие суммы заведомо не имеет смысла брать.

 Профиль  
                  
 
 Re: Поиск двух элементов приближающих число в матрице
Сообщение06.07.2016, 18:07 
Заслуженный участник
Аватара пользователя


16/07/14
8523
Цюрих
Есть довольно очевидный способ за $O(n^3)$ (стандартный способ поиска элемента в матрице, упорядоченной по строкам и столбцам - смотрим в правый верхний угол, откидываем либо один столбец, либо одну строку).

 Профиль  
                  
 
 Re: Поиск двух элементов приближающих число в матрице
Сообщение06.07.2016, 18:31 


06/07/16
2
mihaild в сообщении #1136198 писал(а):
Есть довольно очевидный способ за $O(n^3)$ (стандартный способ поиска элемента в матрице, упорядоченной по строкам и столбцам - смотрим в правый верхний угол, откидываем либо один столбец, либо одну строку).

То есть идем по всем элементам матрицы, и для каждого ищем ближайший к q-$a_{ij}$ элемент за $O(n)$.. Да, это уже хорошо, но интересно, можно ли сделать быстрее?

 Профиль  
                  
 
 Re: Поиск двух элементов приближающих число в матрице
Сообщение06.07.2016, 18:47 
Заслуженный участник


04/05/09
4582
Если каждый раз искать с нуля то $O(n^3)$, но можно перебрать элементы по возрастанию за $O(n^2\ln(n))$ и с другой стороны - по убыванию за те же $O(n^2\ln(n))$. Для этого потребуется дополнительная память $O(n)$.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group