Как стать автором
Обновить
73
0.1
Николай Мазуркин @MzMz

Java/Linux/Web

Отправить сообщение

HyperLogLog вроде выглядит ничуть не хуже по оценке сложности и памяти?

Все для народа, Госуслуги, банки, социальные сети, абсолюдно все завязано на номер. Попал ты в больничку на три месяца, в СИЗО, выехал за границу или просто забыл про резервный номер на втором запасном телефоне - все, номер потерял, даже если платишь исправно.

В походный котелок помещается X кг черники. Сколько кг черники поместится в этот котелок, если уминать чернику ложкой?

родилась у нас в водном походе в Карелии

то есть вода у вас была?! тогда инженер в чате:
- в котелок объемом Y литров поместить X кг черники
- залить водой до упора
- воду слить и замерить объем слитой воды Z литров
- плотность черники равна X / (Y - Z) кг/л
- при уминании в котелок войдет еще Z * X / (Y - Z) кг черники

Размышления о способах непрерывного обхода двухмерных массивов, в
которых траектория не пересекает саму себя, привели к выводу что их и не
так-то много. На самом деле базовые алгоритмы можно, как говорится,
пересчитать по пальцам одной руки. Наиболее известные из них: обход по
спирали и обход «змейкой».

Ни в одной из трех статей не нашел упоминания кривых Пеано.

Тут есть код для преобразования индекса в координаты

Ведь на гистограмму в четыре с лишним миллиардов элементов никакой памяти не хватит!

я не очень понял из статьи - а что именно мешает просто отсортировать данные за O(n*log(n)) вместо построения гистограммы?

Эту ситуацию спрашивают на собеседованиях на Junior позицию, так как все описано в любой базовой книге по Java.

    private static final Comparator<String> COMPARATOR = (s1, s2) -> {
        if (s1.length() < s2.length()) {
            // extend the shorter s1
            while (s1.length() < s2.length()) {
                s1 = s1 + s1;
            }
        } else if (s1.length() > s2.length()) {
            // extend the shorter s2
            while (s1.length() > s2.length()) {
                s2 = s2 + s2;
            }
        }

        return s1.compareTo(s2);
    };

    private String concat(String... values) {
        return Arrays.stream(values)
            .sorted(COMPARATOR.reversed())
            .reduce("", (a, b) -> a + b);
    }

Если посмотреть что происходит при делении на 99..99 то виден хитрый маневр: число abc при делении на 999 будет равно 0.abcabcabc... т.е 0.(abc)

Вообще на первый взгляд задачу можно было бы решить простым строковым сравнением чисел, но возникает проблема с числами у которых одинаковые строковые префиксы:

case 1: 35 351 20 - 3#5 3#5#1 2#0

case 2: 35 354 20 - 3#5#4 3#5 2#0


Фактически нам нужно сравнить какое из чисел с одинаковым строковым префиксом идет первым, для этого мы можем сравнивать бесконечные строки состоящие из повторов тестируемых чисел:

case 1:
353535353535353535...
351351351351351351...

case 2:
353535353535353535...
354354354354354354...


Тут можно и без всякого деления на 999..9 сделать если просто написать специальный компаратор строк с автоматическим расширением меньшей строки повторами.

но если у нас очень длинные числа, то дробь не влезет в double

можно написать специальный класс `Rational(long dividend, long divisor)` и сравнивать с приведением к общему делителю. Тогда дробных чисел не будет, только целые.

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

Google error-prone еще

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

это википедия говорит - я к сожалению не совсем математик, эти фильтры пацаны синтезировали, а я просто рядом стоял.

Тут были статьи про фильтры Калмана - они также оптимально предсказывают, если есть модель процесса.

Мне понравился толковый styleguide для shell-скриптов от Google

Я не очень понял зачем был нужен общий наркоз для SMILE? Я делал SMILE под местным наркозом, там делов всего на 10-15 минут без всякой чувствительности, плюс еще на точку надо смотреть - как это делать под общим наркозом?

Приходилось ли вам в коде видеть что-то подобное?

Приходилось

Надеюсь, что данная статья сможет внести свой небольшой вклад и прояснить некоторые моменты.

Хотелось все таки увидеть практические примеры как сделать пример лучше.

Главное чтобы пакет на PyPi остался

Просто первый пример из не-физического мира который вспомнился.

С другой стороны, если пофантазировать то можно например представить трафик на сайт как сумму какой-то реальной модели (органический ретеншн, объем рекламы, сезонность, переходы из поиска) плюс какой-то случайный шум (случайно зашли, кто-то опубликовал ссылку). В этом случае можно было бы вычленить тренд даже в случае ускорения. Другое дело что модели нет, ускорения добиться очень сложно, да и кейс не совсем про реальное время.
С ускорением — хороший пример, спасибо.

А как определить применимость фильтра Калмана к объекту, модель поведения которого неизвестна? С физическими телами — понятно, даже неизвестный для нас объект будет подчиняться физическим законам.

А вот например пользовательский трафик на сайт — нужно сначала подобрать какую-то правдоподобную модель сначала? Есть какие-то методики?
Спасибо за статью. Но у меня все тот же вопрос, что и к другим подобным примерам простых моделей — чем выгоднее фильтр Калмана по сравнению например с фильтром который просто усредняет значение в каком-то окне? Например берет среднее или медиану всех значений попавших в окно? По графикам как будто выглядит, что с подобным шумом такое усреднение справилось бы не хуже?
1
23 ...

Информация

В рейтинге
2 646-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность