Меня часто спрашивают, чем занимается теоретический компьютерщик. Было бы здорово получить хорошие ответы на этот вопрос. Я склонен прибегать к техническому жаргону, и в этот момент глаза людей обычно застекляются.
Что делает теоретический компьютерный ученый в терминах, которые могут понять люди, которые не являются компьютерными учеными?
Хороший ответ должен быть быстрым, точным по духу, не звучать расплывчато или банально. Для получения бонусных баллов ответ должен указывать на то, почему теоретик-компьютерщик не является ни математиком, ни практиком в области ИТ.
Этот вопрос вдохновлен вопросом МО https://mathoverflow.net/questions/3559/colloquial-catchy-statements-encoding-serious-matmatics, хотя цель иная.
источник
Я даю людям конкретный пример. В частности, я часто мотивирую теорию сложности одной и той же очень иллюстративной (но простой) проблемой. Я спрашиваю аудиторию о том, как они будут инструктировать маленького ребенка, чтобы выяснить, есть ли его имя в отсортированном по алфавиту списке имен (и сказать им, что ребенку требуется 3 секунды, чтобы сравнить одно имя с другим). Часто бывает, что человек / группа придумают наивный, линейный подход. Я заставляю разговор перейти к логарифмическому алгоритму (я мог бы использовать слово, отличное от логарифма), либо попросив человека о чем-то лучше, либо упомянув его сам. Я показываю им, что удвоение размера списка только добавляет три секунды работы для ребенка с этим новым подходом. И я сравниваю это непосредственно с линейной версией, которая теперь покажется совершенно глупой.
Конечно, я возвращаю это на землю. Я говорю им, что рассматриваемый ребенок - это, как правило, компьютер, но это может быть ребенок или кто-то вообще. То, что вопросы, которые мы задаем, на самом деле не о компьютерах, а о количестве места, времени и информации, необходимых для решения проблем. И я мотивирую анализ сложности по аналогии с двумя разными методами решения одной и той же проблемы.
Когда я привлек их внимание - я выявляю сильных нападающих. Я спрашиваю их: «Можете ли вы доказать, что логарифмическое решение - лучшее, на что вы можете надеяться, или вы можете найти что-то лучшее?» и я спрашиваю их: «Есть ли проблемы, которые ни один процесс (алгоритм) не может решить?» Я был удивлен тем, как люди пытаются решить эти вопросы, когда у них нет опыта в TCS.
источник
Мне нравится этот пост Скотта Ааронсона , который объясняет теорию сложности как количественную теологию. Вот выдержка:
источник
Пример ответа, который определенно можно улучшить:
источник
Я думаю, что Дейкстра дал отличный (не) ответ на этот вопрос (всегда хороший источник для грубых и абсолютистских заявлений :)).
источник
Мне действительно нравится введение в проблему Разделения, данное Брайаном Хейсом, данное здесь .
Он использует проблему разделения набора детей на команды с одинаковыми общими способностями (при условии, что вы можете количественно оценить способности каждого ребенка, используя число), а также объясняет жадный алгоритм, обычно используемый детьми для решения этой проблемы.
Это очень простая для понимания проблема, легко понять алгоритм, удивительно, что он (скорее всего) очень сложен в целом, и смущает, что мы все еще не можем доказать последний бит.
источник
Я обычно отвечаю чем-то вроде: я пытаюсь понять, что можно сделать с компьютером. Это не совсем точно, но довольно близко, и обычно люди спрашивают что-то вроде «Что вы имеете в виду?» и я могу сослаться на что-то конкретное, например, TSP. Хотя я перефразирую коммивояжера как, скажем, проблему скачкообразной перестройки, проблему агента по недвижимости, проблему «слишком много поручений, не хватает времени» или что-то, что кажется подходящим.
Например: «Ну, скажем, вам нужно купить обувь, продукты и одежду, подобрать торт, сделать стрижку и выполнить некоторые другие поручения перед обедом. Было бы здорово, если бы вы могли положить все эти вещи в ваш GPS, и он может сказать вам, какой заказ выполнить все ваши поручения, которые должны быть выполнены к 4 часам. Но если список поручений достаточно длинный, прямо сейчас, даже невозможно выяснить, если вы может заставить их сделать на 4 вообще , гораздо меньше , чем заказ вы должны сделать их в любом разумном количестве времени. Я хочу знать , если это возможно , чтобы решить эту проблему быстро с компьютером «.
источник
Каковы наилучшие способы решения проблем, и какие проблемы слишком трудно решить? Есть слово на европейских языках - включая английский! - «информатика». Наука информации. В США мы называем это теоретической информатикой из-за сильной компьютерной индустрии, но думаем о решении проблем без компьютеров на минуту. Рассмотрим человеческое тело. Это решает проблемы почти чудесным образом. Свет приходит в наши глаза, и мы можем видеть , что мы распознаем . Звук приходит в наши уши, и мы слышим слова, которые понимаем . Это информационные проблемы, которые мы легко решаем тысячи раз в день, с которыми все еще борются лучшие компьютеры в мире.
Процесс эволюции занял миллионы лет, чтобы решить эти проблемы, используя стратегию проб и ошибок, и убить несчастных. Представьте, чего мы могли бы достичь, если бы мы выбрали более рациональный подход и вложили столько человеческих творческих способностей в эту новую науку решения проблем, сколько мы вложили в геометрию, теологию или исчисление. То, что я делаю, является одной маленькой частью этих инвестиций.
В ответ на вопрос непрофессионала: «Что вы делаете?» Я часто отвечал: «Я провожу много времени, глядя в космос, выясняя, как сделать научную фантастику реальной». Затем я привожу конкретный пример проекта, объясненный в паре предложений.
источник
Теоретическая информатика для информатики - то же, что математика для физики.
источник
Я обычно даю следующий ответ, хотя и сосредоточенный на теории сложности: «Я изучаю границы в терминах пространства и времени для решения проблемы. Проблемы включают в себя поиск кратчайшего пути на карте или выигрыш в шахматы».
источник
Обычно я даю проблему факторинга в качестве примера; Сначала я спрашиваю число, которое делит 15; обычно люди могут ответить на 3, 5, и им интересно узнать, являются ли 1 и 15 правильным ответом. Затем я даю огромное число (более 10 цифр) и спрашиваю, могут ли они сказать мне, какие делители; и я объясняю, что даже для программиста это действительно сложный вопрос.
Затем, если у меня есть время, я пытаюсь объяснить, что вопрос состоит в том, чтобы либо выяснить, как решить эту проблему, либо доказать, что это всегда будет занимать много времени (понятие, которое мы точно знаем, как определить). И затем небольшое слово криптографии, чтобы объяснить, почему она используется, и слово о том, сколько времени понадобится команде ученых, чтобы взломать ключ числа с сотнями цифр (я избегаю говорить о битах, потому что люди, кажется, лучше знают что за цифра)
источник
Поставленный вопрос действительно сложный, так как большинство людей понятия не имеют, что вообще делают ученые. Это очень отличается от других дисциплин.
Мне нравится использовать следующую аналогию: (T) CS - для компьютеров, что физика для CD-плееров (т.е. лазера). Это на самом деле работает довольно хорошо, потому что большинство людей имеют представление о том, с чем физик имеет дело, правильно это или нет.
Более конкретные примеры включают те вещи, к которым может относиться большинство людей
Затем я бы объяснил, что, в то время как люди из PCS следят за быстрой реализацией или хорошей интеграцией в сложные системы, люди из TCS задаются вопросом о том, что возможно, и доказывают, что обеспечивает безопасные, многократно используемые знания / методы для использования PCS.
Вы также можете использовать разочарование людей по поводу компьютеров («Он не делает то, что я хочу!»). Вы можете указать, что (T) CS имеет дело с тем, как выразить вещи так, как компьютеры могут понимать и эффективно обрабатывать (ссылаясь на синтаксис, семантику, структуры данных, алгоритмы).
источник
Когда кто-то задает вам вопрос, вы можете либо ответить на него напрямую, либо вы можете дать ему пошаговую процедуру, которую следует выполнить, и доказательство того, что если шаги будут выполнены точно, то ответ будет получен в течение разумного периода времени. Учитывая, что сами шаги не слишком сложны и могут быть быстро выполнены субъектом, способным существовать в этой вселенной, какие виды вопросов демонстрируют такие процедуры? Я думаю, что это предмет теоретической информатики.
источник
Мой обычный ответ, который не является быстрым, но гарантированно остановит разговор (бонус!): «Как квантовая теория - математическое ядро физики, TCS - математическое ядро информатики».
источник
Мы изучаем границы вычислений. Как быстро вы можете решить определенную вычислительную проблему? Сколько времени требуется для ее решения, независимо от того, какое решение вы пытаетесь? Затем я привожу им эти примеры (которые легко объяснить большинству непрофессионалов - и, действительно, многие непрофессионалы имеют с ними непосредственный опыт - демонстрируют некоторые свойства NP-полных задач и фактически имеют отношение к спасению жизней).
Очевидно, что люди (в том числе и я) могут заметить, что я игнорировал другие важные ресурсы, такие как пространство, случайность или даже квантовость. Но когда у вас есть всего 2 минуты, чтобы рассказать кому-то о целой области, некоторые вещи не учитываются.
источник
Если вы хотите загадочно взглянуть в прошлое, напомните своей аудитории, что «компьютер» использовался для обозначения человека, чья профессия заключалась в том, чтобы вычислять вещи . (И если вы хотите нарушить некоторые гендерные стереотипы, которые у них могут быть, вы можете указать, что это также были и женщины).
Затем вы можете достичь нескольких вещей одновременно:
источник
Я всегда начинаю с того, что нацеливаю их на какое-то творческое, намеренно неуважительное видео или статью, объясняющую техническую концепцию на интуитивном уровне. Вот хороший пример: рисование в математике: спирали, Фибоначчи и быть растением
Как только они понимают концепцию (и, надеюсь, немного повеселились с ней), я пытаюсь обобщить то, что они узнали о TCS. Например, приведенное выше видео может привести к базовому объяснению алгоритмов или вычислений как рекурсивного процесса - «нечто, генерирующее сложную структуру из нескольких простых правил». Люди из TCS просто изучают, какие типы правил создают какие типы структур!
Оттуда, как правило, достаточно легко перейти от общего TCS к тому, что вы делаете для конкретного домена. :)
источник
Следуя предложенному Россом Снайдером предложению начать с конкретного примера, можно также прямо объяснить вопрос «P против NP». Можно описать этот вопрос для непрофессионала как выясняющего, легче ли проверить решение, чем на самом деле, чем найти его, или это правда, что всякий раз, когда мы можем проверить решение, мы тоже можем его найти?
источник
Вот мой:
Это приводит к разговорам о вычислениях в биологии, роли логики в информатике и т. Д.
источник
Может быть, можно сказать, что
Ученый не будет использовать компьютер, будучи креативным, а скорее думает, набрасывает формулы и изворотливые рисунки на бумаге, а иногда и бродит вокруг. Таким образом, непосредственная выполнимость не самая важная вещь, это больше похоже на художника, исследующего и пытающегося понять тайны этого мира.
Затем можно упомянуть вещи, которые опираются на некоторые изящные решения теоретиков, такие как компьютер, интернет, поисковые системы, безопасные банковские операции, 3D-фильмы, секвенирование ДНК и т. Д. Но следует всегда подчеркивать, что никто еще не знает приложений сегодняшних исследований, некоторые из них могут впервые появиться через несколько десятилетий.
По моему опыту, у многих людей наступает момент АНА, когда они понимают, что информатика и теория в особенности настолько богаты интересными вопросами и проблемами для изучения. Многие из которых можно описать на высоком уровне! Это список из проф. Википедии (через SIGACT), выберите ваши любимые: алгоритмы, структуры данных, теория сложности вычислений, распределенные вычисления, параллельные вычисления, СБИС, машинное обучение, вычислительная биология, вычислительная геометрия, теория информации, криптография, квантовые вычисления вычислительная теория чисел и алгебра, семантика и верификация программ, теория автоматов и исследование случайности.
источник
Почти так же, как ремонтник видеомагнитофона. Оба рассматривают, как добиться максимальной производительности от машин, которые читают и записывают информацию на чрезвычайно длинные куски ленты.
Это может быть немного больше языка в щеке, чем вы были после ...
источник