Abderrahim Ben Ответов: 1

Существует ли форма ленивой оценки, когда функция (например, mean) возвращает приблизительное значение при работе с массивами


Например, мы хотим вычислить среднее значение списка чисел, где список такой длинный. и что числа при сортировке почти линейны (или мы можем найти линейную регрессионную модель для данных). Математически мы можем агрегировать среднее значение

((arr[0] + arr[длина (arr)]) / 2) + перехват
Или в этом случае линейная модель почти постоянна (коэффициент наклона равен почти 1). мы можем приблизительно рассчитать:

mean(arr[n / const]) = mean(arr)
В обоих случаях применяется одна и та же концепция. и это так просто. Есть ли способ: паттерн, функция (надеюсь, в python) или любые исследования, которые можно предложить и которые могут помочь, будут с благодарностью приветствоваться; конечно, такой паттерн, если он существует, должен быть общим, а не только для среднего случая (вероятно, любая функция или, по крайней мере, агрегатные функции, такие как: sum, mean...). Пожалуйста, дайте мне знать, если что-то не ясно.

Что я уже пробовал:

Я изучал экстраполяцию, но не могу определиться с рабочим решением или, по крайней мере, с частично подобными исследованиями.
так что любой намек будет оценен по достоинству.

Richard MacCutchan

Это математика, а не Программирование.

Dave Kreskowiak

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

Rick York

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

1 Ответов

Рейтинг:
7

Patrice T

Цитата:
Существует ли форма ленивой оценки, когда функция (например, mean) возвращает приблизительное значение при работе с массивами

Нет, это вопрос здравого смысла.
Средний расчет
алгоритм складывает все значения и делит итог на количество значений. И он дает точный ответ всегда, независимо от того, какие значения используются.
В нотации big O для n значений требуется O (n)+ 1 деление.
Цитата:
при сортировке они почти линейны (или мы можем найти линейную регрессионную модель для данных).

Сортировка набора данных занимает до O (n2), так что нет.
Проверка того, что это "почти линейно", занимает больше, чем O (n), так что нет.
поиск регрессионной модели занимает гораздо больше времени, чем O (n), так что нет.
Вместо сортировки просто найти минимум и максимум занимает O (2n), так что нет. И вы даже не знаете, являются ли данные "почти линейными".
Существует множество способов вычислить среднее значение, но поскольку все эти алгоритмы требуют большего, чем просто сложение всех значений, они не используются.
Они требуют гораздо больше работы, и результат получается неправильным.