Изменения

Перейти к: навигация, поиск

Статистики на отрезках. Корневая эвристика

682 байта добавлено, 13:53, 16 мая 2012
Запрос на изменение элемента
== Запрос на изменение элемента ==
[[Файл:sqrt(+delta).png|right|264px]]
Для реализации Реализации данного запроса нам, в зависимости будет зависеть от того , имеет ли операция, для которой мы сделали предпосчет, обратную операцию или нети обладает ли она свойством коммутативности.* если есть обратная операциясуществует, и выполняется свойство коммутативности, то нам необходимо не придется заново пересчитывать значение для блока, достаточно будет поменять всего два элемента, так как каждый элемент входит в ровно один элемент массива <tex>B</tex>;* если нет обратной операциихотя бы одно из условий не выполняется, то нам придется заново сделать предпосчет пересчитать значение для данного блока , к которому принадлежит элемент указанный в запросе, и записать полученный результат в соответствующий элемент массива <tex>B</tex>.
Пример Примеры реализации:
<tex>p</tex> - номер элемента из массива <tex>A</tex>, который необходимо заменить; <tex>deltanewValue</tex> - на сколько нужно изменить данный элементновое значение для данного элемента.
Запрос на изменение элемента для суммы (операции, у которой есть обратная операция), и выполняется свойство коммутативности:
<precode> tmp = B[i / len] <tex> \circ </tex> inverse(A[pi]) // <tex> \circ </tex> - операция, для которой был сделан предпосчет; inverse - обратная операция A[i] += deltanewValue B[p i / len] += deltatmp <tex> \circ </tex> newValue</precode>
Запрос на изменение элемента для поиска минимума (выполняется свойство коммутативности, но нет обратной операции):
<pre>
index = len * (p / cnt)
A[p] += deltanewValue
for i = index to index + len - 1
B[p / len] = min(A[i], A[i + 1])
338
правок

Навигация