Picchio Serpentino, 47 лет
Москва, Россия
Сначала – просто долгая цитата из реальной беседы. Уверен, другой участник не
будет возражать против такого использования его интеллектуальной
собственности.
Собеседник А: Грустная задачка по терверу[1] для первого курса. При выборе
решения А жертв будет N. При выборе решения B жертв с вероятностью 50% будет
меньше, а с вероятностью 50% – больше. Какое из решений следует выбрать?
Собеседник Б: Насколько меньше, насколько больше? Надо посчитать матожидание[2]
числа жертв при решении B, тогда можно будет сравнивать.
Собеседник А: Вот и подсчитай, исходя из условий задачи. Возможно, более
сведущие в ТВ люди меня поправят, но лично мне кажется, что она вполне честно
решаемая.
Собеседник Б: Нет, условий недостаточно. Например, A – 100 жертв. А при B в
50% случаев будет 40 жертв, а ещё в 50 – 110. Ясно, что надо выбирать B. Если
же у B варианты 90 и 300, то надо выбирать A.
Собеседник А: Я понимаю смысл твоих возражений. И я по-прежнему уверен, что
условий достаточно.
Собеседник Б: Я уверен, что нет.
Собеседник А: Подумай о том, что делает эту задачу несимметричной и не даёт
ответить "а пофиг".
Собеседник Б: Несимметричной её делает то, что может быть вариант при решении
B, когда гибнет больше, причём настолько много, что это не приемлемо ни при
каких условиях, поэтому рисковать нельзя и надо выбирать решение A. Но
опять-таки, это зависит от конкретных цифр и условий.
Собеседник А: В целом да. Я бы сказал чуть иначе – несимметричной её делает тот
факт, что жертв не может быть меньше нуля. То есть во втором случае вариант
2N+1 жертв возможен, а вариант -1 жертвы – нет. И теперь представь себе,
что ты увидел эту задачу в учебнике. Ты можешь поднять руку и сказать
преподу[3], что задача некорректна. Или можешь таки решить эту задачу. Исходя
из презумпции (дополнительно подтверждённой), что она корректна.
Собеседник Б: Тогда надо несколько переформулировать задачу и сказать, что
насколько больше или меньше окажется жертв, принципиально не известно, и эти
значения могут оказаться любыми. В этом случае, конечно, надо выбирать A,
т.к. мы имеем известную стоимость против неизвестной и потенциально неприемлемо
большой. Только это уже не тервер, по-моему.
Собеседник А: Я не готов делать это в пол-третьего ночи, но я в целом уверен,
что можно строго расписать примерно следующую цепочку рассуждений: функция
распределения в случае B неизвестна и может быть любой. Очевидно, что могут
быть частные случаи, когда верно одно решение и когда верно другое решение
(примеры). Таким образом, нам нужно выбрать то, которое будет верным чаще при
неизвестной функции распределения. Если не думать о количестве жертв меньше нуля
и рассмотреть задачу чисто аналитически, то для каждой функции распределения
существует симметричная, таким образом матожидание жертв в случае всех
возможных функций распределения будет N. Но количество жертв не может быть
меньше нуля – и это подрезает симметрию и делает матожидание количества жертв во
втором случае явно большим, чем N.
Собеседник Б: В целом да, но, повторюсь, мне не хватило какого-то явного
указания, что отклонения при решении B могут быть любыми, и это является
принципиальным условием. Для меня задача выглядела просто
недосформулированной.
Собеседник А: Как же всё-таки здорово общаться с адекватными людьми. В 99%
тусовок после "задача некорректна" просто навалили бы кучу ругани и всё. А про
«не хватило» – понимаю. Я, как ты понимаешь, придумал эту задачку,
зацепившись за твоё «уже неплохо». А методологически... знаешь, в
школьные времена я очень любил придираться к условиям задач. Чаще всего – задачи
на «найди соответствие», «продолжи последовательность»
и т. п. Находил в них возможность второго решения и гордо кричал «задача
некорректна». А потом до меня однажды дошло. Если весь класс дал ожидаемое
учителем решение задачи и получил свои пятёрки, а я убедился, что
«задача некорректна», не стал её решать и пятёрки не получил – то
дураки в этом случае вовсе не они. И я стал... как бы это сказать...
конструктивнее. Понял, что в первую очередь надо пытаться решить задачу, а не
искать возможность сломать её.
Собеседник Б: Не быть тебе тестировщиком.
Собеседник А: Почему же? Тестировщик ведь тоже решает задачу - а не пытается
доказать, что в этих условиях тестировать невозможно.
Собеседник Б: Тестировщик всегда пытается сломать. Собственно, определение с
какого-то из наших курсов: "Тестирование – это выполнение программы с целью
найти ошибку".
Собеседник А: Верно. Это задача тестировщика. Ломать до тех пор, пока не
перестанет ломаться. И он её решает. А не говорит, что задача некорректна.
Собеседник Б: Ну это смотря как выкрутить терминологию. Можно сказать, что при
использовании программы задача вообще – это добиться от неё какого-то ожидаемого
результата, а не завесить насмерть или заставить вылететь с BUFFER OVERFLOW. А
вот тестировщик её ломает.
Собеседник А: Безусловно. Я сказал об этом именно для того, чтобы напомнить,
что одно и то же можно изложить диаметрально противоположными словами – и будучи
согласными по сути, смотреть в некотором смысле с диаметрально противоположных
позиций. Это характерная проблема в спорах вообще и в недавних дискуссиях здесь
в частности.
Собеседник Б: Согласен.
Собеседник А: Кстати, насчёт некорректных задачек – видел классный пример.
Задача "найди то, что выбивается из общего ряда". Предложены, например, пять
птиц. Из них про одну можно сказать, чем она выбивается: она водоплавающая, а
остальные – нет. И про другую можно сказать, чем она выбивается: она
нелетающая, а остальные – нет. И про третью, и про четвёртую. И только одна
ничем не выбивается и во всём соответствует остальным.
Собеседник Б: Я тоже что-то такое встречал. Нет, я больше люблю задачи вроде
классической про двенадцать монет.
Собеседник А: Понимаю. Просто однажды до меня дошло, что жизнь подкидывает нам
задачки, не спрашивая, какие мы любим, а какие – нет.
А теперь – короткая мораль. Я привёл этот разговор не из-за того, что в нём
написано, а из-за того, как. Если бы люди умели беседовать подобным образом –
среди них было бы несравнимо меньше ругани и несравнимо меньше непонимания. В
этом случае люди с разными взглядами могли бы обсуждать, например, украинские
события – и выносить из этого что-то правильное и ценное, а не одно лишь ведро
говна на голову. Более того, я уверен, что в этом случае не было бы самих
украинских событий, которые и послужили источником для приведённой задачи. Ни
войны. Ни Донбасса. Ни даже майдана. Потому что даже сложные и спорные моменты
были бы рассмотрены с уважением друг к другу и ещё большим уважением к истине,
а не так, как оно случилось и продолжает случаться – с желанием набить другому
морду, потом выстрелить из автомата, а потом – сбросить бомбу побольше. И те,
кто провоцировал эти события ради своих гнусных целей – просто ничего не смогли
бы сделать с миллионами тех, кто разобрался во взаимных претензиях и отказался
стрелять друг в друга.
[1] Теория вероятностей, раздел математики
[2] Математическое ожидание, термин теории вероятностей
[3] Преподавателю
2022-09-28 в 04:36