2014 dxdy logo

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

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




 
 Есть ли однопроходный алгоритм?
Сообщение08.12.2009, 10:59 
Пусть у нас есть вектор $v$. Можно ли за один проход по его элементам вычислить вектора ${\bf{w}} = {{\bf{v}}}/
{{\sum\limits_i {{\bf{v}}_i } }}$ и ${\bf{\hat v}} = {{\bf{v}}}/
{{\left| {\bf{v}} \right|}} = {{\bf{v}}}/
{{\sum\limits_i {{\bf{v}}_i^2 } }}$?
Почему-то я до сих пор верю, что можно, а нигде не видел. :oops: (Обычный же алгоритм за первый проход накапливает сумму, а за второй делит элементы на неё.)

 
 
 
 Re: Есть ли однопроходный алгоритм?
Сообщение08.12.2009, 11:07 
Аватара пользователя
За один проход по вектору $v$ копируем его в $w$, а потом уже больше не трогаем. Конечно, это шутка.
Но уточните тогда, что Вы понимаете под одним проходом? Если это некая процедура, у которой на входе ровно один элемент их $v$, а на выходе ровно один элемент из $w$, то нельзя.
А если Вы под этим понимать что-то другое, то можно. Например, каждый шаг пересчитывая весь вектор $w$. И такое встречается, если элементы $v$ сыплются последовательно откуда-то, количество их неизвестно и огромно, а нужно постоянно иметь вектор $w$ в памяти (непрерывная нормализация).

 
 
 
 Re: Есть ли однопроходный алгоритм?
Сообщение08.12.2009, 11:17 
gris в сообщении #269010 писал(а):
И такое встречается, если элементы $v$ сыплются последовательно откуда-то, количество их неизвестно, а нужно постоянно иметь вектор $w$ в памяти (непрерывная нормализация).

Да, раз совсем в один не получается, хоть бы так, с пересчитыванием целого вектора. :) Примерно таким же способом можно среднее считать, да?
Алгоритм с таким пересчётом медленно вырисовывается... Но лучше где-нибудь его посмотреть (всё равно пока он мне ещё не нужен), gris, не знаете где?

 
 
 
 Re: Есть ли однопроходный алгоритм?
Сообщение08.12.2009, 11:49 
Аватара пользователя
Это есть в статистике.
Идут данные непрерывным потоком, десятками мегабит в секунду. Хранить их не нужно и дорого. Но нужно иметь целый набор динамически меняющихся характеристик. Есть и формулы, и алгоритмы. Тысячи их. Пересчёт после добавления только одного элемента это самое простое.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group