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
8603
Цюрих
Есть довольно очевидный способ за $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
4584
Если каждый раз искать с нуля то $O(n^3)$, но можно перебрать элементы по возрастанию за $O(n^2\ln(n))$ и с другой стороны - по убыванию за те же $O(n^2\ln(n))$. Для этого потребуется дополнительная память $O(n)$.

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

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



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

Сейчас этот форум просматривают: Mikhail_K


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

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