Pull to refresh
4
0
Viktor Pti @Qbit

Пользователь

Ну ладно, кто-то непонятно зачем закинул это туда

Задача суммирования двух чисел — это абсолютно стандартная задача на платформах с автоматическим тестированием; встречал её неоднократно. Она проверяет не способность реализовать алгоритм, а то, что новичок освоил платформу: запуск тестов, сабмит кода. С этой задачей можно экспериментировать: как поведёт себя платформа, если реализовать функцию заведомо неправильно, или зациклиться, и т.п.

Это веса, которые применяются ко входным аргументам нейронов.

А почему нельзя называть войну войной?

В каких-то контекстах может быть полезно трактовать войну как «спецоперацию» — такой формальный статус позволяет военнослужащим и тем более всяким росгвардейцам обоснованно отказываться ехать в «командировку».

«Проблема в том, что приказов об участии в боевых действиях на заграничной территории не существует, ведь у нас не введено военное положение. Военнослужащих просто ставят перед фактом — едем туда, открываем огонь там...»
https://zona.media/article/2022/04/06/ombudsman

в работах философа Кёртиса Брауна и специалистов по информатике Оскара Бонилла и Калида Азада

Что это за авторы, и какие работы имеются в виду?

Много причин. Но как минимум не хочется раздувать объём за счёт скачивания на клиент натренированной модели.

Но таким образом я сам регулирую игровой процесс.

Подобная логика применима только к однопользовательским играм «для себя».
К соревновательным играм такое оправдание не применимо.

Корневой сертификат — сердце центра сертификации. Он буквально встроен в вашу ОС или браузер, он физически присутствует на вашем устройстве.

Как программно проверить, когда протухнет корневой сертификат на Android-устройстве?

Почему разработчики Microsoft не разделили _entries на четыре массива, соответствующих полям Entry?

Чтобы оптимизировать локальность данных — снизить число кэш-миссов.

Человек, который мыслит рационально, как раз не ведётся на...

Человек, который мыслит рационально, как раз понимает, что он так же подвержен подобным манипуляциям и предубеждениям. Предсказуемая иррациональность. А иллюзия контроля, мол, я начитался Юдковского, Чалдини и Канемана а потому для искажений не уязвим — суть гордыня и проявление иррациональности.

Вот список того, что на 95% заменяет ReSharper

Не забудьте: Microsoft.CodeQuality.Analyzers, Microsoft.NetCore.Analyzers.

Причём Гудини родил т.н. «пушку Алехина» далеко не сразу.
https://www.youtube.com/watch?v=aj-K2o_RNXY

Каждая фигура, как вы правильно сказали, «дает ветвление не только своими ходами, но и тем, что мешает остальным». Т.е. каждая фигура на доске является источником увеличения размера пространства состояния.

Вы, кажется, пропустили фрагмент «мешает остальным». То есть уменьшает пространство поиска. У голого ферзя в центре доски без остальных фигур ходов больше, чем у всех 16 фигур/пешек вместе взятых в начальном положении.


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

Одновременно, потеря каждой фигуры «понемногу» сокращает размер пространства состояния.

В общем случае это не так — фигуры дают вклад в ветвление не только своими ходами, но и тем, что мешают друг друг.


Например, в стартовой позиции число допустимых ходов только увеличится, если выкинуть слонов.

По какому критерию?

Наследник в силах изменить поведение второго метода. А первого — не в силах.

Метод либо объективно полиморфный, либо объективно не полиморфный.

abstract class Pet
{
    public void NonPolymorphicNonVirtual()
    {
        Console.WriteLine("I'm pet");
    }

    public void PolymorphicNonVirtual()
    {
        Console.WriteLine($"{Virtual} {Virtual}");
    }

    protected abstract string Virtual { get; }
}

sealed class Cat : Pet
{
    protected override string Virtual => "Meow";
}

sealed class Dog : Pet
{
    protected override string Virtual => "Bow!";
}

...

{
    Pet pet = new Cat();
    pet.NonPolymorphicNonVirtual(); // I'm pet
    pet.PolymorphicNonVirtual(); // Meow Meow
}
{
    Pet pet = new Dog();
    pet.NonPolymorphicNonVirtual(); // I'm pet
    pet.PolymorphicNonVirtual(); // Bow! Bow!
}
В NonVirtual никакого полиморфизма нетути.

Он полиморфный по поведению, с точки зрения пользователя класса (которому недоступен виртуальный метод NonPublic() напрямую). Он был бы мономорфным, если бы использовал только функционал базового класса и не обращался к виртуальным методам, переопределённым в потомках.

