Диспуты

Сначала – просто долгая цитата из реальной беседы. Уверен, другой участник не будет возражать против такого использования его интеллектуальной собственности. Если цитата для Вас слишком долгая – дочитайте до слов "переформулировать задачу" и перепрыгивайте на последний абзац.

Собеседник А: Грустная задачка по терверу[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] Преподавателю

(c) Softwarer,
сентябрь 2022


Рецензии