OberonCore
https://forum.oberoncore.ru/

Эмуляция недетерминированного цикла Дейкстры
https://forum.oberoncore.ru/viewtopic.php?f=115&t=6243
Страница 2 из 2

Автор:  Comdiv [ Пятница, 08 Июнь, 2018 11:48 ]
Заголовок сообщения:  Re: Эмуляция недетерминированного цикла Дейкстры

Цитата:
Сейчас подумал про то, что процедуры Condition1, Command1, Condition2, Command2, Condition3, Command3 было бы хорошо сделать вложенными в процедуру Test. НО
Согласен. Тоже думал о том, что ограничение на использование локальных переменных открыло простую возможность использовать вложенные подпрограммы по указателям.

Автор:  Valery Solovey [ Пятница, 29 Июнь, 2018 00:37 ]
Заголовок сообщения:  Re: Эмуляция недетерминированного цикла Дейкстры

Rifat писал(а):
Valery Solovey писал(а):
И вообще, цикл Дейкстры не про случайность выбора веток цикла, а про декларативность.

Дейкстра бы с этим поспорил :)

Может, он бы и поспорил, но приведённый отрывок из книги не противоречит тому, что я сказал, и не подтверждает то, что сказали Вы.

Автор:  Rifat [ Пятница, 29 Июнь, 2018 10:53 ]
Заголовок сообщения:  Re: Эмуляция недетерминированного цикла Дейкстры

Может мы по-разному понимаем слово "декларативность". Но я считаю, что дело не только в декларативности, а случайность, то есть недетерминированность играет очень важную роль. Например, на двух процессорах одновременно запускаются две одинаковые задачи. Какая из них раньше закончится, это не известно, на это может влиять много факторов: есть данные в кэше или нет, все данные всегда правильно считываются или когда-то произошла ошибка четности, которую процессор автоматически исправлял. То есть хотя задачи и одинаковые, но результат может быть недетерминирован. Также если, допустим, два процессора одновременно начинают работать, один должен x := 1, а другой x := 2, то какой будет в конце результат не определено, то есть недетерминировано, может быть 1 или 2.

Настоящий недетерминированный цикл Дейкстры должен выдать ответ 1 или 2. А детерминированный цикл Дейкстры, который реализован в Oberon-07, всегда будет выдавать 1.
Код:
{TRUE}
p := TRUE;
WHILE p DO
  x := 1;
  p := FALSE;
ELSIF p DO
  x := 2;
  p := FALSE;
END;
{ (x = 1) OR (x = 2) }

Автор:  Comdiv [ Пятница, 29 Июнь, 2018 11:21 ]
Заголовок сообщения:  Re: Эмуляция недетерминированного цикла Дейкстры

В настоящем цикле Дейкстры - это некорректный цикл. По крайней мере, он задумывался для возможности прийти к правильному решению разными путями, а не созданию разных решений, в зависимости от непонятно чего. Также, Дейкстра упоминал об альтернативах, как возможности выбора для более эффективного решения для машины. То есть, недетерминированность может существовать в описании, но остутствовать в конечной результате. Недетерминированность из-за этого не исчезает.

Автор:  Rifat [ Пятница, 29 Июнь, 2018 12:29 ]
Заголовок сообщения:  Re: Эмуляция недетерминированного цикла Дейкстры

Comdiv писал(а):
В настоящем цикле Дейкстры - это некорректный цикл. По крайней мере, он задумывался для возможности прийти к правильному решению разными путями, а не созданию разных решений, в зависимости от непонятно чего.

Так это не разные решения :) Может быть, действительно, нужно чтобы x было 1 или 2 и не важно какое именно значение.

Автор:  Valery Solovey [ Суббота, 30 Июнь, 2018 01:13 ]
Заголовок сообщения:  Re: Эмуляция недетерминированного цикла Дейкстры

Вы правильно заметили, что недетерминированность - это неопределённость. Но почему Вы решили, что неопределённость - это случайность - не понятно.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/