Характеристики вычислимой задачи:
- Полный означает, что он охватывает все случаи;
- Механистический означает, что он точен;
- Детерминированный означает, что при вводе одних и тех же входных данных будут предоставлены одни и те же выходные данные.
Поправьте меня, если я ошибаюсь, я обнаружил это в ходе исследований и не совсем понял, что это на самом деле означает, за исключением детерминированного.
Итак, я пытаюсь доказать простой код, например:
int i = 0;
do{
int j = 0;
do{
printf("Hello\n");
j++;
}while (j < n);
printf("Hello\n");
i++;
}while (i < n);
является вычислимым.
Я знаю, как показать, что это детерминировано, так как это довольно очевидно, но я не знаю, как показать, что это механистично или завершено.
Характеристика Complete, насколько я понимаю, больше похожа на "Есть ли какой-нибудь способ, чтобы код не выполнялся или возвращался как ошибка?" например, при открытии текстового файла есть вероятность, что файл не существует, потому что введено неправильное имя файла или указано неправильное местоположение и т. д.
Но в случае кода фрагмента выше, как я должен доказать, что он завершен?
Что касается Механизма, будет ли 1 + 1 = 2 вместо 3?
То же самое, в случае фрагмента кода выше, как я могу доказать, что он точен, поскольку сам код не решает никаких проблем, он просто печатает привет в соответствии с n значениями? Что в данном случае n ^ 2 + n число привет.
n*(n+1)
раз строку"Hello\n"
(еслиn >= 1
, еслиn == 0
, он печатает"Hello\n"
дважды). Что для вас бессмысленно? - person Luis Colorado   schedule 20.11.2020