Это если бы я использовал паттерн CRTP. А здесь полиморфизм на основе динамического связывания.

А где именно в вашем примере полиморфизм?

Cat cat = new Cat();
cat.NonVirtual();

Dog dog = new Dog();
dog.NonVirtual();

В обоих случаях вызывается один и тот же невиртуальный метод базового класса Pet.NonVirtual(). Но поведение будет разным, будет напечатано Meow и Bow!


Полиморфизм в методе public void NonVirtual() { NonPublic(); } Его реализация тут состоит из одного вызова, но может кроме этого содержать и какую-то общую для наследников логику. Паттерн Template method.

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

Не совсем точно. Полиморфного поведения можно добиться, даже работая с конкретным классом наследника и невиртуальным API. Конечно, указатели на базовый класс появляются, но неявно. Идею проиллюстрирую на C#. Но на C++ то же самое, называется NVI; может работать просто через стековую переменную наследника, без явных ссылок/указателей.


abstract class Pet
{
    public void NonVirtual() { NonPublic(); }

    protected abstract void NonPublic();
}

sealed class Cat : Pet
{
    protected override void NonPublic() { Console.WriteLine("Meow"); }
}

sealed class Dog : Pet
{
    protected override void NonPublic() { Console.WriteLine("Bow!"); }
}

...

Cat cat = new Cat();
cat.NonVirtual();

Согласно определению Юдковского рациональное мышление — это мышление по Байесу. То есть корректная переоценка уверенности в гипотезе (hypothesis, H) по мере появления новых свидетельств (evidences, E). Предлагаю сообществу решить задачку на рациональное мышление, кому не лень (это же не собеседование).


Задачка не на память, поэтому в формулировке напомню все нужные арифметичекие формулы, и даже посчитаю часть решения.


Предположим, на данный момент из всех соискателей на данную вакансию нам подходит только каждый пятый. То есть из опыта известно, что из 1000 человек нам подошли бы 200, а 800 не подошли. Это значит, что до начала собеседования наша уверенность в том, что соискатель нам НЕ подходит — сразу 80%. Мы задаём им вопросы-фильтры, по их результатам обновляем эту нашу уверенность и принимаем решение — нанимать ли соискателя.


Возможны четыре варианта: 1) наймём подходящего, 2) не наймём неподходящего, 3) не наймём подходящего, 4) наймём не подходящего. Первые два варианта ок. Третий вариант — ошибка второго рода, ложноотрицательное срабатывания теста — не очень страшен, остаётся ещё 199 подходящих соискателей из исходной тысячи. Четвёртый вариант — ошибка первого рода, ложноположительное срабатывание теста — очень страшен, неподходящих людей тяжело увольнять юридически и организационно; они очень затратны. Наша цель — настроить тест так, чтобы максимально избегать ложноположительных срабатываний пусть даже ценой увеличения ложноотрицательных срабатываний.


В терминах Байеса, наше свидетельство — это ответ соискателя на простой вопрос про virtual. Из опыта нам могут быть известны какие-то распределения. Что, например, даже среди людей, которые нам не подходят, 60% всё-таки осилят вопрос про virtual (480 из 800); а 40% даже этого не смогут (320 из 800). А вот среди людей, которые нам подошли бы, 95% уверенно рассказали бы про эту базовую вещь (190 из 200); а 5% замешкались, растерялись и не нашлись — хоть и толковые (10 из 200).


Вопрос: как нам посчитать P(H|E) — то есть переоценить априорную убеждённость P(H) = 20% в том, что соискатель подходит, в свете поступившего свидетельства E, что про virtual он не ответил? Ожидание того, что толковый человек не ответил бы на простой вопрос мы оцениваем как P(E|H) = 5%. И что бестолковый человек не ответил бы тоже не очень высоко (вопрос-то всё-таки простой) как P(E|¬H) = 40%.


Формула Байеса: P(H|E) = P(E|H) × P(H) / P(E)
Формула полной вероятности: P(E) = P(E|H) × P(H) + P(E|¬H) × P(¬H)


Последняя формула нужна, потому что на практике редко известна P(E) в сыром виде для подстановки в первую формулу, но часто оценивается по кускам.


У меня получился ответ ≈3%, то есть априорную убеждённость P(H) = 20% мы должны понизить до апостериорной P(H|E) ≈ 3%. Кто-то может перепроверить арифметику?

Information

Rating
Does not participate
Registered
Activity