Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Nick Kovaliov                        2:5020/400     06 Mar 2003  16:44:30
 To : Dmitry Statyvka
 Subject : Re: как их усреднять?
 -------------------------------------------------------------------------------- 
 
     DS> Там есть одна бяка :
 
     DS> из куч надо выкидывать элемент
     DS> выпадающий из окна, а ты
     DS> предлагаешь определять выкидываемый
     DS> на основании вновь прибывшего.
 
 Почему ? ...
 Просто я удаляю не последний поступивший,
 и даже не минимальный.
 
     DS> После такого, первый элемент
     DS> верхней кучи совсем необязательно
     DS> будет медианой текущего окна.
 
 Ага ...
 
 Итак - нам нужен эл-т массива,
 стоящий на определённом месте.
 
 Будет пока говорить о
 двух массивах (множествах) -
 верхнем (элементы, большие медианы),
 и нижнем (элементы, меньшие медианы).
 Будем считать, что изначально
 наименьшим эл-том верхнего множества
 будет медиана, потом убедимся,
 что это на каждом шаге будет так.
 
 Во-первых, всегда на каждом шаге
 нужно убрать последний элемент окна.
 Hапример, нужно вести список (в кольцевом буфере)
 ссылок на элементы в порядке поступления ...
 Точнее, пар (ссылка, номер множества).
 
 Hа каждом шаге будем поддерживать
 размер мн-в такой, чтобы в сумме
 равнялось размеру окна, а верхний был
 на единицу больше, в версии же
 с чётным кол-вом два мн-ва одинаковы по размеру.
 Итак, убрали последний эл-т.
 Мы должны как-то узнать, удалился он
 из нижнего множества, или вернего.
 Как-то узнали ;-)
 
 Удаляем, и рассматриваем два случая -
 когда новый элемент больше, или меньше медианы.
 
 Если он меньше медианы -
 добавляем новый элемент к нижнему множеству.
 Если старый элемент удалили из верхнего мн-ва,
 то извлекаем наибольший элемент из
 нижнего множества, и добавляем к верхнему
 (и добавляем пару в кучу).
 
 Если новый больше или равен медиане -
 добавляем новый элемент к верхнему множеству.
 Если старый элемент удалили из нижнего мн-ва,
 то извлекаем наибольший элемент из
 верхнего множества, и добавляем к нижнему
 (и добавляем пару в кучу).
 Итак, выполняются условия -
 
 Любой элемент верхнего множества
 меньше или равен любому элементу нижнего.
 
 В них соответствующее кол-во элементов.
 Если использовать кучи, то можно
 находить минимальный (максимальный)
 за log2(длина кучи).
 Удаление и вставка так же
 производятся за log2(длина кучи).
 
 Уфх :)
 Сразу думать надо было ...
 
 До встречи, всего наилучшего !
 
 P.S.
     Hу уж теперь-то я не ошибся !
     А если даже и ошибся, идея-то понятна ? :)
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 как их усреднять?   Zahar Kiselev   27 Feb 2003 23:49:48 
 Re: как их усреднять?   Nick Kovaliov   28 Feb 2003 10:44:23 
 Re: как их усреднять?   Zahar Kiselev   28 Feb 2003 23:09:42 
 Re: как их усреднять?   Dmitry Statyvka   04 Mar 2003 16:07:49 
 Re: как их усреднять?   Zahar Kiselev   05 Mar 2003 00:15:58 
 Re: как их усреднять?   Dmitry Statyvka   06 Mar 2003 13:06:34 
 Re: как их усреднять?   Nick Kovaliov   06 Mar 2003 14:02:11 
 Re: как их усреднять?   Dmitry Statyvka   06 Mar 2003 15:32:48 
 Re: как их усреднять?   Nick Kovaliov   06 Mar 2003 16:44:30 
 как их усреднять?   Evgenij Masherov   28 Feb 2003 10:57:58 
 как их усреднять?   Zahar Kiselev   28 Feb 2003 21:33:28 
 как их усреднять?   Evgenij Masherov   01 Mar 2003 10:18:24 
 как их усреднять?   Zahar Kiselev   02 Mar 2003 01:05:54 
 Re: как их усреднять?   Nick Kovaliov   03 Mar 2003 11:12:46 
 Re: как их усреднять?   Nick Kovaliov   03 Mar 2003 11:08:43 
 Re: как их усреднять?   Evgenij Masherov   03 Mar 2003 12:26:49 
 Re: как их усреднять?   Nick Kovaliov   03 Mar 2003 13:05:22 
 Re: как их усреднять?   Evgenij Masherov   03 Mar 2003 14:14:42 
 Re: как их усреднять?   Nick Kovaliov   03 Mar 2003 15:10:43 
 Re: как их усреднять?   Nick Kovaliov   03 Mar 2003 15:26:05 
 Re: как их усреднять?   Zahar Kiselev   06 Mar 2003 02:18:24 
 Re: как их усреднять?   Nick Kovaliov   06 Mar 2003 10:05:20 
 Re: как их усреднять?   Zahar Kiselev   06 Mar 2003 17:06:50 
 Re: как их усреднять?   Dmitry Statyvka   06 Mar 2003 18:59:45 
 Re: как их усреднять?   Zahar Kiselev   06 Mar 2003 21:02:34 
 Re: как их усреднять?   Nick Kovaliov   07 Mar 2003 16:19:06 
 Re: как их усреднять?   Sergey Andrianov   01 Mar 2003 09:19:20 
 Re: как их усреднять?   Evgenij Masherov   03 Mar 2003 10:51:35 
 Re: как их усреднять?   Anatoly Saveliev   28 Feb 2003 09:23:31 
 Re: как их усреднять?   Sergey Andrianov   01 Mar 2003 00:22:06 
 как их усреднять?   Nickita A Startcev   02 Mar 2003 02:12:08 
 как их усреднять?   Zahar Kiselev   03 Mar 2003 05:20:48 
Архивное /ru.algorithms/246329137d279.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional