2014 dxdy logo

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

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


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


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Быстрый алгоритм для поиска двух одинаковых
Сообщение31.01.2013, 21:26 


22/01/13
89
Moscow
Даны числа $\{a_1, a_2, \ldots\ , a_n\}$.
Необходимо ответить, есть ли среди них два одинаковых числа за время $O(n\times\log(n))$.

Задача прямо из первой темы учебника, а я сразу задумался.

 Профиль  
                  
 
 Posted automatically
Сообщение31.01.2013, 21:30 
Супермодератор
Аватара пользователя


20/11/12
5728
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
Причина переноса: формулы не оформлены ТеХом

Оформите формулы ТеХом. Инструкции по оформлению формул здесь или здесь (или в этом видеоролике).
После исправлений сообщите в теме Сообщение в карантине исправлено, и тогда тема будет возвращена.

 Профиль  
                  
 
 Posted automatically
Сообщение01.02.2013, 17:44 
Супермодератор
Аватара пользователя


20/11/12
5728
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»
вернул
формулы поправил - наведите мышкой и посмотрите, как оформлять формулы.
Для возврата темы следует писать сюда

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение01.02.2013, 18:24 


28/05/08
284
Трантор
Указание: если бы было дополнительно известно, что список отсортирован, то за какое время решалась бы задача?
Кстати, это вопрос не для математического, а скорее для программистского форума.

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение01.02.2013, 22:01 


26/05/12
108
Минск, Беларусь
kirill94, а что вообще можно сделать за $O(n\log(n))$?

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение02.02.2013, 10:43 


26/08/11
2108
Бинарное дерево наверное имеют ввиду.

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение02.02.2013, 11:22 
Заслуженный участник
Аватара пользователя


11/03/08
9970
Москва
Зачем так сложно, с деревом?
Если последовательность чисел упорядочена, место их в последовательности зависит от их значения. Где могут быть расположены два одинаковых числа?

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение02.02.2013, 23:25 


26/05/12
108
Минск, Беларусь
Евгений Машеров, если последовательность упорядочена, то её можно просто пробежать за $O(n)$... а вот упорядочить её как раз можно за $O(n\log(n))$ любым известным способом.

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение03.02.2013, 08:40 
Заслуженный участник
Аватара пользователя


11/03/08
9970
Москва

(Оффтоп)

Спасибо, товарищ капитан!

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение05.02.2013, 03:12 
Аватара пользователя


05/01/13
8
Славянск
Верно вопрос скорее всего по программированию...

Если величины $a_i$ ограничены, например так: $a_i \in [A..B]$, то поиск можно выполнить за $O(n)+B-A+1$.

При чтении данных заполняем массив $[A..B]$, если прочитали $a_k$ то увеличиваем на 1 элемент $a_k$. После достаточно "пробежать" весь массив $[A..B]$ и проверить есть ли в нем хотя бы одно число более 2, следовательно в исходном множестве присутствуют как минимум два одинаковых элемента.

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение05.02.2013, 07:15 
Заслуженный участник


12/09/10
1547
Что-то я не понял. $a_n = \sin n$. Что мы пробегаем и что увеличиваем?

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение05.02.2013, 07:52 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Имелось в виду - если числа целые.
Была другая похожая простая задача, только наоборот: дан набор чисел, в котором каждое число, кроме какого-то одного, встречается дважды. Найти это единственное неодинаковое.

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение05.02.2013, 08:17 
Заслуженный участник


12/09/10
1547
XOR?

 Профиль  
                  
 
 Re: Быстрый алгоритм для поиска двух одинаковых
Сообщение05.02.2013, 08:31 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Естественно.

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

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



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

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


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

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