А могут ли большевики...

Dec 20, 2010 01:04


... найти медиану неотсортированного массива чисел за линейное время? Или хотя бы за время, лучшее O(n*log(n))?

Также интересуют "трюковые" способы, if any, сверхбыстрого нахождения медианы в наборах из 3-х, 5-ти и 8-ми чисел.

Just in case: во всех случаях числа суть 32-битовые беззнаковые целые.

Что же до прочего, то я считаю, что частная Read more... )

техническое, ТРИЗ, программизЬм

Leave a comment

Comments 13

enotuss December 20 2010, 03:01:46 UTC
для 4-8 можно тупо перебором с SSE. А вообще говнопедия в помощь.

Reply

rexy_craxy December 20 2010, 13:18:47 UTC
Можно подробнее?

Reply

enotuss December 20 2010, 23:48:35 UTC
Конкретные ассемблерные команды (или сишные интринсикты) смотри в мануале, там их не так много.
Алгоритм:
1.грузишь 4 числа в XMM.
2.дублируешь первое число в другой XMM.
3.сравниваешь XMM.
4.считаешь количество бит результата (или грузишь маску, не помню какие там ограничения).
5. если количество бит (или маска) соответствует медиане, то выход, иначе повтор с шага 2 для следующего числа.

Каждый шаг - это 1-3 такта процессора. Для 32 битных чисел бенефит от SSE небольшой, а вот если 16 или 8 битные числа, то вполне.

Reply

rexy_craxy December 21 2010, 03:35:31 UTC
> сравниваешь XMM

Вот этим озадачен! Вообще SIMD-расширениями пользуюсь иногда (в объеме, поддерживаемом GCC), но, ИМХО, для векторов даже теоретически не определена операция сравнения. Или имеется в виду что-то вроде побитового & или ^?

Reply


В поисках медианы vwr December 20 2010, 07:26:59 UTC
Re: В поисках медианы rexy_craxy December 20 2010, 13:19:04 UTC
Спасибо, поглядим.

Reply


udpn December 20 2010, 08:55:24 UTC
Кормен.
Супероптимизация.

Reply

vwr December 20 2010, 09:33:00 UTC
Что-то все на этого Кормена (и соавт.) ссылаются.
Нешто и впрямь специалист?

Reply

udpn December 20 2010, 10:54:25 UTC
Если бы то же самое было хорошо описано у Седжвика или Кнута, ссылался бы на них. Но они извращенцы, а у Кормена есть хотя бы адекватный псевдокод.

Reply

rexy_craxy December 20 2010, 13:00:08 UTC
"Супероптимизация" -- это название книги или раздела в книге? :)

Reply


rexy_craxy December 21 2010, 03:44:51 UTC
Всем спасибо. Актуальность темы сильно понизилась, т.к. я, наконец-то, вдоволь навозился с самопальными алгоритмами выравнивания контраста, основанными на использовании СКАЛЯРНЫХ стат. величин. Все они неприемлемо ухудшают отношение сигнал/шум.

Так что буду делать старый добрый CLAHE, использующий РАСПРЕДЕЛЕНИЯ. А в нем моменты считать не надо :)

Reply


Leave a comment

Up