Возможно, ответ таков: ваш коллега прав. Возможно, вы неправильно поняли Тьюринга, или как он здесь применяется?
Все машины конечны, поэтому нет «настоящих» машин Тьюринга и программ, которые никогда не остановятся. Тривиальная программа, которая выполняет простой бесконечный цикл, может выполняться 5 минут или 50 лет, но на конечном компьютере она останавливается. Нетривиальная задача, не связанная с остановкой, такая как «точное вычисление числа пи», также будет остановлена, потому что в конечном итоге вычисление превысит способность хранить дополнительные цифры.
Результат Тьюринга не гарантирует ничего особенно полезного на конечных машинах, поэтому ваши поиски в конечном итоге бесплодны. Лучше сосредоточиться на том, сколько времени и денег и оставить математикам бесконечность.
Вы можете подумать, что подобная программа { while true: print "running"; print "halted"; }
является контрпримером, но это не так. Эта программа имеет побочные эффекты, которые могут или не могут привести к ее остановке. Игнорируя побочные эффекты, можно придумать формальное доказательство того, что эта программа не остановится. В этом вопросе мы имеем дело только с программами, которые уклоняются от формального доказательства отсутствия остановки, где вопрос об остановке неразрешим. Это не такая программа.
Это может помочь отличить «сильный» Тьюринг от «слабого» Тьюринга. Сильные машины Тьюринга на самом деле бесконечны и, если они не смогут остановиться, будут работать бесконечно долго. Мы не можем построить их.
Слабые машины Тьюринга имеют конечные ограничения по времени и пространству, и они - единственный вид, который мы можем построить. Мы заинтересованы в программах, которые нельзя доказать в этих пределах. Тьюринг говорит нам, что есть такие программы, но мы не можем их идентифицировать. Если ограничения достаточно малы, мы можем определить их, написав программу и запустив ее до предела.
Суть Тьюринга в том, что ярлыков нет. Единственный способ убедиться в том, что проблема вычислительно выполнима, - это написать программу, запустить ее и выяснить. Имея достаточно времени и денег, вы можете написать все программы, запускать их вечно и со временем и находить те, которые дают результаты (недоумения). Остальные все еще будут бежать. У вашего коллеги достаточно времени и денег, чтобы сделать это?
Если серьезно, то спор идет о пределах. Turing и NP complete говорят нам, что определенные классы проблем не могут быть решены компьютерами в рамках любого заданного бюджета или по любому заданному графику, независимо от того, насколько велик этот бюджет или насколько щедрым может быть этот график. Примеров такого рода проблем предостаточно: взлом криптографических ключей; оптимизация маршрутов для доставки на сотни адресов; упаковка коробок в грузовики; поиск ошибок в больших программах!
Поэтому спросите у своего сотрудника бюджет и график и пообещайте, что вы можете создать проблему, которая не может быть решена в рамках этого бюджета или графика. Это обещание будет очень легко сдержать.