Здравствуйте, мыщъх, Вы писали:
М>а что вы думаете?
В ленивом языке бесконечный цикл можно даже и не выполнять, а просто считать выполненным... Серьезно, в Haskell даже есть два обозначения, подходящие под понятие бесконечного цикла. Значение undefined можно использовать в коде, а еще там есть (_|_), и это не шутка
Здравствуйте, мыщъх, Вы писали:
М>насколько я понял, доказательства для общего случая не существует. более того, для частных случаев существуют обратные решения. некоторые бесконечные циклы возможно выполнить за конечное время при наличии бесконечных ресурсов.
М>а что вы думаете?
Из матанализа мы знаем, что некоторые бесконечные циклы люди выполняют за вполне конечное время. Например:
И я думаю, что для таких задач совсем не нужно наличие бесконечных ресурсов. Поэтому очевидно, что хотя бы часть задач по выполнению бесконечных циклов сводится к написанию ИИ.
Но есть и другой подход,
аналоговый. Такой подход, понятное дело, не даст нам выполнить любой бесконечный цикл за конечное время, но может позволить выполнить те циклы, результаты выполнения которых мы хотим знать.
Сначала попробую пояснить на примере. Как известно, нет аналитического способа выбрать случайный элемент из бесконечного множества при соблюдении равновероятностного условия. Однако в аналоговом мире это не совсем так. Возьмём, например,
жидкостный переменный резистор и установим его в произвольное положение. Ток, который пройдёт через этот резистор, будет некой случайной величиной между возможным максимумом и минимумом и, в идеальном мире, таких произвольных положений было бы бесконечно много... Позволяет ли это задачу? И да, и нет, в зависимости от ответа на вопрос "вам шашечки или ехать?".
Этим примером я хотел показать, что с помощью аналоговых компьютеров можно быстро получить ответ с определённой точностью для тех задач, которые на цифровом компьютере могут потребовать вычисления бесконечных циклов.
Следующим шагом в этих рассуждениях следует пристально рассмотреть квантовый компьютер... но в них я не сведущ.
Здравствуйте, мыщъх, Вы писали:
М>некоторые бесконечные циклы возможно выполнить за конечное время при наличии бесконечных ресурсов.
Тут уже приводили листинги программ бесконечных циклов за конечное время, приведу и свою. Она будет работать только при наличии бесконечных ресурсов на выполняющей машине. Подробности в комментариях.
class Program
{
static void Main(string[] args)
{
var index = 1;//думаем, что емкость index может вмещать любое натуральное число
var sum = 1.;//думаем, что емкость sum может вмещать любую десятичную дробь с бесконечной точностью
do //думаем, что одна итерация с арифметическими операциями, без Thread.Sleep ничего не занимает по времени
{
Thread.Sleep(1/index);//думаем, что данная функция может останавливать выполняющий поток (единственный на машине) на любое число секунд (в виде десятичной дроби) с бесконечной точностью
index*=2;
sum += 1.0/index;
} while (sum!=2.);//с таким условием цикл выполнит бесконечное число итераций
//Выйдем из бесконечного цикла за 2 секунды
}
}